确保宿主机已经具备以下条件:
<aside> 💡
为了确保 cloud-init 的 “一次性配置“ 在vm镜像初次被生产环境启动时能够重新加载,可以在制作镜像期间清除 cloud-init 缓存:*cloud-init clean --logs
。参考:*First boot determination - cloud-init 24.3.1 documentation
</aside>
准备一台宿主机,创建工作目录,例如:/home/cloud-init
,将虚拟机镜像传入该目录。
cloud-init 配置文件需要的数据源可以通过挂载iso来提供。
首先在宿主机上编辑好配置文件。
user-data
#cloud-config
users:
name: root
chpasswd:
list: |
root:123456
expire: False
ssh_pwauth: True
meta-data
instance-id: citest
local-hostname: citest-1
生成 iso:genisoimage -output ci.iso -volid cidata -joliet -rock user-data meta-data
cidata
此时目录结构如下:
cloud-init
├── ci.iso
├── jammy-server-cloudimg-amd64.img # 事先准备好的虚拟机镜像
├── meta-data
└── user-data
$ virt-install \\
--memory 32768 \\
--vcpus 32 \\
--name ci-test-vm \\
--disk /home/cloud-init/jammy-server-cloudimg-amd64.img,device=disk,bus=virtio,format=qcow2 \\
--disk /home/cloud-init/ci.iso,device=cdrom \\
--os-type centos7.0 \\
--virt-type kvm \\
--import
virsh start ci-test-vm
启动vmvirsh console ci-test-vm
连接vm