1 从 HelloWorld 开始

1.1 环境依赖

确保宿主机已经具备以下条件:

<aside> 💡

为了确保 cloud-init 的 “一次性配置“ 在vm镜像初次被生产环境启动时能够重新加载,可以在制作镜像期间清除 cloud-init 缓存:*cloud-init clean --logs 。参考:*First boot determination - cloud-init 24.3.1 documentation

</aside>

1.2 准备 vm 镜像

准备一台宿主机,创建工作目录,例如:/home/cloud-init ,将虚拟机镜像传入该目录。

1.3 制作数据源 cdrom

cloud-init 配置文件需要的数据源可以通过挂载iso来提供。

  1. 首先在宿主机上编辑好配置文件。

    #cloud-config
    users:
      name: root
    chpasswd:
      list: |
        root:123456
      expire: False
    ssh_pwauth: True
    
    instance-id: citest
    local-hostname: citest-1
    
  2. 生成 iso:genisoimage -output ci.iso -volid cidata -joliet -rock user-data meta-data

此时目录结构如下:

cloud-init
├── ci.iso
├── jammy-server-cloudimg-amd64.img # 事先准备好的虚拟机镜像
├── meta-data
└── user-data

1.4 虚拟机挂载 iso

$ 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

1.5 启动虚拟机

  1. virsh start ci-test-vm 启动vm
  2. virsh console ci-test-vm 连接vm
  3. 登入,查看密码是否为123456