11.7. 使用 VMware cloud-init 和 userdata 模板进行配置
您可以将 VMware 与 Cloud-init
和 Userdata
模板一起使用,将用户数据插入到新虚拟机中,以进行进一步的 VMware 自定义,并使 VMware 托管的虚拟机能够重新调用 Satellite。
您可以使用相同的步骤在 Satellite 中设置 VMware 计算资源,并对工作流进行一些修改。
图 11.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 服务器 中的 端口和防火墙要求。https://docs.redhat.com/en/documentation/red_hat_satellite/6.15/html-single/installing_capsule_server/index#capsule-port-and-firewall-requirements_capsule - 如果要使用 Capsule 服务器而不是 Satellite 服务器,请确保已相应地配置了 Capsule 服务器。如需更多信息,请参阅 安装 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 中使用的镜像。
要使用
模板进行调配,您必须配置虚拟机,以便安装、启用并配置为重新调用 Satellite 服务器。
cloud-init
为了安全起见,您必须安装 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-Temp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过
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 EOM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
cloud-init
从 Satellite 获取数据:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要通过 Capsule 服务器置备,请在
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 enable
Copy 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.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要通过胶囊服务器调配,请从 Capsule 服务器下载 文件,如
https:// Capsule.example.com/pub/katello-server-ca.crt
。更新证书的记录:
update-ca-trust extract
# update-ca-trust extract
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 清理镜像:
systemctl stop rsyslog systemctl stop auditd package-cleanup --oldkernels --count=1 dnf clean all
# systemctl stop rsyslog # systemctl stop auditd # package-cleanup --oldkernels --count=1 # dnf clean all
Copy 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_hosts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 root 用户的 shell 历史记录:
rm -f ~root/.bash_history unset HISTFILE
# rm -f ~root/.bash_history # unset HISTFILE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 从此虚拟机创建镜像。
- 将您的镜像添加到 Satellite。