ESXi Cloud-init
vSphere环境下使用Cloud-init快速初始化虚拟机, 虚拟机环境: Debian 11.
由于vSphere作为一款商业闭源软件, 开源社区很是看不起, 造成Debian 11自带的Cloud-init版本不支持vSphere环境下Userdata解析, 先需要通过源码安装最新版Cloud-init来支持:
git clone https://github.com/cloud-init/cloud-init.git
cd cloud-init
sudo pip3 install -r requirements.txt
sudo python3 setup.py build
sudo python3 setup.py install --init-system systemd
sudo cloud-init init --local
sudo cloud-init status
sudo ln -s /usr/local/bin/cloud-init /usr/bin/cloud-init
for svc in cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service; do
sudo systemctl enable $svc
sudo systemctl start $svc
done
当Cloud-init安装完毕后, 可以在虚拟机的设定内设置参数, 来将相关配置传入虚拟机, 以供初始化使用:
非网络相关:
- guestinfo.userdata
- guestinfo.userdata.encoding
网络相关:
- guestinfo.metadata
- guestinfo.metadata.encoding
Cloud-init配置文件:
#cloud-config
# note that "#cloud-config" must be very first line for everything to work
# guestinfo.userdata: cat cloudinit.yml | base64 | pbcopy
# guestinfo.userdata.encoding: base64
# networking
# this one should be added to:
# guestinfo.metadata:
# guestinfo.metadata.encoding
# ----------
network:
version: 2
ethernets:
ens192:
addresses:
- 192.168.0.186/24
gateway4: 192.168.0.1
dhcp4: false
dhcp6: false
nameservers:
addresses: [192.168.0.5]
preserve_hostname: false
prefer_fqdn_over_hostname: false
hostname: example
manage_etc_hosts: true
timezone: Asia/Shanghai
disable_root: false
package_update: true
package_upgrade: true
package_reboot_if_required: true
packages:
- gcc
- htop
- telnet
- mtr
- curl
- wget
- nload
- iftop
- screen
当Cloud-init配置完一次后, 如果下次开机还想再让Cloud-init重新配置一次的话可以执行命令:
cloud-init clean