第 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
$ mkdir cloudinitiso $ cd cloudinitiso
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
meta-data
文件并添加以下信息:instance-id: citest local-hostname: citest-1
instance-id: citest local-hostname: citest-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
user-data
文件并添加以下信息:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意user-data
文件的最后一行引用一个 SSH 公钥。在~/.ssh/id_rsa.pub
中查找您的 SSH 公钥。在尝试这个示例步骤时,请将该行修改为包含您的一个公钥。使用
genisoimage
命令创建一个包含user-data
和meta-data
的 ISO 镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
从红帽客户门户下载 KVM 客户机镜像到
/var/lib/libvirt/images
目录。 使用
virt-install
工具从 KVM 客户机镜像创建一个新虚拟机,并将下载的镜像附加到现有镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用用户名
cloud-user
和密码cilogon
登录到您的镜像:citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$
citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查
cloud-init
状态,以确认工具是否已完成了其定义的任务:cloud-init status
[cloud-user@citest-1 instance]$ cloud-init status status: done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cloud-init
工具在其运行时在/var/lib/cloud
下创建cloud-init
目录布局,并根据您指定的指令更新或更改某些目录内容。例如,您可以通过检查数据源文件来确认数据源为
NoCloud
。cd /var/lib/cloud/instance cat datasource
$ cd /var/lib/cloud/instance $ cat datasource DataSourceNoCloud: DataSourceNoCloud [seed=/dev/sr0][dsmode=net]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cloud-init
将 user-data 复制到/var/lib/cloud/instance/user-data.txt
中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow