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
通过
cloud-init
禁用网络配置:# cat << EOM > /etc/cloud/cloud.cfg.d/01_network.cfg network: config: disabled EOM
配置
cloud-init
从 Satellite 获取数据:# cat << EOM > /etc/cloud/cloud.cfg.d/10_datasource.cfg datasource_list: [NoCloud] datasource: NoCloud: seedfrom: https://satellite.example.com/userdata/ EOM
如果要通过 Capsule 服务器置备,请在
seedfrom
选项中使用 Capsule 服务器的 URL,如https:// Capsule.example.com:9090/userdata/
。配置要在
cloud-init
中使用的模块:# cat << EOM > /etc/cloud/cloud.cfg cloud_init_modules: - bootcmd - ssh cloud_config_modules: - runcmd cloud_final_modules: - scripts-per-once - scripts-per-boot - scripts-per-instance - scripts-user - phone-home system_info: distro: rhel paths: cloud_dir: /var/lib/cloud templates_dir: /etc/cloud/templates ssh_svcname: sshd EOM
为镜像启用 CA 证书:
# update-ca-trust enable
从 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
如果要通过胶囊服务器调配,请从 Capsule 服务器下载 文件,如
https:// Capsule.example.com/pub/katello-server-ca.crt
。更新证书的记录:
# update-ca-trust extract
清理镜像:
# systemctl stop rsyslog # systemctl stop auditd # package-cleanup --oldkernels --count=1 # dnf 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
脚本:# rm -f /etc/sysconfig/network-scripts/ifcfg-ens* # rm -f /etc/sysconfig/network-scripts/ifcfg-eth*
删除 SSH 主机密钥:
# rm -f /etc/ssh/ssh_host_*
删除 root 用户的 SSH 历史记录:
# rm -rf ~root/.ssh/known_hosts
删除 root 用户的 shell 历史记录:
# rm -f ~root/.bash_history # unset HISTFILE
- 从此虚拟机创建镜像。
- 将您的镜像添加到 Satellite。