10.7. 使用 VMware cloud-init 和 userdata 模板进行置备


您可以将 VMware 与 Cloud-initUserdata 模板一起使用,将用户数据插入到新虚拟机中,以进行进一步的 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

先决条件

UserdataCloud-init 模板与操作系统关联

  1. 在 Satellite Web UI 中,进入到 Hosts > Templates > Provisioning Templates
  2. 搜索 CloudInit 默认模板,再单击其名称。
  3. 单击 关联 选项卡。
  4. 选择模板应用的所有操作系统,然后单击 Submit
  5. UserData open-vm-tools 模板重复上述步骤。
  6. 导航到 Hosts > Provisioning Setup > Operating Systems
  7. 选择您要用于置备的操作系统。
  8. Templates 选项卡。
  9. Cloud-init 模板列表中,选择 CloudInit default
  10. User data template 列表中,选择 UserData open-vm-tools
  11. Submit 以保存更改。

准备镜像以使用 cloud-init 模板

要准备镜像,您必须首先在虚拟机上配置所需的设置,然后将其保存为要在 Satellite 中使用的镜像。

要使用 cloud-init 模板进行调配,您必须配置虚拟机,以便安装、启用 cloud-init,并配置为调用回 Satellite 服务器。

为了安全起见,您必须安装 CA 证书以使用 HTTPS 进行所有通信。此流程包括清理虚拟机的步骤,以便不会向您用于置备的镜像进行不需要的信息传输。

如果您的镜像带有 cloud-init,则仍必须按照以下步骤使 cloud-init 与 Satellite 通信,因为默认禁用了 cloud-init

流程

  1. 在用于创建镜像的虚拟机上,安装所需的软件包:

    # dnf install cloud-init open-vm-tools perl-interpreter perl-File-Temp
    Copy to Clipboard Toggle word wrap

    在 Red Hat Enterprise Linux 9 中,您还需要 dbus-tools 软件包才能进行网络连接。

  2. 通过 cloud-init 禁用网络配置:

    # cat << EOM > /etc/cloud/cloud.cfg.d/01_network.cfg
    network:
      config: disabled
    EOM
    Copy to Clipboard Toggle word wrap
  3. 配置 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
    Copy to Clipboard Toggle word wrap

    如果要通过胶囊服务器进行调配,请在 seedfrom 选项中使用 Capsule 服务器的 URL,如 https:// Capsule.example.com:9090/userdata/

  4. 配置要在 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
    Copy to Clipboard Toggle word wrap
  5. 为镜像启用 CA 证书:

    # update-ca-trust enable
    Copy to Clipboard Toggle word wrap
  6. 从 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
    Copy to Clipboard Toggle word wrap

    如果要通过胶囊服务器调配,请从胶囊服务器下载 文件,如 https://capsule.example.com/pub/katello-server-ca.crt

  7. 更新证书的记录:

    # update-ca-trust extract
    Copy to Clipboard Toggle word wrap
  8. 停止 rsyslogauditd 服务:

    # systemctl stop rsyslog
    # systemctl stop auditd
    Copy to Clipboard Toggle word wrap
  9. 清理镜像中的软件包:

    • 在 Red Hat Enterprise Linux 8 及更新的版本中:

      # dnf remove --oldinstallonly
      Copy to Clipboard Toggle word wrap
    • 在 Red Hat Enterprise Linux 7 及更早版本中:

      # package-cleanup --oldkernels --count=1
      # dnf clean all
      Copy to Clipboard Toggle word wrap
  10. 减少日志空间、删除旧日志和截断日志:

    # 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
    Copy to Clipboard Toggle word wrap
  11. 删除 udev 硬件规则:

    # rm -f /etc/udev/rules.d/70*
    Copy to Clipboard Toggle word wrap
  12. 删除与现有网络配置相关的 ifcfg 脚本:

    # rm -f /etc/sysconfig/network-scripts/ifcfg-ens*
    # rm -f /etc/sysconfig/network-scripts/ifcfg-eth*
    Copy to Clipboard Toggle word wrap
  13. 删除 SSH 主机密钥:

    # rm -f /etc/ssh/ssh_host_*
    Copy to Clipboard Toggle word wrap
  14. 删除 root 用户的 SSH 历史记录:

    # rm -rf ~root/.ssh/known_hosts
    Copy to Clipboard Toggle word wrap
  15. 删除 root 用户的 shell 历史记录:

    # rm -f ~root/.bash_history
    # unset HISTFILE
    Copy to Clipboard Toggle word wrap
  16. 从此虚拟机创建镜像。
  17. 将您的镜像添加到 Satellite 中。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat