前言

cloud init 是什么

Cloud Init 是一个开源的云初始化程序,主要用于在新创建的云服务器中进行初始化配置,如设置主机名、密钥和用户数据等。

它被广泛应用在AWS和OpenStack等云平台中,用于在新建的虚拟机中进行时间设置、密码设置、扩展分区、安装软件包等初始化设置。

在 PVE 里的虚拟机中添加了 Cloud Init 驱动后,PVE 会生成一个 Cloud Init 文件,这个文件保存在宿主机中,PVE 会将文件以光盘(cdrom)的形式挂载到虚拟机中,安装了 Cloud Init 的虚拟机在首次启动时,会读取并执行这些设置。

cloud images 是什么

cloud images 是各个系统的发行版专门推出的面向公有云的镜像,其内置了 Cloud Init

为什么要使用模板

创建虚拟机需要很多步骤,为了简化虚拟机的创建过程,我们可以先创建一个虚拟机,然后将其转为模板,之后通过该模板可以快速创建新的虚拟机

cloud images下载地址

根据您的习惯,下载对应的系统

centos:
http://cloud.centos.org/centos/
ubuntu:
http://cloud-images.ubuntu.com/releases/
debian:
https://cloud.debian.org/images/cloud/OpenStack/
fedora:
https://alt.fedoraproject.org/cloud/
rehat7:
https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86_64/product-downloads
opensuse:
https://software.opensuse.org/distributions/leap#JeOS-ports

1.准备 cloud image

可以使用下载工具下载cloud image后上传到PVE,也可以直接在PVE中使用url下载

2.创建虚拟机

创建一个虚拟机,操作系统选择不适用任何介质(与传统的系统安装不一样)
19cec9f0cd5b290a8e5f979e03aae53d.png

系统SCSI控制器选择VirtIO SCSIVirtIO SCSI single
ab56cffa934a44ecdbf6ce65fd266986.png

删除默认的磁盘(等下会把cloud image导入到新的磁盘)
ce2d6fe91683985f067c488294521cf6.png

CPU和内存根据需要设置,完成,得到一个关机状态的虚拟机
dc43af2c27235eeae6b8ab5e29ee3cf4.png

4.导入镜像制作模板

进入 shell,执行导入命令,格式为:qm importdisk <vmid> <images-name> <storage pool> --format=<disk-fs>

如:qm importdisk 200 /var/lib/vz/template/iso/ubuntu-22.04-server-cloudimg-amd64.img local-lvm --format=qcow2

如果不知道镜像文件的地址,可以使用find / -name ubuntu-22.04-server-cloudimg-amd64.img 搜索

看到如下信息表示导入成功
2531d74c35441d29ad6efd773a64a412.png

虚拟机的硬件中会出现一个未使用的磁盘
0936559d0ac1fbf85db5a7bfc79dd537.png

双击未使用的磁盘,添加到虚拟机中
c802c75c7eb0467954b72550a44f7c88.png

删除CD驱动器
4bf70421b2a3067580ce94179bf7cd12.png

修改系统引导顺序,使用磁盘启动
a933b544dc260c82a7e6ec69b5fc136a.png

转换为模板

选择虚拟机,右键选择转换成模板
6426894849b0296cf9d576eba253536f.png

克隆新的虚拟机

选择模板,右键克隆
d7d03e4a1f97cabde69a8eea0162afd7.png

选择完成克隆
8da421215ea9b2688033133b47099ed5.png

克隆完成后,选择硬盘,对硬盘进行扩容
b487a3c22f460f1d72419e78ee7eed18.png

根据需要填写扩容大小(注意单位是GB!!!)
aa2111368e4a4b0a26865863bfd24acf.png

根据实际情况,设置cloud init参数
d3a90293cef40fdb17195c4d978edd83.png

开机等待设置完成,就可以使用ssh连接了
bed5eb14d5e7e98b37adb0505d4bec70.png

其他注意点

  1. 其他文章中会提到一定要添加串行端口,其实使用 cloud init 不需要串行端口,实际使用中串行端口多用于特定场景的调试,和 cloud init 没有关系。