示例:Ubuntu 镜像¶
本示例安装 Ubuntu 18.04 (Bionic Beaver) 镜像。要为不同版本的 Ubuntu 创建镜像,请遵循以下步骤,并注意相应的差异。
下载 Ubuntu 安装 ISO¶
由于目标是创建尽可能小的基础镜像,本示例使用网络安装 ISO。Ubuntu 64 位 18.04 网络安装 ISO 位于 Ubuntu 下载页面。
启动安装过程¶
使用 virt-manager 或 virt-install(如前一节所述)启动安装过程。如果您使用 virt-install,请不要忘记将您的 VNC 客户端连接到虚拟机。
假设您的虚拟机镜像名称为 ubuntu-18.04,您需要在使用 virsh 命令操作镜像状态时知道它。
如果您正在使用 virt-manager,命令应如下所示
# wget -O /var/lib/libvirt/boot/bionic-mini.iso \
http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/mini.iso
# chown libvirt-qemu:kvm /var/lib/libvirt/boot/bionic-mini.iso
# qemu-img create -f qcow2 /var/lib/libvirt/images/bionic.qcow2 10G
# chown libvirt-qemu:kvm /var/lib/libvirt/images/bionic.qcow2
# virt-install --virt-type kvm --name bionic --ram 1024 \
--cdrom=/var/lib/libvirt/boot/bionic-mini.iso \
--disk /var/lib/libvirt/images/bionic.qcow2,bus=virtio,size=10,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=ubuntu18.04
完成安装¶
在初始安装程序启动菜单中,选择 安装 选项。按照安装提示操作,默认设置即可。
主机名¶
安装程序可能会要求您选择主机名。默认值 (ubuntu) 即可。稍后我们将安装 cloud-init 包,它将在使用此镜像配置新实例时在启动时设置主机名。
选择镜像¶
安装程序建议的默认镜像即可。
完成安装¶
完成安装,使用默认选项。当提示输入用户名时,默认值 (ubuntu) 即可。
分区磁盘¶
有不同的磁盘分区选项。默认安装将使用 LVM 分区,并创建三个分区 (/boot、/、swap),这将有效。或者,您也可以创建一个单独的 ext4 分区,挂载到“/”,这也应该有效。
如果不确定,我们建议您使用安装程序的默认分区方案,因为一种方案没有明显优于另一种方案。
自动更新¶
Ubuntu 安装程序会询问您希望如何管理系统上的升级。此选项取决于您的具体用例。如果您的虚拟机实例将连接到 Internet,我们建议选择“自动安装安全更新”。
软件选择:OpenSSH 服务器¶
选择 OpenSSH 服务器,以便您能够在 OpenStack 云中启动时通过 SSH 访问虚拟机。
安装 GRUB 引导加载程序¶
当被问及是否将 GRUB 引导加载程序安装到主引导记录时,选择 是。
有关配置 Grub 的更多信息,请参阅名为“确保镜像将引导日志写入控制台”的部分。
登录到新创建的镜像¶
首次安装后启动时,它可能会询问您有关身份验证工具,您可以选择 退出。然后,使用您指定的密码以管理员身份登录。
安装 cloud-init¶
在实例启动时,cloud-init 脚本将启动,并搜索元数据提供程序以获取公钥。公钥将被放置在镜像的默认用户帐户中。
安装 cloud-init 包
# apt install cloud-init
在构建 Ubuntu 镜像时,cloud-init 必须显式配置为用于正在使用的元数据源。OpenStack 元数据服务器模拟了 Amazon EC2 中使用的 EC2 元数据服务。
要将图像使用的元数据源设置为,请针对 cloud-init 包运行 dpkg-reconfigure 命令。当提示时,选择 EC2 数据源
# dpkg-reconfigure cloud-init
帐户因发行版而异。在基于 Ubuntu 的虚拟机上,该帐户称为 ubuntu。在基于 Fedora 的虚拟机上,该帐户称为 ec2-user。
您可以通过编辑 /etc/cloud/cloud.cfg 文件并添加一个包含不同用户的行来更改 cloud-init 使用的帐户名称。例如,要配置 cloud-init 将密钥放入名为 admin 的帐户中,请在配置文件中使用以下语法
users:
- name: admin
(...)
关闭实例¶
从实例内部,以 root 身份
# /sbin/shutdown -h now
清理 (删除 MAC 地址详情)¶
操作系统在安装过程中会将虚拟以太网卡的 MAC 地址记录在诸如 /etc/udev/rules.d/70-persistent-net.rules 之处。但是,每次镜像启动时,虚拟以太网卡都会有不同的 MAC 地址,因此必须从配置文件中删除此信息。
有一个名为 virt-sysprep 的实用程序,可以执行各种清理任务,例如删除 MAC 地址引用。它将就地清理虚拟机镜像
# virt-sysprep -d bionic
取消定义 libvirt 域¶
现在镜像已准备好上传到镜像服务,您不再需要让 libvirt 管理此虚拟机镜像。使用 virsh undefine vm-image 命令通知 libvirt
# virsh undefine bionic
镜像完成¶
使用 qemu-img create 命令创建的基础镜像文件,例如 /var/lib/libvirt/images/bionic.qcow2,现在可以使用 openstack image create 命令上传到镜像服务。有关更多信息,请参阅 Glance 用户指南。