使用 Hammer CLI 工具
使用 Hammer (Satellite 命令行工具)管理 Satellite 或开发自定义脚本
摘要
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。让我们了解如何改进它。
使用 Red Hat Jira 中的 Create Issue 表单提供您的反馈。JIRA 问题是在 Red Hat Satellite Jira 项目中创建的,您可以在其中跟踪其进度。
先决条件
- 确保您已注册了 红帽帐户。
流程
- 单击以下链接: 创建问题。如果 Jira 显示登录错误,则登录并在您重定向到表单后继续。
- 完成 Summary 和 Description 字段。在 Description 字段中,包含文档 URL、章节号以及问题的详细描述。不要修改表单中的任何其他字段。
- 点 Create。
第 1 章 Hammer 简介 复制链接链接已复制到粘贴板!
Hammer 是 Red Hat Satellite 6 提供的一个强大的命令行工具。您可以使用 Hammer 通过 CLI 命令或 shell 脚本中的自动化来配置和管理 Satellite 服务器。Hammer 还提供交互式 shell。
1.1. 与 Satellite Web UI 相比的 Hammer 复制链接链接已复制到粘贴板!
与浏览 Satellite Web UI 时,使用 Hammer 可能会导致与 Satellite 服务器更快速的交互,因为环境变量和别名等常见 shell 功能是您的处理。您还可以将 Hammer 命令合并到可重复使用的脚本中,以自动化各种复杂性的任务。Hammer 命令的输出可以重定向到其他工具,从而能够与现有环境集成。您可以在运行 Red Hat Satellite 的基础操作系统上直接发出 Hammer 命令。
需要访问 Satellite 服务器上的基本操作系统来发布 Hammer 命令,这可能会限制与 Satellite Web UI 相比的潜在用户数量。虽然 Hammer 和 Satellite Web UI 之间的奇偶校验几乎已经完成,但 Satellite Web UI 具有开发优先级,并可以提前选择新引入的功能。
1.2. hammer 与 Satellite API 相比 复制链接链接已复制到粘贴板!
对于许多任务,Hammer 和 Satellite API 都同样适用。Hammer 可用作 Satellite API 的人友好界面,例如在脚本中应用 API 调用前测试对 API 调用的响应(使用 -d 选项检查 Hammer 发布的 API 调用,如 hammer -d 机构列表)。API 中的更改会自动反映在 Hammer 中,而使用 API 的脚本必须直接手动更新。
在后台,每个 Hammer 命令首先建立到 API 的绑定,然后发送请求。这在按顺序执行大量 Hammer 命令时可能会有性能影响。相反,与 API 直接通信的脚本只建立一次绑定。
如需更多信息 ,请参阅使用 Satellite REST API。
1.3. 获得帮助 复制链接链接已复制到粘贴板!
执行以下方法来查看 hammer 选项和子命令的完整列表:
hammer --help
$ hammer --help
use --help 检查任何子命令,例如:
hammer organization --help
$ hammer organization --help
您可以使用 grep 搜索帮助输出,或者将其重定向到文本查看器,例如:
hammer | less
$ hammer | less
第 2 章 安装独立 Hammer 复制链接链接已复制到粘贴板!
您可以在没有安装 Satellite 服务器的主机上安装 Hammer,并使用它从主机连接到远程 Satellite。
先决条件
- 确保主机注册到 Satellite 服务器或胶囊服务器。如需更多信息, 请参阅管理主机中的注册主机 。
确保在 Satellite 服务器上启用并同步以下软件仓库:
- rhel-8-for-x86_64-baseos-rpms
- rhel-8-for-x86_64-appstream-rpms
- satellite-utils-6.16-for-rhel-8-x86_64-rpms
如需更多信息 ,请参阅管理内容中的 同步存储库。
流程
- 在主机上启用所需的存储库。如需更多信息, 请参阅管理主机中的在主机上 启用存储库。
启用以下模块:
dnf module enable satellite-utils:el8
# dnf module enable satellite-utils:el8Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装 Hammer CLI:
dnf install satellite-cli
# dnf install satellite-cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/etc/hammer/cli.modules.d/foreman.yml文件中的:host:条目设置为 Satellite URL::host: 'https://satellite.example.com'
:host: 'https://satellite.example.com'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 hammer 身份验证 复制链接链接已复制到粘贴板!
在输入 hammer 命令时,Satellite 用户必须证明其对 Red Hat Satellite 的身份。Hammer 命令可以手动运行或自动运行。在这两种情况下,hammer 都需要 Satellite 凭证进行身份验证。hammer 验证方法有三种:
- Hammer 身份验证会话
- 将凭证存储在 hammer 配置文件中
- 为每个 hammer 命令提供凭证
在自动运行命令时,建议使用 hammer 配置文件方法。例如,从 cron 任务运行 Satellite 维护命令。手动运行命令时,红帽建议使用 hammer 身份验证会话,并为每个命令提供凭证。
3.1. 使用配置文件验证 Hammer 复制链接链接已复制到粘贴板!
如果您使用 --foreman-initial-admin-username and-- foreman-initial-admin-password 选项运行 Satellite 安装,则您输入的凭证会存储在 ~/.hammer/cli.modules.d/foreman.yml 配置文件中,hammer 不会满足您的凭证。
您还可以手动将凭证添加到 ~/.hammer/cli.modules.d/foreman.yml 配置文件中:
:foreman: :username: 'username' :password: 'password'
:foreman:
:username: 'username'
:password: 'password'
仅在 hammer 配置文件中对缩进使用空格,不要使用制表符。
如果在 Satellite 服务器上更改凭证,您必须手动更新配置文件。安装程序不会覆盖配置文件。
3.2. 使用 CLI 选项验证 Hammer 复制链接链接已复制到粘贴板!
如果您没有在 ~/.hammer/cli.modules.d/foreman.yml 配置文件中保存 Satellite 凭证,则 hammer 每次输入一个命令时都会提示您输入它们。您可以在执行命令时指定凭证,如下所示:
hammer -u username -p password subcommands
$ hammer -u username -p password subcommands
本指南中的示例假定您已在配置文件中保存了凭证,或使用 hammer 身份验证会话。
3.3. 使用会话验证 Hammer 复制链接链接已复制到粘贴板!
hammer 身份验证会话是一个存储凭证的缓存,您必须在会话开始时提供一次。这个方法适合连续运行多个 hammer 命令,例如包含 hammer 命令的脚本。在这种情况下,您将输入一次 Satellite 凭据,脚本将按预期运行。通过使用 hammer 身份验证会话,您可以避免将凭证存储在脚本本身中,并在 ~/.hammer/cli.modules.d/foreman.yml hammer 配置文件中存储。
参阅有关如何使用会话的说明:
要启用会话,将
:use_sessions: true添加到~/.hammer/cli.modules.d/foreman.yml文件中::foreman: :use_sessions: true
:foreman: :use_sessions: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,如果您启用会话,则在配置文件中存储的凭证将被忽略。
要启动会话,请输入以下命令:
hammer auth login
# hammer auth loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 会提示您输入 Satellite 凭据并登录。在会话过期之前,不会再次提示您输入凭据。
会话的默认长度为 60 分钟。您可以更改时间以符合您的偏好。例如,要将它改为 30 分钟,请输入以下命令:
hammer settings set --name idle_timeout --value 30 Setting [idle_timeout] updated to [30]
# hammer settings set --name idle_timeout --value 30 Setting [idle_timeout] updated to [30]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看会话的当前状态,请输入以下命令:
hammer auth status
# hammer auth statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要结束会话,请输入以下命令:
hammer auth logout
# hammer auth logoutCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 配置 Hammer 复制链接链接已复制到粘贴板!
全局 hammer 配置的默认位置是:
-
/etc/hammer/cli_config.yml 用于常规
hammer设置 - /etc/hammer/cli.modules.d/ 用于 CLI 模块配置文件
您可以为 hammer (在 ~/.hammer/cli_config.yml中)以及 CLI 模块(在 ~/.hammer/cli.modules.d/下相应的 .yml 文件中)设置特定于用户的指令。
要查看载入的配置文件以及载入模块版本的顺序,请使用:
hammer -d --version
$ hammer -d --version
加载许多 CLI 模块的配置可能会减慢执行 hammer 命令的速度。在这种情况下,请考虑禁用没有定期使用的 CLI 模块。
除了保存凭证外,您还可以在 第 3 章 hammer 身份验证 所述,您可以在 ~/.hammer/ 配置目录中设置几个其他选项。例如,您可以更改默认日志级别,并使用 ~/.hammer/cli_config.yml 中的以下指令设置日志轮转。这些指令仅影响当前用户,不会全局应用。
:log_level: 'warning' :log_size: 5 #in MB
:log_level: 'warning'
:log_size: 5 #in MB
同样,您可以配置用户界面设置。例如,通过更改以下行来设置 Hammer 输出中每个请求显示的条目数:
:per_page: 30
:per_page: 30
此设置等同于 -per-page Hammer 选项。
4.1. 设置默认组织和位置上下文 复制链接链接已复制到粘贴板!
许多 hammer 命令都是特定于组织的。您可以为 hammer 命令设置默认机构和位置,以便不需要在每次使用- organization 和- location 选项指定它们。
当您主要管理单个机构时,指定默认机构很有用,因为它会缩短命令。但是,当您切换到其他机构时,您必须使用 hammer 和 the- organization 选项来指定它。
流程
设置默认机构:
hammer defaults add --param-name organization \ --param-value "Your_Organization"
# hammer defaults add --param-name organization \ --param-value "Your_Organization"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
hammer organization list命令找到您的机构名称。可选:设置默认位置:
hammer defaults add --param-name location \ --param-value "Your_Location"
# hammer defaults add --param-name location \ --param-value "Your_Location"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
hammer location list命令查找位置的名称。
验证
查看当前指定的默认设置:
hammer defaults list
# hammer defaults listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. 增加 Hammer 的日志记录级别 复制链接链接已复制到粘贴板!
您可以在 ~/.hammer/log/hammer.log 中找到日志。
流程
-
在
/etc/hammer/cli_config.yml中,将:log_level:选项设置为debug:
:log_level: 'debug'
:log_level: 'debug'
第 5 章 使用交互式 Hammer shell 复制链接链接已复制到粘贴板!
您可以通过交互式 shell 发出 hammer 命令。要启动 shell,请运行以下命令:
hammer shell
$ hammer shell
在 shell 中,您可以直接输入子命令而无需键入 "hammer",这对在脚本中使用命令之前非常有用。要退出 shell,请键入 exit 或按 Ctrl + D。
第 6 章 格式化 Hammer 输出 复制链接链接已复制到粘贴板!
您可以修改 hammer 命令的输出的默认格式,以简化其他命令行工具和应用程序处理此输出。例如,要列出带有自定义分隔符的 CSV 格式的机构(本例中为分号),请使用以下命令:
hammer --csv --csv-separator ";" organization list
$ hammer --csv --csv-separator ";" organization list
CSV 格式的输出很有用,例如您需要解析 ID 并在 for 循环中使用它们。
其它格式化选项可以通过 the- output 选项提供 :
hammer --output output_format organization list
$ hammer --output output_format organization list
将 output_format 替换为以下之一:
-
table- 以人类可读的表(默认)的形式生成输出。 -
base- 以键值对的形式生成输出。 -
yaml- 以 YAML 格式生成输出。 -
csv- 以 Comma Separated Values 格式生成输出。要定义自定义分隔符,请使用--csv和-csv-separator选项。 -
JSON- 以 JavaScript 对象表示法格式生成输出。 -
silent- 会阻止输出。
第 7 章 隐藏 Hammer 命令的标头输出 复制链接链接已复制到粘贴板!
使用任何 hammer 命令时,您可以选择输出中的隐藏标头。如果要在自定义脚本中管道或使用输出,隐藏输出会很有用。
-
要隐藏标头输出,请将
--no-headers选项添加到任何 hammer 命令中。
第 8 章 将 JSON 用于复杂参数 复制链接链接已复制到粘贴板!
JSON 是描述复杂参数的首选方法。
JSON 格式的内容示例如下所示:
第 9 章 使用 Hammer 对 Satellite 进行故障排除 复制链接链接已复制到粘贴板!
您可以使用 hammer ping 命令检查核心 Satellite 服务的状态。与 satellite-maintain service status 命令一起,这有助于诊断 Satellite 问题并进行故障排除。如果所有服务都如预期运行,输出类似如下:
第 10 章 hammer cheat sheet 复制链接链接已复制到粘贴板!
Hammer 是 Red Hat Satellite 6 提供的命令行工具。您可以使用 Hammer 使用 CLI 命令或 shell 脚本自动化来配置和管理 Satellite 服务器。以下备忘单提供了重要 Hammer 命令的概述:
10.1. 常规信息 复制链接链接已复制到粘贴板!
| 子命令 | 描述和任务 |
|---|---|
|
| 显示 hammer 命令和选项,在子命令后附加 以获得更多信息 |
| org |
此设置是特定于机构的、附加 hammer defaults add \ --param-name organization_id \ --param-value org_ID
|
| loc |
此设置是特定于位置、附加 hammer defaults add \ --param-name location_id \ --param-value loc_ID
|
注: 这个 cheat sheet 假设将凭证保存在 ~/.hammer/cli_config.yml 中。如需更多信息,请参阅 第 3 章 hammer 身份验证。
10.2. 机构、位置和存储库 复制链接链接已复制到粘贴板!
| 子命令 | 描述和任务 |
|---|---|
|
| 创建机构: hammer organization create \ --name org_name
列出机构: hammer organization list
|
|
| 查看机构的选项 |
|
| 上传订阅清单: hammer subscription upload \ --file path
|
|
| 启用存储库: hammer repository-set enable \ --product prod_name \ --basearch base_arch \ --releasever rel_v \ --name repo_name
|
|
| 同步存储库: hammer repository synchronize \ --product prod_name \ --name repo_name
创建自定义存储库: 将内容上传到自定义存储库: hammer repository upload-content \ --product prod_name \ --id repo_id \ --path path_to_dir
|
10.3. 内容生命周期 复制链接链接已复制到粘贴板!
| 子命令 | 描述和任务 |
|---|---|
|
| 创建生命周期环境: hammer lifecycle-environment create \ --name env_name --description env_desc --prior prior_env_name
列出生命周期环境: hammer lifecycle-environment list
|
|
| 创建内容视图: hammer content-view create \ --name cv_n \ --repository-ids repo_ID1,... \ --description cv_description
在内容视图中添加软件仓库: hammer content-view add-repository \ --name cv_n \ --repository-id repo_ID
将 Puppet 模块添加到内容视图中: hammer content-view puppet-module add \ --content-view cv_n \ --name module_name
发布内容视图: hammer content-view publish \ --id cv_ID
提升内容视图: hammer content-view version promote \ --content-view cv_n \ --to-lifecycle-environment env_name
内容视图的增量更新: hammer content-view version incremental-update \ --content-view-version-id cv_ID \ --packages pkg_n1,... \ --lifecycle-environment-ids env_ID1,...
|
10.4. 置备环境 复制链接链接已复制到粘贴板!
| 子命令 | 描述和任务 |
|---|---|
|
| 创建域: hammer domain create \ --name domain_name
|
|
| 添加子网: |
|
| 创建计算资源: hammer compute-resource create \ --name cr_name \ --organization-ids org_ID1,... \ --location-ids loc_ID1,... \ --provider provider_name
|
|
| 添加安装介质: hammer medium create \ --name med_name \ --path path_to_medium
|
|
| 添加分区表: hammer partition-table create \ --name tab_name \ --path path_to_file \ --os-family os_family
|
|
| 添加置备模板: hammer template create \ --name tmp_name \ --file path_to_template
|
|
| 添加操作系统: hammer os create \ --name os_name \ --version version_num
|
10.5. 激活码 复制链接链接已复制到粘贴板!
| 子命令 | 描述和任务 |
|---|---|
|
| 创建激活码: hammer activation-key create \ --name ak_name \ --content-view cv_n \ --lifecycle-environment lc_name
在激活码中添加订阅: hammer activation-key add-subscription \ --id ak_ID \ --subscription-id sub_ID
|
10.6. 用户和权限 复制链接链接已复制到粘贴板!
| 子命令 | 描述和任务 |
|---|---|
|
| 创建用户: hammer user create \ --login user_name \ --mail user_mail \ --auth-source-id 1 \ --organization-ids org_ID1,org_ID2,...
为用户添加角色: hammer user add-role \ --id user_id \ --role role_name
|
|
| 创建用户组: hammer user-group create \ --name ug_name
为用户组添加角色: hammer user-group add-role \ --id ug_id \ --role role_name
|
|
| 创建角色: hammer role create \ --name role_name
|
|
| 创建过滤器并将其添加到角色中: hammer filter create \ --role role_name \ --permission-ids perm_ID1,perm_ID2,...
|
10.7. 勘误 复制链接链接已复制到粘贴板!
| 子命令 | 描述和任务 |
|---|---|
|
| 列出勘误: hammer erratum list
按 CVE 查找勘误: hammer erratum list --cve CVE
检查勘误: hammer erratum info --id err_ID
|
|
| 列出适用于主机的勘误: hammer host errata list \ --host host_name
将勘误应用到主机: hammer host errata apply \ --host host_name \ --errata-ids err_ID1,err_ID2,...
|
10.8. 主机 复制链接链接已复制到粘贴板!
| 子命令 | 描述和任务 |
|---|---|
|
| 创建主机组: 在主机组中添加激活码: hammer hostgroup set-parameter \ --hostgroup "hg_name" \ --name "kt_activation_keys" \ --value key_name
|
|
| 创建主机(从主机组继承参数): 从主机组中删除主机: hammer host update --name host_name --hostgroup NIL
|
|
| 为远程执行添加作业模板: hammer job-template create \ --file path \ --name template_name \ --provider-type SSH \ --job-category category_name
|
|
| 启动远程作业: hammer job-invocation create \ --job-template template_name \ --inputs key1=value,... \ --search-query query
监控远程作业: hammer job-invocation output \ --id job_id --host host_name
|
10.9. 任务 复制链接链接已复制到粘贴板!
| 子命令 | 描述和任务 |
|---|---|
|
| 列出所有任务: hammer task list Monitor progress of a running task: hammer task progress \ --id task_ID
|
第 11 章 hammer 参考 复制链接链接已复制到粘贴板!
您可以查看 Hammer 语句的使用。
本参考版本为 Satellite 6.16 发布了 Hammer 组件的版本。