VMware vRA8 模版配置 — 实现获取静态IP地址和Cloud-init执行操作

VMware vRealize Automaton 8 采用了全新的架构,目前版本(截止最新版为8.1)其蓝图的部署应用方式也发生了改变,采用 Cloud-init 方式实现应用 & 脚本命令的执行。

但将蓝图网络设置静态IP地址,即蓝图 yaml 语句: assignment: static (如下图所示)时 Cloud-init “无法完全”执行 runcmd 中配置的脚本命令。

-w1109

出现“无法完全”执行的原因:
由于在 vSphere 环境下,虚拟机的自定义配置,例如:主机名、管理员密码、IP地址、许可证等,均是采用 vCenter 里面虚拟机自定义规范(VM Customization Specifications)功能来实现。在 VM 模板克隆后首次开机时,通过安装在 VM 内 VMTools 根据【虚拟机自定义规范】来完成相关的自定过程,整个过程完成后由 VMTools 将该 VM 进行重新引导。

注:如 Windows 系统勾选 生成新的安全身份(SID)(Generate a new security identity(SID)),会出现自定义初始化的过程比较长。

Cloud-init 在 vSphere 中是将自定义的配置文件,例如:网络配置、runcmd 执行的脚本文件等,依着 ISO 的方式挂给 vSphere 中的 VM,在该 VM 启动时,由安装在 VM 中的 cloud-init 程序挂载 ISO 文件并执行,为了保证系统每次启动后都自动执行cloud-init 程序,该程序在执行前会判断是否有cloud-init执行过的记录,如果存在执行记录就放弃本次执行。
当蓝图使用 assignment: static 时 VMTools 将该 VM 进行重新引导,也就导致 vRA 8.x 中 Cloud-init 正在执行或者由于没优化数据源(datasource_list: [OVF])导致 Cloud-init 根本没有执行,该执行过程可访问 log 文件查看,Log 文件: /var/log/cloud-init.log

当然官方文档中给出了相关的配置说明:如何部署具有静态 IP 地址的 Linux 计算机

但这种方式存在在几个瑕疵:
1. 仅支持 Ubuntu
2. 执行过程中需要等待的时间过长(借助 Linux sleep 功能)

CentOS7模版一键修改脚本
build-centos-vra8-template.sh


wget https://raw.githubusercontent.com/6547709/vra8/master/build-centos-vra8-template.sh
sudo chmod +x build-centos-vra8-template.sh
./build-centos-vra8-template.sh

Ubuntu18.04模版一键修改脚本
build-ubuntu-vra8-template.sh


wget https://raw.githubusercontent.com/6547709/vra8/master/build-ubuntu-vra8-template.sh
sudo chmod +x build-ubuntu-vra8-template.sh
sudo ./build-ubuntu-vra8-template.sh

注:由于脚本最后几行内,增加执行后自动关机,如不需要,请将其注释。#shutdown -h now
每次从新编辑该模板时,请执行一次清除脚本。

sudo ./etc/cloud/clean.sh

感谢 guoqiang 编写的脚本:https://www.guoqiangli.com/2020/05/14/vmwarevra8templateoptimization/

Cloud-init 配置说明:https://cloudinit.readthedocs.io/en/latest/

该脚本仅用于POC环境测试,如果您使用该脚本,即代表您已经了解并接受该脚本对您环境所带来的影响,其影响和后果自行承担,与作者无关。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注