第 4 章 配置 cloud-init
通过使用 cloud-init,可以执行各种配置任务。
您的 cloud-init 配置可能需要在 cloud.cfg 文件和 cloud.cfg.d 目录中添加指令。或者,您的具体数据源可能需要您在文件中添加指令,如用户数据文件和元数据文件。数据源可能需要将您的指令上传到 HTTP 服务器。检查您的数据源要求并相应地添加指令。
4.1. 为 NoCloud 数据源创建包含 cloud-init 的虚拟机 复制链接链接已复制到粘贴板!
要创建一个包含 cloud-init 的新虚拟机(VM),请创建一个 meta-data 文件和 user-data 文件。
-
meta-data文件包含实例详情。 -
user-data文件包含创建用户和授予访问权限的信息。
将这些文件包含在新 ISO 镜像中,并将 ISO 文件附加到从 KVM 客户机镜像创建的新虚拟机上。在这种情况下,数据源是 NoCloud。
流程
创建一个名为
cloudinitiso的目录,并将其设置为您的工作目录:$ mkdir cloudinitiso $ cd cloudinitiso创建
meta-data文件,并添加以下信息:instance-id: citest local-hostname: citest-1创建
user-data文件,并添加以下信息:#cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com注意user-data文件的最后一行引用一个 SSH 公钥。在~/.ssh/id_rsa.pub中查找您的 SSH 公钥。在尝试这个示例步骤时,请将该行修改为包含您的一个公钥。使用
genisoimage命令创建一个包含user-data和meta-data的 ISO 镜像:# genisoimage -output ciiso.iso -volid cidata -joliet -rock user-data meta-data I: -input-charset not specified, using utf-8 (detected in locale settings) Total translation table size: 0 Total rockridge attributes bytes: 331 Total directory bytes: 0 Path table size(bytes): 10 Max brk space used 0 183 extents written (0 MB)-
从红帽客户门户下载 KVM 客户机镜像到
/var/lib/libvirt/images目录。 使用
virt-install工具从 KVM 客户机镜像创建一个新虚拟机,并将下载的镜像附加到现有镜像上:# virt-install \ --memory 4096 \ --vcpus 4 \ --name mytestcivm \ --disk /var/lib/libvirt/images/rhel-8.1-x86_64-kvm.qcow2,device=disk,bus=virtio,format=qcow2 \ --disk /home/sample/cloudinitiso/ciiso.iso,device=cdrom \ --os-type Linux \ --os-variant rhel8.0 \ --virt-type kvm \ --graphics none \ --import使用用户名
cloud-user和密码cilogon登录到您的镜像:citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$
验证
检查
cloud-init状态,以确认工具已完成了其定义的任务:[cloud-user@citest-1 instance]$ cloud-init status status: donecloud-init工具在运行时在/var/lib/cloud下创建cloud-init目录布局,并根据您指定的指令更新或更改某些目录内容。例如,您可以通过检查数据源文件来确认数据源为
NoCloud。$ cd /var/lib/cloud/instance $ cat datasource DataSourceNoCloud: DataSourceNoCloud [seed=/dev/sr0][dsmode=net]cloud-init将 user-data 复制到/var/lib/cloud/instance/user-data.txt中:$ cat user-data.txt #cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com