基于 cloud-init 23.4 官方文档:https://cloudinit.readthedocs.io/en/23.4/index.html
确保宿主机已经具备以下条件:
<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 并设置开机自启动(systemctl enable cloud-init.service)
cloud-init 配置文件需要的数据源可以通过挂载iso来提供。
首先在宿主机上编辑好配置文件。
user-data#cloud-config
users:
name: root
chpasswd:
list: |
root:123456
expire: False
ssh_pwauth: True
meta-datainstance-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