搜索

3.4. 使用启动脚本注册主机

download PDF

弃用了 使用 第 3.3 节 “使用全局注册注册主机” 替代。

使用 bootstrap 脚本来自动执行内容注册和 Puppet 配置。您可以使用 bootstrap 脚本注册新主机,或者将现有主机从 RHN、SAM、rhsm 或其他 Red Hat Satellite 实例迁移。

在卫星服务器的基本操作系统中默认安装 katello-client-bootstrap 软件包。bootstrap.py 脚本安装在 /var/www/html/pub/ 目录中,使它可用于 satellite.example.com/pub/bootstrap.py 上的主机。该脚本包含 /usr/share/doc/katello-client-bootstrap-version/README.md 文件中的文档。

要使用 bootstrap 脚本,您必须在主机上安装它。因为脚本只需要 once,且只适用于 root 用户,所以您可以将其放在 /root/usr/local/sbin 中,并在使用后将其删除。这个过程使用 /root

先决条件

  • 您有 Satellite 用户,具有运行 bootstrap 脚本所需的权限。此流程中的示例指定 admin 用户。如果您的安全策略不可接受,请创建一个具有最少权限的新角色,并将其添加到运行脚本的用户中。更多信息请参阅 第 3.4.1 节 “为 Bootstrap 脚本设置权限”
  • 您的主机有一个激活码,并启用了 Satellite Client 6 存储库。有关配置激活码的详情,请参考管理内容中的管理激活码
  • 您已创建了主机组。有关创建主机组的更多信息,请参阅 第 2.7 节 “创建主机组”

Puppet 注意事项

如果主机组与 Production 环境中创建的 Puppet 环境关联,则 Puppet 在从该主机组注册主机时无法检索 Puppet CA 证书。

要创建与主机组关联的适当 Puppet 环境,请按照以下步骤操作:

  1. 手动创建目录:

    # mkdir /etc/puppetlabs/code/environments/example_environment
  2. 在 Satellite Web UI 中,导航到 Configure > Environments,再点击 Import environment from。按钮名称包括内部或外部胶囊的 FQDN。
  3. 选择创建的目录,然后单击 更新

流程

  1. root 用户身份登录主机。
  2. 下载脚本:

    # curl -O http://satellite.example.com/pub/bootstrap.py
  3. 使脚本可执行:

    # chmod +x bootstrap.py
  4. 通过查看 help 文本确认脚本可以执行:

    • On Red Hat Enterprise Linux 8:

      # /usr/libexec/platform-python bootstrap.py -h
    • 在其他 Red Hat Enterprise Linux 版本中:

      # ./bootstrap.py -h
  5. 输入适合您环境的 bootstrap 命令。

    对于 --server 选项,指定卫星服务器的 FQDN 或胶囊服务器。对于 --location--organization--hostgroup 选项,请使用带引号名称(而非标签)作为选项的参数。有关高级用例,请参阅 第 3.4.2 节 “高级启动脚本配置”

    • 在 Red Hat Enterprise Linux 8 中输入以下命令:

      # /usr/libexec/platform-python bootstrap.py \
      --login=admin \
      --server satellite.example.com \
      --location="My_Location" \
      --organization="My_Organization" \
      --hostgroup="My_Host_Group" \
      --activationkey="My_Activation_Key"
    • 在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:

      # ./bootstrap.py --login=admin \
      --server satellite.example.com \
      --location="My_Location" \
      --organization="My_Organization" \
      --hostgroup="My_Host_Group" \
      --activationkey="My_Activation_Key"
  6. 输入您使用 --login 选项指定的 Satellite 用户的密码。

    该脚本会向 stdout 发送进度通知。

  7. 在脚本提示时,批准主机的 Puppet 证书。在 Satellite Web UI 中,导航到 Infrastructure > Capsules,并找到您使用 --server 选项指定的 Satellite 或 Capsule Server。
  8. Actions 列的列表中,选择 Certificates
  9. Actions 列中,单击 Sign 以批准主机的 Puppet 证书。
  10. 返回主机以查看 bootstrap 过程的剩余部分。
  11. 在 Satellite Web UI 中,导航到 Hosts > All hosts,并确保主机连接到正确的主机组。
  12. 可选:在主机注册完成后,删除脚本:

    # rm bootstrap.py

