第 4 章 创建带有 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 cloudinitisoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
meta-data文件:vi meta-data
$ vi meta-data instance-id: citest local-hostname: citest-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
user-data文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以在
~/.ssh/id_rsa.pub文件中找到您的 SSH 公钥。创建一个包含
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: doneCopy 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