cloud-init
cloud-init是一款开源初始化工具,能够为Linux操作系统提供初始化密码、设置主机名、执行自定义脚本等初始化配置能力。如果您本地制作的自定义镜像未安装cloud-init且需要迁移上云,需要手动安装cloud-init,否则使用该自定义镜像的创建ECS实例将无法自动执行设置主机名、配置网络等初始化任务,进而影响实例的自动化部署与配置效率。本文介绍如何在Linux操作系统中安装cloud-init。
关于cloud-init的更多信息,请参见cloud-init官方文档。
Cloud-init in vmware workstation
我想使用 VMWare Workstation 和 Almalinux 9在我的笔记本电脑上快速设置虚拟机。通过AlmaLinux官方提供的qcow2的通用云镜像,快速启动虚拟机。
我可以正常启动它(将 qcow 格式转换为 vmdk -
https://blog.ktz.me/migrate-qcow2-images-from-kvm-to-vmware/ 后),但之后我无法登录系统。
cat meta-data
instance-id: almalinux9
local-hostname: almalinux
---------------
#cloud-config 这一行是必须要有的
password: Passw0rd # 设置默认密码
chpasswd: {expire: False} # 密码永不过期
ssh_pwauth: True #开启密码认证
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHorNr83XzSn2AiTlxRSC0xKpLL84j6f7eN9gHFFxURR root@iqimei # 设置认证公钥
----------------------------------
#cloud-config
password: Passw0rd
chpasswd: {expire: False}
ssh_pwauth: True
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHorNr83XzSn2AiTlxRSC0xKpLL84j6f7eN9gHFFxURR root@iqimei
您需要 user-data 文件和 meta-data 文件才能具有有效的 cloud-init 配置!
- 生成包含用户数据和元数据的 iso 映像:
genisoimage -output almalinux95.iso -volid cidata -joliet -rock user-data meta-data
- 创建虚拟机
现在创建一个新的虚拟机。然后删除原有虚拟机的磁盘,将转换后的vmdk文件拷贝到你新的虚拟机的文件夹中,覆盖原有的vmdk磁盘文件。
将 almalinux-9.5-x86_64.vmdk 拷贝到新建虚拟机的文件夹中,然后替换原来的vmdk文件。
由于默认的qcow2的磁盘大小为10G,此时我们需要在虚拟机的编辑界面,手动调整该磁盘的大小为40G。
然后添加 CD-ROM 驱动器并选择您创建的 almalinux95 映像,其中包含 cloud-init 用户数据和元数据。
启动虚拟机后,可以看到我在meta-data中定义的主机名已成功设置,且可以正常登录。
参考链接:
https://wiki.almalinux.org/cloud/Generic-cloud.html
https://cloudinit.readthedocs.io/en/latest/tutorial/qemu.html