搜索

11.7. 使用 VMware cloud-init 和 userdata 模板进行配置

download PDF

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

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

图 11.1. VMware cloud-init 置备概述

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 模板进行调配,您必须配置虚拟机,以便安装、启用并配置为重新调用 Satellite 服务器。

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

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

流程

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

    # dnf install cloud-init open-vm-tools perl-interpreter perl-File-Temp
  2. 通过 cloud-init 禁用网络配置:

    # cat << EOM > /etc/cloud/cloud.cfg.d/01_network.cfg
    network:
      config: disabled
    EOM
  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

    如果要通过 Capsule 服务器置备,请在 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
  5. 为镜像启用 CA 证书:

    # update-ca-trust enable
  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

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

  7. 更新证书的记录:

    # update-ca-trust extract
  8. 清理镜像:

    # systemctl stop rsyslog
    # systemctl stop auditd
    # package-cleanup --oldkernels --count=1
    # dnf clean all
  9. 减少日志空间、删除旧的日志和截断日志:

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

    # rm -f /etc/udev/rules.d/70*
  11. 删除与现有网络配置相关的 ifcfg 脚本:

    # rm -f /etc/sysconfig/network-scripts/ifcfg-ens*
    # rm -f /etc/sysconfig/network-scripts/ifcfg-eth*
  12. 删除 SSH 主机密钥:

    # rm -f /etc/ssh/ssh_host_*
  13. 删除 root 用户的 SSH 历史记录:

    # rm -rf ~root/.ssh/known_hosts
  14. 删除 root 用户的 shell 历史记录:

    # rm -f ~root/.bash_history
    # unset HISTFILE
  15. 从此虚拟机创建镜像。
  16. 将您的镜像添加到 Satellite
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.