Proxmox VE 虚拟机 Cloud-Init 应用

https://ithelp.ithome.com.tw/upload/images/20210927/20118848pMxOjAQNPb.png

在 Proxmox VE 管理介面可以方便的建立客体虚拟机、硬体配置,以及开启主控台安装系统与客体内的设定,不过有关帐号密码、网路 IP 及 DNS 等设定就不能在管理介面上方便的配置,有没有更容易可以让我在 Proxmox VE 管理介面上一次搞定的方法?

当然是有,而且非常容易使用!


准备 Cloud-Init 客体支援

目前 Cloud-Init 支援大部份的 Linux 作业系统发行版本,较新的发行版本已有内建,可在安装有 Ubuntu 的客体机内使用以下指令进行检查:

dpkg -l | grep cloud-init

https://ithelp.ithome.com.tw/upload/images/20210927/201188485S1bfZVYzh.png
检查是否已安装 Cloud-Init 套件

若没有内建的亦可很容易的安装起来,以 Ubuntu Linux 为例:

apt install cloud-init

 

目前 Cloud-Init 官网上列出有支援的作业系统与发行版本如下:

  • Ubuntu
  • Alpine Linux
  • Arch Linux
  • CentOS
  • RockyLinux
  • RHEL
  • CloudLinux
  • FreeBSD
  • NetBSD
  • OpenBSD
  • Fedora
  • Gentoo
  • openSUSE
  • Debian
  • ...等等
补充:
Windows 作业系统也有公司开发 Cloud-Init 的相关套件,如有兴趣可以至文末参考资料下载。
技巧:
也可以直接下载预先配置好的 Linux 发行版 Cloud Image,汇入 Proxmox VE 客体机後直接开机就可以套用 Cloud-Init 进行初始化,连安装作业系统的工作都省去。由於牵涉到 Proxmox VE 的 CLI 命令列指令,将於日後篇幅提及。

新增 Cloud-Init 虚拟装置

接下来要为客体机增加一个 Cloud-Init 磁碟机,请选取客体机後,切换至 硬体 页签,按下 增加 按钮,选取 CloudInit 磁碟机

https://ithelp.ithome.com.tw/upload/images/20210927/20118848Q6weMvPUzX.png
准备新增 Cloud-Init 磁碟机

进入 Cloud-Init 选项视窗後,只需在 储存 下拉清单中指定 Cloud-Init 磁碟机要存放的储存集区,再按下 建立 即可。

https://ithelp.ithome.com.tw/upload/images/20210927/201188485pfjmQFgVE.png
新增 Cloud-Init 磁碟机选项视窗

建立完成以後,硬体清单中即会增加一笔 CloudInit 磁碟机 (ide0) 项目。

https://ithelp.ithome.com.tw/upload/images/20210927/201188483HxP3Z3Ids.png
新增 Cloud-Init 磁碟机完成

除了磁碟机外,还需要增加一个序列埠装置,以让 Cloud-Init 可以正确连动。请按下 增加 按钮,选取 序列埠 项目。

https://ithelp.ithome.com.tw/upload/images/20210927/20118848fA48CtJQnn.png
准备新增序列埠

在弹出的序列埠选项视窗中,直接按下 增加 按钮。

https://ithelp.ithome.com.tw/upload/images/20210927/20118848KOlYFXfpsV.png
新增序列埠选项视窗

序列埠增加完成後,可以在硬体清单中确认。

最後,我们还要把原本的虚拟光碟机移除,才不会影响到客体机启动时由 Cloud-Init 磁碟机的读取设定作业。请选取 CD/DVD 装置 (ide2),再按下 移除 按钮,弹出的确认对话框按下 即可移除之。

https://ithelp.ithome.com.tw/upload/images/20210927/20118848lM3rFx5hhO.png
移除虚拟光碟机


使用 Cloud-Init 设定参数

前置作业完成後,可以准备设定 Cloud-Init 的各项参数。切换至 Cloud-Init 页签,点选 帐号 两下准备进入设定。

https://ithelp.ithome.com.tw/upload/images/20210927/20118848L40SOuG7RT.png
准备设定 Cloud-Init 帐号

弹出帐号对话视窗後,请填入要设定的帐号名称。

https://ithelp.ithome.com.tw/upload/images/20210927/20118848sX7dD5xUFG.png
设定 Cloud-Init 帐号

 

接着再点选 密码 栏位两次,进入密码设定视窗。

https://ithelp.ithome.com.tw/upload/images/20210927/20118848dwDRIVNydZ.png
设定 Cloud-Init 密码

提醒:
只有直接使用 Cloud Image 映像档的客体机可以初始化帐号与密码。

 

当帐号与密码设定完成後,再按下 DNS 网域名称 两下,进入设定对话视窗。若保留预设,则会以节点实体机的 DNS 网域名称跟服务器自动带入。

https://ithelp.ithome.com.tw/upload/images/20210927/20118848Sy2OTS5IV8.png
设定 Cloud-Init DNS 网域名称及服务器

 

若有预备好的客户端 SSH 公开金钥,也可以在此填入,以用做日後使用免密码方式远端连入这台客体机。

https://ithelp.ithome.com.tw/upload/images/20210927/20118848g5Q7el2p7Y.png
设定 Cloud-Init SSH 公开金钥

 

最後是网路设定,经由 Cloud-Init 功能即可让我们在 Proxmox VE 介面上方便的为客体虚拟机指定好 IP,免去许多设定的手续。

https://ithelp.ithome.com.tw/upload/images/20210927/20118848TqvGf2OMTW.png
设定 Cloud-Init 网路

 

当全数设定完成後,可以检视一下 Cloud-Init 清单的内容,确认无误後请按下 重新产生映像 让它生效。

https://ithelp.ithome.com.tw/upload/images/20210927/20118848EFkZCKRY2e.png
产生 Cloud-Init 映像档

 


启动客体机及失败状况处理

做完前置各项设定後,就可以启动客体机来验证设定是否正确生效。

https://ithelp.ithome.com.tw/upload/images/20210927/20118848EhJXUG0o2f.png
确认已经由 Cloud-Init 设定好 IP

 

Cloud-Init 失败状况处理

如果 Cloud-Init 设定套用仍然无效,请开启客体机主控台进行以下操作:

# 清除已有的 Cloud-Init 设定
cloud-init clean

# 移除 Cloud-Init 其它设定档案
rm -rf /etc/cloud
rm -rf /var/lib/cloud/instances 
rm /etc/netplan/00-installer-config.yaml

# 重新启动
reboot

若 Cloud-Init 相关设定正确无误,应於重新启动後生效。


参考资料


<<:  Day19 Helm manage Open-Match

>>:  day 19 - health check 让k8s帮忙关怀服务

[ Day 30 ] 从 Vue.js 到 React.js 的完赛心得

第一次参加铁人赛很开心真的能顺利完赛啦!!! 当初开赛前还想说参赛期间会经历中秋节和双十国庆的连假...

不只懂 Vue 语法:为什麽要用 Vuex? Vuex 基本架构是怎样?

问题回答 使用 Vuex 是为了当元件之间都需要共用资料时,使用一个像是公用容器来管理资料,我们把所...

[30天 Vue学好学满 DAY11] v-on

v-on 监听DOM并进行触发 v-on: -> 简写 @ v-on:click="...

DAY24 迁移式学习与预训练模型

一、迁移式学习(Transfer Learning) 动机 我们在做监督式学习(Supervised...

Day 0x15 UVa10056 What is the Probability ?

Virtual Judge ZeroJudge 题意 输入玩家数与成功机率,输出 I-th 玩家成...