第 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 rhel9.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: done
cloud-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
其它资源