Cloud-Init支持
1.介绍Cloud-Init
Cloud-Init兼容多个Linux发行版,主要用于虚拟机初始化配置。通过Cloud-Init,虚拟机管理器(qm)可以直接配置虚拟机网络设备和ssh密钥。当虚拟机首次启动时,Cloud-Init能够在虚拟机内部启用相关配置。
云镜像
使用Cloud-Init的第一步是准备虚拟机。理论上可以使用任何虚拟机。只需在虚拟机内部安装Cloud-Init软件包即可。例如在基于Debian/Ubuntu的虚拟机上,执行以下命令即可:
apt-get install cloud-init
很多Linux发行版都提供可直接使用的Cloud-Init镜像(以.qcow2文件形式),因此也可以直接下载并导入这类镜像。
系统 | 说明 |
---|---|
Ubuntu 云镜像 | img/qcow2 |
Debian 云镜像 | qcow2 |
下面的例子就使用 Ubuntu 在 https://cloud-images.ubuntu.com 提供的云镜像。
2.使用Cloud-Init安装虚拟机
准备Cloud-Init镜像
下载云镜像
# 1.切换到 PVE 存储池目录
cd /var/lib/vz/template/iso
# 2.下载镜像
wget https://cloud-images.ubuntu.com/oracular/current/oracular-server-cloudimg-amd64.img
创建虚拟机
# 创建虚拟机:1C2G 桥接网络
qm create 9000 --memory 2048 --net0 virtio,bridge=vmbr0
# 将下载的磁盘导入到 local-lvm 存储
qm importdisk 9000 oracular-server-cloudimg-amd64.img local-lvm
# 最后将新磁盘作为 scsi 驱动器附加到 VM
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0
操作过程截图:
--cores 2 #核心数
--name ubuntu #名称
--ipconfig0 ip=dhcp #使用DHCP自动分配IP,不可与手动IP同时使用
添加 Cloud-Init CDROM 驱动器
接下来要为虚拟机配置CDROM驱动器,以便传递Cloud-Init配置数据。
qm set 9000 --ide2 local-lvm:cloudinit
为直接启动Cloud-Init镜像,需要将bootdisk设置为scsi0,并设置仅从磁盘启动。这可以省去虚拟机BIOS的自检并加速启动过程。
qm set 9000 --boot c --bootdisk scsi0
此外还需要配置一个串口控制台,并用于显示虚拟机信息。由于这是OpenStack镜像的标准要求,所以有很多Cloud-Init镜像都依赖这种配置。
qm set 9000 --serial0 socket --vga serial0
最后,可以将虚拟机转换为模板。通过该模板,可以用链接克隆快速创建新的虚拟机。这种部署方式比完整克隆(复制)要快得多。
qm template 9000
操作过程截图:
在Web页面可以看见刚才创建的 VM 模板
部署Cloud-Init模板
利用模板可以轻松克隆并部署虚拟机
qm clone 9000 100 -–name ubuntu2
初始化虚拟机 然后设置登录认证SSH公钥,并配置IP地址,修改硬盘容量:
# 修改主机名
qm set 100 --name ubuntu2
# 添加公钥
qm set 100 --sshkey ~/.ssh/id_rsa.pub
# 设置静态网络
qm set 100 --ipconfig0 ip=192.168.10.101/24,gw=192.168.10.1
# 硬盘大小
qm resize 100 scsi0 40G
# 用户名、密码。注意:使用复杂密码!!!
qm set 100 --ciuser ubuntu --cipassword 123456可以通过一个命令行配置Cloud-Init的全部参数项。上面的例子是为了避免命令行过长而做了拆分。此外,需要注意确保IP配置符合你的网络环境要求。
操作截图:
启动虚拟机
启动虚拟机
qm start 100
若物理机未开启虚拟化功能,则会报错:
解决方法:
- 重启服务器
- 进入系统前按 F9(惠普工作站) 进入 BIOS
- 开启CPU虚拟化功能(VT-x)
- 保存并退出
进入虚拟监视器
qm terminal 100
虚拟机首次开机会加载配置,所以屏幕会滚动输出很多信息。
输出完毕后即可登录
退出虚拟机监视器:只需按
Ctrl+O
,即可回到 PVE 终端
到此,我们学会了在PVE中使用Cloud-Init初始化虚拟机的简单操作。更多操作可以查看下面的Cloud-Init学习资源。
3.Cloud-Init学习资源
URL | 说明 |
---|---|
PVE 官方文档 | 命令行工具的用法 |
10.8 Cloud-Init支持 — Promxox VE 中文文档 7.1 文档 | PVE中文教程Cloud-Init章节 ⭐ |
Cloud-Init官方文档 | 英语 ❌ |
安装cloud-init确保ECS实例完成初始化配置_云服务器 ECS(ECS)-阿里云帮助中心 | 除了 Cloud-Init 还有其他内容可学习。 |
一键变身!Cloud-Init让PVE镜像华丽转身,快来看看怎么做!_pve cloud-init-CSDN博客 | 博客,介绍PVE使用Cloud-Init。 |