如何在OpenStack上创建CentOS 8 KVM镜像模板

时间:2020-02-23 14:38:24  来源:igfitidea点击:

本指南将讨论创建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实例。