3.4. 使用启动脚本注册主机
弃用了 使用 第 3.3 节 “使用全局注册注册主机” 替代。
使用 bootstrap 脚本自动执行内容注册和 Puppet 配置。您可以使用 bootstrap 脚本注册新主机,或者从 RHN、SAM、RHSM 或其他 Red Hat Satellite 实例迁移现有主机。
katello-client-bootstrap
软件包默认安装在 Satellite 服务器的基本操作系统上。bootstrap.py
脚本安装在 /var/www/html/pub/
目录中,使其可供 satellite.example.com/pub/bootstrap.py
的主机使用。该脚本包含 /usr/share/doc/katello-client-bootstrap-版本/README.md
文件中的文档。
要使用 bootstrap 脚本,您必须在主机上安装它。由于脚本只需要一次,并且只对 root
用户来说,您可以将其放在 /root
或 /usr/local/sbin
中,并在使用后将其删除。这个过程使用 /root
。
先决条件
-
您有一个具有运行 bootstrap 脚本所需的权限的 Satellite 用户。此流程中的示例指定
admin
用户。如果安全策略不接受,创建一个带有所需最小权限的新角色,并将其添加到将运行脚本的用户中。更多信息请参阅 第 3.4.1 节 “为引导脚本设置权限”。 - 为启用了 Satellite 客户端 6 存储库的主机有一个激活码。有关配置激活码的详情,请参考内容管理指南中的管理激活码。
- 您已创建了主机组。有关创建主机组的详情,请参考 第 2.7 节 “创建主机组”。
Puppet 注意事项
如果主机组与一个生产
环境中创建的 Puppet 环境关联,则 Puppet 在从该主机组注册主机时无法检索 Puppet CA 证书。
要创建要与主机组关联的适当 Puppet 环境,请按照以下步骤操作:
手动创建目录:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir /etc/puppetlabs/code/environments/example_environment
# mkdir /etc/puppetlabs/code/environments/example_environment
- 在 Satellite Web UI 中,导航到 Configure > Environments,再点 Import environment from。按钮名称包括内部或外部 Capsule 的 FQDN。
- 选择创建的目录,再单击 Update。
流程
-
以
root
用户身份登录主机。 下载脚本:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -O http://satellite.example.com/pub/bootstrap.py
# curl -O http://satellite.example.com/pub/bootstrap.py
使脚本可执行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod +x bootstrap.py
# chmod +x bootstrap.py
通过查看帮助文本确认脚本可以执行:
在 Red Hat Enterprise Linux 8 中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/platform-python bootstrap.py -h
# /usr/libexec/platform-python bootstrap.py -h
在其他 Red Hat Enterprise Linux 版本中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./bootstrap.py -h
# ./bootstrap.py -h
输入适合您环境的 bootstrap 命令。
对于
--server
选项,指定 Satellite 服务器的 FQDN 或 Capsule 服务器。对于--location
、--organization
和--hostgroup
选项,请使用带引号的名称,而不是标签,作为选项的参数。有关高级用例,请参阅 第 3.4.2 节 “高级引导脚本配置”。在 Red Hat Enterprise Linux 8 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key
# /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key
在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key
# ./bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key
输入您使用
--login
选项指定的 Satellite 用户的密码。脚本将进度通知发送到 stdout。
-
脚本提示时,批准主机的 Puppet 证书。在 Satellite Web UI 中,导航到 Infrastructure > Capsules,并找到您使用
--server
选项指定的 Satellite 或 Capsule 服务器。 - 从 Actions 列中的列表中,选择 Certificates。
- 在 Actions 列中,单击 Sign 以批准主机的 Puppet 证书。
- 返回到主机,以查看 bootstrap 过程完成的其余部分。
- 在 Satellite Web UI 中,导航到 Hosts > All hosts,并确保主机连接到正确的主机组。
可选:主机注册完成后,删除脚本:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rm bootstrap.py
# rm bootstrap.py
3.4.1. 为引导脚本设置权限
使用这个流程配置运行 bootstrap 脚本所需的权限的 Satellite 用户。要使用 CLI 而不是 Satellite Web UI,请参阅 CLI 过程。
流程
- 在 Satellite Web UI 中,导航到 Administer > Users。
- 点所需的用户名来选择现有用户。此时会打开一个新窗格,其中包含用于修改所选用户信息的选项卡。或者,为运行此脚本的目的创建新用户。
- 点 Roles 选项卡。
从 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
-
- 点 Submit。
CLI 过程
使用 bootstrap 脚本所需的最小权限创建角色。这个示例创建一个名为 Bootstrap 的角色:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ROLE='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
将新角色分配给现有用户:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow hammer user add-role --id user_id --role Bootstrap
# hammer user add-role --id user_id --role Bootstrap
或者,您可以创建新用户,并为他们分配此新角色。有关使用 Hammer 创建用户的更多信息,请参阅管理 Red Hat Satellite 指南中的管理用户和角色。
3.4.2. 高级引导脚本配置
本节包含更多使用 bootstrap 脚本注册或迁移主机的示例。
这些示例指定了 admin
Satellite 用户。如果安全策略不接受此功能,请使用 bootstrap 脚本所需的最小权限创建新角色。更多信息请参阅 第 3.4.1 节 “为引导脚本设置权限”。
3.4.2.1. 将主机从一个 Satellite 迁移到另一个 Satellite
使用带有 --force
的脚本从旧的 Satellite 中删除 katello-ca-consumer
the 软件包,并在新 Satellite 上安装 katello-ca-consumer
the 软件包。
流程
在 Red Hat Enterprise Linux 8 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --force
# /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --force
在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --force
# bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --force
3.4.2.2. 将主机从红帽网络(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 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --legacy-purge \ --legacy-login rhn-user
# /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --legacy-purge \ --legacy-login rhn-user
在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --legacy-purge \ --legacy-login rhn-user
# bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --legacy-purge \ --legacy-login rhn-user
3.4.2.3. 在没有 Puppet 的情况下将主机注册到 Satellite
默认情况下,bootstrap 脚本为内容管理和配置管理配置主机。如果您有一个现有的配置管理系统,且不想在主机上安装 Puppet,请使用 --skip-puppet
。
流程
在 Red Hat Enterprise Linux 8 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --skip-puppet
# /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --skip-puppet
在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --skip-puppet
# bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --skip-puppet
3.4.2.4. 仅将主机注册到 Satellite 以进行内容管理
要将系统注册为内容主机,并省略调配和配置管理功能,请使用 --skip-foreman
。
流程
在 Red Hat Enterprise Linux 8 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/platform-python bootstrap.py \ --server satellite.example.com \ --organization="Example Organization" \ --activationkey=activation_key \ --skip-foreman
# /usr/libexec/platform-python bootstrap.py \ --server satellite.example.com \ --organization="Example Organization" \ --activationkey=activation_key \ --skip-foreman
在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow bootstrap.py --server satellite.example.com \ --organization="Example Organization" \ --activationkey=activation_key \ --skip-foreman
# bootstrap.py --server satellite.example.com \ --organization="Example Organization" \ --activationkey=activation_key \ --skip-foreman
3.4.2.5. 更改 Bootstrap 脚本使用的方法下载 Consumer 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 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --download-method https
# /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --download-method https
在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --download-method https
# bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --download-method https
3.4.2.6. 为 Satellite 提供主机的 IP 地址
在一个接口上有多个接口或多个 IP 地址的主机上,您可能需要覆盖 IP 地址的自动检测,并为 Satellite 提供特定的 IP 地址。使用 --ip
。
流程
在 Red Hat Enterprise Linux 8 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --ip 192.x.x.x
# /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --ip 192.x.x.x
在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --ip 192.x.x.x
# bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --ip 192.x.x.x
3.4.2.7. 在主机上启用远程执行
使用 --rex
和 --rex-user
启用远程执行,并为指定用户添加所需的 SSH 密钥。
流程
在 Red Hat Enterprise Linux 8 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --rex \ --rex-user root
# /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --rex \ --rex-user root
在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --rex \ --rex-user root
# bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --rex \ --rex-user root
3.4.2.8. 在注册期间为主机创建域
要创建主机记录,在运行该脚本之前,Satellite 中的 DNS 域需要存在于 Satellite 中。如果域不存在,则使用 --add-domain
添加它。
流程
在 Red Hat Enterprise Linux 8 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --add-domain
# /usr/libexec/platform-python bootstrap.py \ --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --add-domain
在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --add-domain
# bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --add-domain
3.4.2.9. 为主机提供替代 FQDN
如果主机的主机名不是 FQDN,或者不是 RFC 兼容的(包含下划线等字符),该脚本将在主机名验证阶段失败。如果您无法将主机更新为使用 Satellite 可接受的 FQDN,您可以使用 bootstrap 脚本指定替代 FQDN。
流程
使用hammer 将
create_new_host_when_facts_are_uploaded
和create_new_host_when_report_is_uploaded
设置为 false :Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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
使用
--fqdn
指定将报告给 Satellite 的 FQDN:在 Red Hat Enterprise Linux 8 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/platform-python bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --fqdn node100.example.com
# /usr/libexec/platform-python bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --fqdn node100.example.com
在 Red Hat Enterprise Linux 6 或 7 中,输入以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --fqdn node100.example.com
# bootstrap.py --login=admin \ --server satellite.example.com \ --location="Example Location" \ --organization="Example Organization" \ --hostgroup="Example Host Group" \ --activationkey=activation_key \ --fqdn node100.example.com