11.7. 使用 VMware vSphere Cloud-init 和 Userdata 模板进行置备
您可以将 VMware 与 Cloud-init
和 Userdata
模板搭配使用,将用户数据插入到新的虚拟机中,进行进一步的 VMware 自定义,并让 VMware 托管的虚拟机重新调用 Satellite。
您可以使用相同的步骤在卫星中设置 VMware 计算资源,对工作流进行了一些修改。
VMware cloud-init 调配概述
当您在 Satellite 中为 VMware 置备设置计算资源和镜像时,会发生以下一系列置备事件:
- 用户使用 Satellite web UI、API 或 hammer 置备一个或多个虚拟机
- Satellite 调用 VMware vCenter 来克隆虚拟机模板
-
Satellite
userdata
调配模板添加自定义身份信息 -
置备完成后,
Cloud-init
调配模板指示虚拟机在cloud-init
运行时重新调用胶囊 - VMware vCenter 将模板克隆到虚拟机
- VMware vCenter 对虚拟机的身份应用自定义,包括主机名、IP 和 DNS
-
虚拟机构建
cloud-init
被调用,并在端口80
上调用回 Satellite,然后重定向到443
端口和防火墙要求
由于 cloud-init
服务,虚拟机总是调用卫星,即使您将虚拟机注册到胶囊。确保配置端口和防火墙设置以打开任何必要的连接。
有关端口和防火墙要求的更多信息,请参阅安装胶囊服务器 中的 安装卫星 和端口和 端口和 防火墙要求中的端口和防火墙要求。
将 userdata
和 Cloud-init
模板与操作系统关联
- 在 Satellite Web UI 中,进入 Hosts > Operating Systems,然后选择您要用于置备的操作系统。
- 点 Template 选项卡。
- 从 Cloud-init 模板 列表中,选择 Cloudinit default。
- 从 User data template 列表中,选择 UserData open-vm-tools。
- 单击 Submit 以保存更改。
准备镜像以使用 cloud-init 模板
要准备镜像,您必须首先在虚拟机上配置您需要的设置,然后保存为要在 Satellite 中使用的镜像。
要使用
模板进行置备,您必须配置虚拟机,以便安装、启用并配置为返回卫星服务器。
cloud-init
为了安全起见,您必须安装 CA 证书以使用 HTTP 进行所有通信。此流程包括清理虚拟机的步骤,以便不需要发送到您置备的镜像的信息。
如果您有带有 cloud-init
的镜像,您仍需要按照此流程启用 cloud-init
与 Satellite 通信,因为 cloud-init
会被默认禁用。
在用于创建镜像的虚拟机上,安装
cloud-init
、open-vm-tools
和perl
:# yum -y install cloud-init open-vm-tools perl
为
cloud-init
创建配置文件:# vi /etc/cloud/cloud.cfg.d/example_cloud-init_config.cfg
在
example_cloud_init_config.cfg
文件中添加以下信息:datasource_list: [NoCloud] datasource: NoCloud: seedfrom: https://satellite.example.com/userdata/ EOF
为镜像启用 CA 证书:
# update-ca-trust enable
从 Satellite 服务器下载
katello-server-ca.crt
文件:# wget -O /etc/pki/ca-trust/source/anchors/cloud-init-ca.crt http://satellite.example.com/pub/katello-server-ca.crt
要更新证书记录,请输入以下命令:
# update-ca-trust extract
使用以下命令清理镜像:
# systemctl stop rsyslog # systemctl stop auditd # package-cleanup --oldkernels --count=1 # yum clean all
使用以下命令减少日志空间、删除旧日志和截断日志:
# logrotate -f /etc/logrotate.conf # rm -f /var/log/*-???????? /var/log/*.gz # rm -f /var/log/dmesg.old # rm -rf /var/log/anaconda # cat /dev/null > /var/log/audit/audit.log # cat /dev/null > /var/log/wtmp # cat /dev/null > /var/log/lastlog # cat /dev/null > /var/log/grubby
删除
udev
硬件规则:# rm -f /etc/udev/rules.d/70*
从
ifcfg
脚本中删除uuid
:# cat > /etc/sysconfig/network-scripts/ifcfg-ens192 <<EOM DEVICE=ens192 ONBOOT=yes EOM
删除 SSH 主机密钥:
# rm -f /etc/ssh/SSH_keys
删除 root 用户的 shell 历史记录:
# rm -f ~root/.bash_history # unset HISTFILE
删除 root 用户的 SSH 历史记录:
# rm -rf ~root/.ssh/known_hosts
现在,您可以从此虚拟机创建镜像。
您可以使用 第 11.4 节 “在 Satellite 服务器中添加 VMware vSphere 镜像” 部分将镜像添加到 Satellite 中。
配置胶囊以转发用户数据模板
如果您使用胶囊模板功能部署 Satellite,则必须将卫星配置为识别通过 X-Forwarded-For HTTP 标头转发的主机 IP 地址,以提供正确的模板有效负载。
为安全起见,卫星只识别来自本地主机的这个 HTTP 标头。对于每个单独的胶囊,您必须配置正则表达式来识别主机的 IP 地址。在 Web UI 中,您可以通过导航到 Administer > Settings > Provisioning 并更改 Remote address 设置来执行此操作。通过 CLI,您可以输入以下命令来实现:
# hammer settings set --name remote_addr --value '(localhost(4|6|4to6)?|192.168.122.(1|2|3))'