3.4.1. 为 Bootstrap 脚本设置权限

使用这个流程为 Satellite 用户配置运行 bootstrap 脚本所需的权限。要使用 CLI 而不是 Satellite Web UI,请参阅 CLI 过程

流程

  1. 在 Satellite Web UI 中,导航到 Administer > Users
  2. 点所需的用户名来选择现有用户。此时会打开一个新窗格,其中包含修改所选用户的信息的选项卡。或者,创建一个新用户,专门用于运行此脚本。
  3. Roles 选项卡。
  4. Roles 列表中选择 Edit hosts and Viewer

    重要

    Edit hosts 角色允许用户编辑和删除主机,并可添加主机。如果您的安全策略不接受它,请创建带有以下权限的新角色并将其分配给用户:

    • view_organizations
    • view_locations
    • view_domains
    • view_hostgroups
    • view_hosts
    • view_architectures
    • view_ptables
    • view_operatingsystems
    • create_hosts
  5. Submit

CLI 过程

  1. 创建具有 bootstrap 脚本所需的权限的角色。这个示例创建了一个名为 Bootstrap 的角色:

    # ROLE='Bootstrap'
    hammer role create --name "$ROLE"
    hammer filter create --role "$ROLE" --permissions view_organizations
    hammer filter create --role "$ROLE" --permissions view_locations
    hammer filter create --role "$ROLE" --permissions view_domains
    hammer filter create --role "$ROLE" --permissions view_hostgroups
    hammer filter create --role "$ROLE" --permissions view_hosts
    hammer filter create --role "$ROLE" --permissions view_architectures
    hammer filter create --role "$ROLE" --permissions view_ptables
    hammer filter create --role "$ROLE" --permissions view_operatingsystems
    hammer filter create --role "$ROLE" --permissions create_hosts
  2. 为现有用户分配新角色:

    # hammer user add-role --id user_id --role Bootstrap

    或者,您可以创建新用户,并为他们分配这个新角色。有关使用 Hammer 创建用户的更多信息,请参阅管理 Red Hat Satellite 中的管理用户和角色

3.4.2. 高级启动脚本配置

本节还有更多示例,它使用 bootstrap 脚本来注册或迁移主机。

警告

这些示例指定 admin Satellite 用户。如果您的安全策略无法接受此项,则创建一个具有 bootstrap 脚本所需最少权限的新角色。更多信息请参阅 第 3.4.1 节 “为 Bootstrap 脚本设置权限”

3.4.2.1. 将主机从一个 Satellite 迁移到另一个 Satellite

使用脚本及 --force 中移除旧 Satellite 中的 katello-ca-consumer-* 软件包,并在新 Satellite 上安装 katello-ca-consumer-* 软件包。

流程

  • 在 Red Hat Enterprise Linux 8 中输入以下命令:

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --force
  • 在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --force

3.4.2.2. 将主机从 Red Hat Network(RHN)或 Satellite 5 迁移到 Satellite

bootstrap 脚本检测到存在 /etc/syconfig/rhn/systemid,以及到 RHN 的有效连接作为系统注册到旧平台的指示。然后该脚本会调用 rhn-classic-migrate-to-rhsm 将系统从 RHN 迁移。默认情况下,因为审计原因,该脚本不会删除系统的旧配置集。要删除旧的配置集,请使用 --legacy-purge,并使用 --legacy-login 提供具有删除配置集的适当权限的用户帐户。提示时输入用户帐户密码。

流程

  • 在 Red Hat Enterprise Linux 8 中输入以下命令:

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --legacy-purge \
    --legacy-login rhn-user
  • 在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --legacy-purge \
    --legacy-login rhn-user

3.4.2.3. 在不使用 Puppet 的情况下将主机注册到 Satellite

