搜索

11.7. 使用 VMware vSphere Cloud-init 和 Userdata 模板进行置备

download PDF

您可以将 VMware 与 Cloud-initUserdata 模板搭配使用,将用户数据插入到新的虚拟机中,进行进一步的 VMware 自定义,并让 VMware 托管的虚拟机重新调用 Satellite。

您可以使用相同的步骤在卫星中设置 VMware 计算资源,对工作流进行了一些修改。

VMware cloud-init 调配概述

ProvisioningUserData Sequence

当您在 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 服务,虚拟机总是调用卫星,即使您将虚拟机注册到胶囊。确保配置端口和防火墙设置以打开任何必要的连接。

有关端口和防火墙要求的更多信息,请参阅安装胶囊服务器 中的 安装卫星 和端口和 端口和 防火墙要求中的端口和防火墙要求

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

  1. 在 Satellite Web UI 中,进入 Hosts > Operating Systems,然后选择您要用于置备的操作系统。
  2. Template 选项卡。
  3. Cloud-init 模板 列表中,选择 Cloudinit default
  4. User data template 列表中,选择 UserData open-vm-tools
  5. 单击 Submit 以保存更改。

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

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

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

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

如果您有带有 cloud-init 的镜像,您仍需要按照此流程启用 cloud-init 与 Satellite 通信,因为 cloud-init 会被默认禁用。

  1. 在用于创建镜像的虚拟机上,安装 cloud-initopen-vm-toolsperl

    # yum -y install cloud-init open-vm-tools perl
  2. cloud-init 创建配置文件:

    # vi /etc/cloud/cloud.cfg.d/example_cloud-init_config.cfg
  3. example_cloud_init_config.cfg 文件中添加以下信息:

    datasource_list: [NoCloud]
    datasource:
      NoCloud:
        seedfrom: https://satellite.example.com/userdata/
    EOF
  4. 为镜像启用 CA 证书:

    # update-ca-trust enable
  5. 从 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
  6. 要更新证书记录,请输入以下命令:

    # update-ca-trust extract
  7. 使用以下命令清理镜像:

    # systemctl stop rsyslog
    # systemctl stop auditd
    # package-cleanup --oldkernels --count=1
    # yum clean all
  8. 使用以下命令减少日志空间、删除旧日志和截断日志:

    # 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
  9. 删除 udev 硬件规则:

    # rm -f /etc/udev/rules.d/70*
  10. ifcfg 脚本中删除 uuid

    # cat > /etc/sysconfig/network-scripts/ifcfg-ens192 <<EOM
    DEVICE=ens192
    ONBOOT=yes
    EOM
  11. 删除 SSH 主机密钥:

    # rm -f /etc/ssh/SSH_keys
  12. 删除 root 用户的 shell 历史记录:

    # rm -f ~root/.bash_history
    # unset HISTFILE
  13. 删除 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))'
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.