10.7. 使用 VMware cloud-init 和 userdata 模板进行置备
您可以将 VMware 与 Cloud-init 和 Userdata 模板一起使用,将用户数据插入到新虚拟机中,以进行进一步的 VMware 自定义,并启用 VMware 托管的虚拟机来回发到 Satellite。
您可以使用相同的流程在 Satellite 中设置 VMware 计算资源,并对工作流进行一些修改。
图 10.1. VMware cloud-init 置备概述
当您在 Satellite 中为 VMware 置备设置计算资源和镜像时,会发生以下置备事件序列:
- 用户使用 Satellite Web UI、API 或 hammer 置备一个或多个虚拟机
- Satellite 调用 VMware vCenter 来克隆虚拟机模板
-
Satellite
userdata自定义模板添加自定义身份信息 -
在置备完成后,
Cloud-init自定义模板指示虚拟机在cloud-init运行时重新调用 Capsule - VMware vCenter 将模板克隆到虚拟机
- VMware vCenter 对虚拟机的身份应用自定义,包括主机名、IP 和 DNS
-
虚拟机构建
cloud-init被调用,并在端口80上调用回 Satellite,然后重定向到443
先决条件
-
配置端口和防火墙设置,以打开任何必要的连接。由于
cloud-init服务,即使将虚拟机注册到胶囊,虚拟机始终都会调用回 Satellite。如需更多信息,请参阅 安装胶囊式服务器 中的 在连接的网络环境和端口和 防火墙要求 中安装 Satellite 服务器 中的 端口和防火墙要求。https://docs.redhat.com/en/documentation/red_hat_satellite/6.16/html-single/installing_capsule_server/index#capsule-port-and-firewall-requirements_capsule 如果要使用 Capsule 服务器而不是 Satellite 服务器,请确保已相应地配置了胶囊服务器。
重要必须将您的胶囊服务器添加到 Satellite 服务器上的可信代理列表中!
如需更多信息,请参阅 安装 Capsule 服务器 中的 为主机注册配置 Capsule 和置备。
备份以下配置文件:
-
/etc/cloud/cloud.cfg.d/01_network.cfg -
/etc/cloud/cloud.cfg.d/10_datasource.cfg -
/etc/cloud/cloud.cfg
-
将 Userdata 和 Cloud-init 模板与操作系统关联
- 在 Satellite Web UI 中,进入到 Hosts > Templates > Provisioning Templates。
- 搜索 CloudInit 默认模板,再单击其名称。
- 单击 关联 选项卡。
- 选择模板应用的所有操作系统,然后单击 Submit。
- 为 UserData open-vm-tools 模板重复上述步骤。
- 导航到 Hosts > Provisioning Setup > Operating Systems。
- 选择您要用于置备的操作系统。
- 点 Templates 选项卡。
- 从 Cloud-init 模板列表中,选择 CloudInit default。
- 从 User data template 列表中,选择 UserData open-vm-tools。
- 点 Submit 以保存更改。
准备镜像以使用 cloud-init 模板
要准备镜像,您必须首先在虚拟机上配置所需的设置,然后将其保存为要在 Satellite 中使用的镜像。
要使用 cloud-init 模板进行调配,您必须配置虚拟机,以便安装、启用 cloud-init,并配置为调用回 Satellite 服务器。
为了安全起见,您必须安装 CA 证书以使用 HTTPS 进行所有通信。此流程包括清理虚拟机的步骤,以便不会向您用于置备的镜像进行不需要的信息传输。
如果您的镜像带有 cloud-init,则仍必须按照以下步骤使 cloud-init 与 Satellite 通信,因为默认禁用了 cloud-init。
流程
在用于创建镜像的虚拟机上,安装所需的软件包:
dnf install cloud-init open-vm-tools perl-interpreter perl-File-Temp
# dnf install cloud-init open-vm-tools perl-interpreter perl-File-TempCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Red Hat Enterprise Linux 9 中,您还需要
dbus-tools软件包才能进行网络连接。通过
cloud-init禁用网络配置:cat << EOM > /etc/cloud/cloud.cfg.d/01_network.cfg network: config: disabled EOM
# cat << EOM > /etc/cloud/cloud.cfg.d/01_network.cfg network: config: disabled EOMCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
cloud-init以从 Satellite 获取数据:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要通过胶囊服务器进行调配,请在
seedfrom选项中使用 Capsule 服务器的 URL,如https:// Capsule.example.com:9090/userdata/。配置要在
cloud-init中使用的模块:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为镜像启用 CA 证书:
update-ca-trust enable
# update-ca-trust enableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从 Satellite 服务器下载
katello-server-ca.crt文件:wget -O /etc/pki/ca-trust/source/anchors/cloud-init-ca.crt https://satellite.example.com/pub/katello-server-ca.crt
# wget -O /etc/pki/ca-trust/source/anchors/cloud-init-ca.crt https://satellite.example.com/pub/katello-server-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要通过胶囊服务器调配,请从胶囊服务器下载 文件,如
https://capsule.example.com/pub/katello-server-ca.crt。更新证书的记录:
update-ca-trust extract
# update-ca-trust extractCopy to Clipboard Copied! Toggle word wrap Toggle overflow 停止
rsyslog和auditd服务:systemctl stop rsyslog systemctl stop auditd
# systemctl stop rsyslog # systemctl stop auditdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 清理镜像中的软件包:
在 Red Hat Enterprise Linux 8 及更新的版本中:
dnf remove --oldinstallonly
# dnf remove --oldinstallonlyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Red Hat Enterprise Linux 7 及更早版本中:
package-cleanup --oldkernels --count=1 dnf clean all
# package-cleanup --oldkernels --count=1 # dnf clean allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
减少日志空间、删除旧日志和截断日志:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
udev硬件规则:rm -f /etc/udev/rules.d/70*
# rm -f /etc/udev/rules.d/70*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除与现有网络配置相关的
ifcfg脚本:rm -f /etc/sysconfig/network-scripts/ifcfg-ens* rm -f /etc/sysconfig/network-scripts/ifcfg-eth*
# rm -f /etc/sysconfig/network-scripts/ifcfg-ens* # rm -f /etc/sysconfig/network-scripts/ifcfg-eth*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 SSH 主机密钥:
rm -f /etc/ssh/ssh_host_*
# rm -f /etc/ssh/ssh_host_*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 root 用户的 SSH 历史记录:
rm -rf ~root/.ssh/known_hosts
# rm -rf ~root/.ssh/known_hostsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 root 用户的 shell 历史记录:
rm -f ~root/.bash_history unset HISTFILE
# rm -f ~root/.bash_history # unset HISTFILECopy to Clipboard Copied! Toggle word wrap Toggle overflow - 从此虚拟机创建镜像。
- 将您的镜像添加到 Satellite 中。