如何在OpenStack上创建CentOS 8 KVM镜像模板
本指南将讨论创建CentOS 8实例时如何创建可在OpenStack上使用的CentOS 8 KVM镜像。 CentOS 8于2019年9月24日发布,人们开始采用它来运行生产工作负载。 OpenStack是许多人使用的主要虚拟化/云环境之一。
下载CentOS 8 ISO镜像
将CentOS 8 ISO镜像下载到工作站。
wget http://isoredirect.centos.org/centos/8/isos/x86_64/CentOS-8-x86_64-1905-dvd1.iso
将CentOS 8 ISO镜像上传到OpenStack。
openstack image create CentOS8-ISO \ --file CentOS-8-x86_64-1905-dvd1.iso \ --disk-format iso --container-format bare
确认从Glance上传图像。
$openstack image list +--------------------------------------+---------------+--------+ | ID | Name | Status | +--------------------------------------+---------------+--------+ | b8d75f31-fb6b-428b-8b83-f3904b0bd114 | CentOS-7 | active | | 685d52c7-ad42-45e6-9419-a9971dcad9c1 | CentOS8-ISO | active | | fbcf16a0-c7cc-42c1-b836-a39bc34c9666 | Cirros | active | | d900bcad-047a-4d01-bcbc-42426bb4315d | CoreOS | active | | f0ac705b-ee73-4de8-95f7-4e06569f0f5c | Debian-10 | active | | 01e6f07b-ca99-439d-9cd0-ab28c2573abf | Fedora-30 | active | | 1953e548-779c-4fe5-86c1-854d71f35d14 | FreeBSD12 | active | | 7bd462ad-cc11-4d89-8b85-9aab0cfe114b | Ubuntu-18 | active | | 86e42aae-d959-4b79-b9a4-b899d85ba303 | fed31 | active | | 3a56d733-de76-490a-9dac-1419219b5803 | manageiq | active | | 47b5b6ed-5599-420a-a602-35d964e86de5 | rhcos | active | | 6b3dc49b-a53f-4cfc-98e0-9eb6925219de | rhel-7 | active | | 965cb833-b97e-4488-9bc6-84495b9a9b7b | rhel-8 | active | +--------------------------------------+---------------+--------+
从ISO启动CentOS 8实例
登录到OpenStack Horizon仪表板。
导航到"项目">"计算">"实例"。
单击启动实例。在详细信息部分下给虚拟机命名和描述。
在来源下,选择镜像作为启动源,创建20GB的卷,然后选择之前上传的CentOS 8 ISO镜像。
选择要在下一页中使用的风味。虐待使用m1.small风味,它具有20GB的磁盘空间,1vcpu和2GB的RAM。有关更多详细信息,请参见如何创建OpenStack风味。
选择用于创建VM的网络。
选择要分配的安全组和其他可选参数,然后启动实例。
等待实例进入活动状态。
创建Cinder卷
VM处于活动状态后,请按照我们的指南如何创建OpenStack Cinder卷并添加到VM实例来创建和添加卷,然后创建卷并添加到实例。这是将安装OS的位置。
开始安装CentOS 8
添加卷后,单击实例,然后单击"控制台"选项卡
遵循以下内容中的标准CentOS安装:
使用屏幕截图逐步安装CentOS 8
但是在软件选择上,选择服务器。
选择为操作系统安装添加的第二个磁盘。
一旦确认所有设置都可以,就开始安装CentOS8. 设置root密码。
(可选)创建管理员用户,尽管稍后将使用cloud-init创建用户。
完成CentOS 8配置。
安装完成后,重新引导系统。
服务器尝试再次从ISO镜像引导。按任意键停止倒计时。
终止CentOS 8构建实例
现在,我们可以终止在"项目">"计算">"实例"下创建的实例
选择CentOS8-build,然后点击Delete Instances按钮。确认删除。
将音量转换为Qcow2图像
将带有CentOS 8安装的卷上传到Glance Image。这是通过导航到"项目">"计算">"卷"来完成的。选择音量,然后单击"上传到图像"
给它起一个名字,然后选择" QCOW2磁盘格式"。
在"项目">"计算">"图像"下确认图像是否已成功上传
选择图像并更新元数据,如下所示:
hypervisor_type: kvm auto_disk_config: true hw_qemu_guest_agent: true
要更新图像元数据,请在自定义框中输入元数据名称,然后单击+按钮,然后在右侧框中提供值。
完成后保存设置。我们现在可以在Project> Volumes> CentOS8-Template> Delete上删除Volume
步骤9:从新镜像创建实例
从我们刚刚上传到Glance的图像创建实例。单击项目>计算>实例>启动实例。
给该实例命名为centOS8-build,使用m1.smallflavor(一个带有20GB磁盘),然后选择"从镜像启动"和" CentOS8-Template镜像"。
启动实例并等待其进入活动状态。使用安装过程中使用的root密码以root用户身份SSH到新实例,或者使用OpenStack控制台访问该实例。
$ssh theitroad@localhost The authenticity of host '10.10.1.71 (10.10.1.71)' can't be established. ECDSA key fingerprint is SHA256:9OOv/wC5aB5XownQPr4udNtiKvouvzr8UQoDcj6wdfE. ECDSA key fingerprint is MD5:b6:32:c7:59:fd:25:48:07:11:f5:fb:cf:7e:cb:25:45. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.10.1.71' (ECDSA) to the list of known hosts. theitroad@localhost's password: Activate the web console with: systemctl enable --now cockpit.socket Last login: Sat Oct 26 21:44:14 2019 from 10.10.1.186 [theitroad@localhost ~]#
准备要用作OpenStack模板的实例。
更新系统
sudo yum -y update
安装cloud-init,qemu guest agent,vim,bash-completion,cloud-utils-growpart。
sudo yum -y install vim bash-completion cloud-init qemu-guest-agent cloud-utils-growpart
启动并启用qemu-guest-agent服务:
sudo systemctl enable --now qemu-guest-agent.service
禁用zeroconf路由
为了使实例访问元数据服务,必须禁用默认的zeroconf路由:
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
启用内核控制台日志记录:
打开文件/etc/sysconfig/grub
sudo vim /etc/sysconfig/grub
删除" rhgb quiet",然后在选项中添加" console = tty0 console = ttyS0,115200n8"。我的看起来像下面。
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap console=tty0 console=ttyS0,115200n8"
运行以下命令以保存更改:
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... done
更新cloud-init配置文件
我们可以通过编辑/etc/cloud/cloud.cfg
文件并添加与其他用户的一行来更改`cloud-init'使用的帐户名称。
sudo vim /etc/cloud/cloud.cfg
创建的默认用户是cloud-user:
system_info: default_user: name: cloud-user lock_passwd: true gecos: Cloud User groups: [wheel, adm, systemd-journal] sudo: ["ALL=(ALL) NOPASSWD:ALL"] shell: /bin/bash distro: rhel paths: cloud_dir: /var/lib/cloud templates_dir: /etc/cloud/templates ssh_svcname: sshd
根帐户已禁用,要启用,请设置该行(不推荐)
disable_root: 0
完成后,删除静态网络配置文件:
rm /etc/sysconfig/network-scripts/ifcfg-ens3
然后清除root用户的bash历史记录。
rm /root/.bash_history; history -c
0:创建最终的CentOS 8镜像
导航到"计算">"实例">" centos8-build">"创建快照"按钮。
给它起一个名字,然后创建快照。
现在,我们可以删除之前创建的centos8-build实例和centos8-template镜像。使用创建的镜像在OpenStack上启动CentOS 8实例。