默认情况下,bootstrap 脚本配置用于内容管理和配置管理的主机。如果您有一个现有的配置管理系统,且不想在主机上安装 Puppet,请使用 --skip-puppet

流程

  • 在 Red Hat Enterprise Linux 8 中输入以下命令:

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --skip-puppet
  • 在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --skip-puppet

3.4.2.4. 仅将主机注册到 Satellite 中以进行内容管理

要将系统注册为内容主机,并省略置备和配置管理功能,请使用 --skip-foreman

流程

  • 在 Red Hat Enterprise Linux 8 中输入以下命令:

    # /usr/libexec/platform-python bootstrap.py \
    --server satellite.example.com \
    --organization="My_Organization" \
    --activationkey="My_Activation_Key" \
    --skip-foreman
  • 在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:

    # bootstrap.py --server satellite.example.com \
    --organization="My_Organization" \
    --activationkey="My_Activation_Key" \
    --skip-foreman

3.4.2.5. 更改引导脚本使用的方法下载使用者 RPM

默认情况下,bootstrap 脚本使用 HTTP 从 http://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm 下载使用者 RPM。在某些环境中,您可能只想在主机和 Satellite 间进行 HTTPS。使用 --download-method 将下载方法从 HTTP 更改为 HTTPS。

流程

  • 在 Red Hat Enterprise Linux 8 中输入以下命令:

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --download-method https
  • 在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --download-method https

3.4.2.6. 为 Satellite 提供主机的 IP 地址

在一个接口上使用多个接口或多个 IP 地址的主机上,您可能需要覆盖 IP 地址的自动探测,并为 Satellite 提供特定的 IP 地址。使用 --ip

流程

  • 在 Red Hat Enterprise Linux 8 中输入以下命令:

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --ip 192.x.x.x
  • 在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --ip 192.x.x.x

3.4.2.7. 在主机上启用远程执行

使用 --rex--rex-user 启用远程执行并为指定用户添加所需的 SSH 密钥。

流程

  • 在 Red Hat Enterprise Linux 8 中输入以下命令:

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --rex \
    --rex-user root
  • 在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --rex \
    --rex-user root

3.4.2.8. 在注册过程中为主机创建域

要创建主机记录,在运行 脚本之前,主机的 DNS 域需要存在于 Satellite 中。如果域不存在,则使用 --add-domain 添加它。

流程

  • 在 Red Hat Enterprise Linux 8 中输入以下命令:

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --add-domain
  • 在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="My_Location" \
    --organization="My_Organization" \
    --hostgroup="My_Host_Group" \
    --activationkey="My_Activation_Key" \
    --add-domain

3.4.2.9. 为主机提供备用 FQDN

如果主机名不是 FQDN,或者与 RFC 不兼容(包含下划线等字符),脚本会在主机名验证阶段失败。如果无法将主机更新为使用 Satellite 接受的 FQDN,您可以使用 bootstrap 脚本指定备选 FQDN。

流程

  1. 使用 Hammer 将 create_new_host_when_facts_are_uploadedcreate_new_host_when_report_is_uploaded 设为 false:

    # hammer settings set \
    --name  create_new_host_when_facts_are_uploaded \
    --value false
    # hammer settings set \
    --name  create_new_host_when_report_is_uploaded \
    --value false
  2. 使用 --fqdn 指定将报告给 Satellite 的 FQDN:

    • 在 Red Hat Enterprise Linux 8 中输入以下命令:

      # /usr/libexec/platform-python bootstrap.py --login=admin \
      --server satellite.example.com \
      --location="My_Location" \
      --organization="My_Organization" \
      --hostgroup="My_Host_Group" \
      --activationkey="My_Activation_Key" \
      --fqdn node100.example.com
    • 在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:

      # bootstrap.py --login=admin \
      --server satellite.example.com \
      --location="My_Location" \
      --organization="My_Organization" \
      --hostgroup="My_Host_Group" \
      --activationkey="My_Activation_Key" \
      --fqdn node100.example.com
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.