Cloud-Init这玩意的文档说实话写的跟屎一样,不是给人看的。之前Proxmox对这个Cloud-Init的支持也还有很多BUG,现在貌似都修的差不多了,可以上手试试了~
使用Cloud-Init之后的方便之处:
1.可以自己设置系统用户密码,或者公钥验证。
2.小鸡硬盘可以在现有分区上自动扩容,不需要去创建新的分区。(这个功能简直太关键了)
3.可以快速配置小鸡网络。
4.自动更新系统到最新版。
总而言之就是批量部署虚拟机的时候效率会大大的提高~
环境:PVE5.4-13
模板系统:debian-10.0.0-amd64-netinst
首先下载Debian10镜像:
cd /var/lib/vz/template/iso wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.0.0-amd64-netinst.iso
创建虚拟机这里就不多说了,只有一个点要注意一下,用来制作模板的系统,硬盘能给小就给小,我这边分了5GB:
虚拟机创建完毕之后不要马上开机,现在需要添加一个CloudInit设备:
总线设备IDE,顺序0:
然后开机按照正常流程安装系统,到网络配置这里,我是选择的手动:
我给这台小鸡分配了一个尾号为165IP:
继续安装按流程走,到硬盘分区这里选择手动:
只创建一个分区,把5G硬盘的全部容量都划分到/,这里注意要把Bootable flag开启,因为我们没有/boot分区:
模板系统能精简就精简,所以最后让我们选择安装组件的时候,只装一个SSH服务:
系统安装完成,开机之后使用VNC登录进来,不要去用SSH,原因我懒得说。。
登进去后在这台小鸡里面安装CloudInit:
apt -y update apt -y install cloud-init
然后编辑配置文件:
nano /etc/cloud/cloud.cfg
删除这些没用的配置,注意这里是删除如下的配置,不是添加:
cloud_config_modules: - snap - snap_config - ubuntu-advantage - disable-ec2-metadata - byobu cloud_final_modules: - snappy - fan - landscape - lxd - puppet - chef - mcollective - salt-minion - rightscale_userdata
注:有些是之前我在Ubuntu18.04上面的配置,Debian10没有就不用管。
如图所示:
最后清理系统/删除安装系统时创建的用户/删除登录记录/删除命令记录:
apt clean userdel -r imlala echo > /var/log/wtmp history -c
回到Proxmox面板上点关机,把这台虚拟机关掉,然后右键转换成模板。
这样一个Debian10的系统模板就做好了,现在我们可以右键点击克隆,模式选择完整克隆:
之后我们可以在这里更改这台克隆机器的CPU/内存/硬盘等配置,这里我把硬盘增加到了50GB:
点击Cloud-Init设置这台小鸡的用户/密码:
设置这台小鸡的网络,之前模板系统是165,为验证Cloud-Init是否能够正常工作,这里我把它配置为166,然后再配了一个IPv6:
全部设置好了之后点击“重生成映像”:
现在打开这台虚拟机,在VNC中我们可以看到Cloud-Init已经在按我们之前的配置去设置这台机器的一些信息了:
系统启动之后,尝试登录,一切正常,设置的用户能成功登录,硬盘大小能自动扩容,网络也是OK的:
CTM,最后发现马赛克白打了,浏览器下方出卖了老子!
哈哈哈哈防不胜防
哈哈哈哈!