使用 Hammer CLI 工具


Red Hat Satellite 6.16

使用 Hammer (Satellite 命令行工具)管理 Satellite 或开发自定义脚本

Red Hat Satellite Documentation Team

摘要

本文档论述了如何使用 Hammer CLI 工具配置和管理 Red Hat Satellite。

对红帽文档提供反馈

我们感谢您对我们文档的反馈。让我们了解如何改进它。

使用 Red Hat Jira 中的 Create Issue 表单提供您的反馈。JIRA 问题是在 Red Hat Satellite Jira 项目中创建的,您可以在其中跟踪其进度。

先决条件

流程

  1. 单击以下链接: 创建问题。如果 Jira 显示登录错误,则登录并在您重定向到表单后继续。
  2. 完成 SummaryDescription 字段。在 Description 字段中,包含文档 URL、章节号以及问题的详细描述。不要修改表单中的任何其他字段。
  3. 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
Copy to Clipboard Toggle word wrap

use --help 检查任何子命令,例如:

$ hammer organization --help
Copy to Clipboard Toggle word wrap

您可以使用 grep 搜索帮助输出,或者将其重定向到文本查看器,例如:

$ hammer | less
Copy to Clipboard Toggle word wrap

第 2 章 安装独立 Hammer

您可以在没有安装 Satellite 服务器的主机上安装 Hammer,并使用它从主机连接到远程 Satellite。

先决条件

流程

  1. 在主机上启用所需的存储库。如需更多信息, 请参阅管理主机中的在主机上 启用存储库
  2. 启用以下模块:

    # dnf module enable satellite-utils:el8
    Copy to Clipboard Toggle word wrap
  3. 安装 Hammer CLI:

    # dnf install satellite-cli
    Copy to Clipboard Toggle word wrap
  4. /etc/hammer/cli.modules.d/foreman.yml 文件中的 :host: 条目设置为 Satellite URL:

    :host: 'https://satellite.example.com'
    Copy to Clipboard Toggle word wrap

第 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'
Copy to Clipboard Toggle word wrap

仅在 hammer 配置文件中对缩进使用空格,不要使用制表符。

重要

如果在 Satellite 服务器上更改凭证,您必须手动更新配置文件。安装程序不会覆盖配置文件。

3.2. 使用 CLI 选项验证 Hammer

如果您没有在 ~/.hammer/cli.modules.d/foreman.yml 配置文件中保存 Satellite 凭证,则 hammer 每次输入一个命令时都会提示您输入它们。您可以在执行命令时指定凭证,如下所示:

$ hammer -u username -p password subcommands
Copy to Clipboard Toggle word wrap
注意

本指南中的示例假定您已在配置文件中保存了凭证,或使用 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
    Copy to Clipboard Toggle word wrap

    请注意,如果您启用会话,则在配置文件中存储的凭证将被忽略。

  • 要启动会话,请输入以下命令:

    # hammer auth login
    Copy to Clipboard Toggle word wrap

    会提示您输入 Satellite 凭据并登录。在会话过期之前,不会再次提示您输入凭据。

  • 会话的默认长度为 60 分钟。您可以更改时间以符合您的偏好。例如,要将它改为 30 分钟,请输入以下命令:

    # hammer settings set --name idle_timeout --value 30
    Setting [idle_timeout] updated to [30]
    Copy to Clipboard Toggle word wrap
  • 要查看会话的当前状态,请输入以下命令:

    # hammer auth status
    Copy to Clipboard Toggle word wrap
  • 要结束会话,请输入以下命令:

    # hammer auth logout
    Copy to Clipboard Toggle word wrap

第 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
Copy to Clipboard Toggle word wrap
注意

加载许多 CLI 模块的配置可能会减慢执行 hammer 命令的速度。在这种情况下,请考虑禁用没有定期使用的 CLI 模块。

除了保存凭证外,您还可以在 第 3 章 hammer 身份验证 所述,您可以在 ~/.hammer/ 配置目录中设置几个其他选项。例如,您可以更改默认日志级别,并使用 ~/.hammer/cli_config.yml 中的以下指令设置日志轮转。这些指令仅影响当前用户,不会全局应用。

:log_level: 'warning'
:log_size: 5 #in MB
Copy to Clipboard Toggle word wrap

同样,您可以配置用户界面设置。例如,通过更改以下行来设置 Hammer 输出中每个请求显示的条目数:

:per_page: 30
Copy to Clipboard Toggle word wrap

此设置等同于 -per-page Hammer 选项。

4.1. 设置默认组织和位置上下文

许多 hammer 命令都是特定于组织的。您可以为 hammer 命令设置默认机构和位置,以便不需要在每次使用- organization 和- location 选项指定它们。

当您主要管理单个机构时,指定默认机构很有用,因为它会缩短命令。但是,当您切换到其他机构时,您必须使用 hammer 和 the- organization 选项来指定它。

流程

  1. 设置默认机构:

    # hammer defaults add --param-name organization \
    --param-value "Your_Organization"
    Copy to Clipboard Toggle word wrap

    您可以使用 hammer organization list 命令找到您的机构名称。

  2. 可选:设置默认位置:

    # hammer defaults add --param-name location \
    --param-value "Your_Location"
    Copy to Clipboard Toggle word wrap

    您可以使用 hammer location list 命令查找位置的名称。

验证

  1. 查看当前指定的默认设置:

    # hammer defaults list
    Copy to Clipboard Toggle word wrap

4.2. 增加 Hammer 的日志记录级别

您可以在 ~/.hammer/log/hammer.log 中找到日志。

流程

  • /etc/hammer/cli_config.yml 中,将 :log_level: 选项设置为 debug
:log_level: 'debug'
Copy to Clipboard Toggle word wrap

第 5 章 使用交互式 Hammer shell

您可以通过交互式 shell 发出 hammer 命令。要启动 shell,请运行以下命令:

$ hammer shell
Copy to Clipboard Toggle word wrap

在 shell 中,您可以直接输入子命令而无需键入 "hammer",这对在脚本中使用命令之前非常有用。要退出 shell,请键入 exit 或按 Ctrl + D

第 6 章 格式化 Hammer 输出

您可以修改 hammer 命令的输出的默认格式,以简化其他命令行工具和应用程序处理此输出。例如,要列出带有自定义分隔符的 CSV 格式的机构(本例中为分号),请使用以下命令:

$ hammer --csv --csv-separator ";" organization list
Copy to Clipboard Toggle word wrap

CSV 格式的输出很有用,例如您需要解析 ID 并在 for 循环中使用它们。

其它格式化选项可以通过 the- output 选项提供

$ hammer --output output_format organization list
Copy to Clipboard Toggle word wrap

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 格式的内容示例如下所示:

# hammer compute-profile values create --compute-profile-id 22 --compute-resource-id 1 --compute-attributes=
'{
"cpus": 2,
"corespersocket": 2,
"memory_mb": 4096,
"firmware": "efi",
"resource_pool": "Resources",
"cluster": "Example_Cluster",
"guest_id": "rhel8",
"path": "/Datacenters/EXAMPLE/vm/",
"hardware_version": "Default",
"memoryHotAddEnabled": 0,
"cpuHotAddEnabled": 0,
"add_cdrom": 0,
"boot_order": [
               "disk",
               "network"
              ],
"scsi_controllers":[
      {
       "type":  "ParaVirtualSCSIController",
       "key":1000
       },
      {
        "type":  "ParaVirtualSCSIController",
        "key":1001
       }
                   ]
}'
Copy to Clipboard Toggle word wrap

第 9 章 使用 Hammer 对 Satellite 进行故障排除

您可以使用 hammer ping 命令检查核心 Satellite 服务的状态。与 satellite-maintain service status 命令一起,这有助于诊断 Satellite 问题并进行故障排除。如果所有服务都如预期运行,输出类似如下:

$ hammer ping
candlepin:
    Status:          ok
    Server Response: Duration: 22ms
candlepin_auth:
    Status:          ok
    Server Response: Duration: 17ms
pulp:
    Status:          ok
    Server Response: Duration: 41ms
pulp_auth:
    Status:          ok
    Server Response: Duration: 23ms
foreman_tasks:
    Status:          ok
    Server Response: Duration: 33ms
Copy to Clipboard Toggle word wrap

第 10 章 hammer cheat sheet

Hammer 是 Red Hat Satellite 6 提供的命令行工具。您可以使用 Hammer 使用 CLI 命令或 shell 脚本自动化来配置和管理 Satellite 服务器。以下备忘单提供了重要 Hammer 命令的概述:

10.1. 常规信息

Expand
子命令描述和任务

--help

显示 hammer 命令和选项,在子命令后附加 以获得更多信息

org

此设置是特定于机构的、附加 机构 org_name 或设置默认机构:

hammer defaults add \
--param-name organization_id \
--param-value org_ID
Copy to Clipboard Toggle word wrap

loc

此设置是特定于位置、附加 loc_name 或设置默认位置:

hammer defaults add \
--param-name location_id \
--param-value loc_ID
Copy to Clipboard Toggle word wrap

注: 这个 cheat sheet 假设将凭证保存在 ~/.hammer/cli_config.yml 中。如需更多信息,请参阅 第 3 章 hammer 身份验证

10.2. 机构、位置和存储库

Expand
子命令描述和任务

机构

创建机构:

hammer organization create \
--name org_name
Copy to Clipboard Toggle word wrap

列出机构:

hammer organization list
Copy to Clipboard Toggle word wrap

location

查看机构的选项

订阅
机构

上传订阅清单:

hammer subscription upload \
--file path
Copy to Clipboard Toggle word wrap

repository-set
org

启用存储库:

hammer repository-set enable \
--product prod_name \
--basearch base_arch \
--releasever rel_v \
--name repo_name
Copy to Clipboard Toggle word wrap

仓库
机构

同步存储库:

hammer repository synchronize \
--product prod_name \
--name repo_name
Copy to Clipboard Toggle word wrap

创建自定义存储库:

hammer repository create \
--product prod_name \
--content-type cont_type \
--publish-via-http true \
--url repo_url \
--name repo_name
Copy to Clipboard Toggle word wrap

将内容上传到自定义存储库:

hammer repository upload-content \
--product prod_name \
--id repo_id \
--path path_to_dir
Copy to Clipboard Toggle word wrap

10.3. 内容生命周期

Expand
子命令描述和任务

lifecycle-environment
org

创建生命周期环境:

hammer lifecycle-environment create \
--name env_name
--description env_desc
--prior prior_env_name
Copy to Clipboard Toggle word wrap

列出生命周期环境:

hammer lifecycle-environment list
Copy to Clipboard Toggle word wrap

Content-view
org

创建内容视图:

hammer content-view create \
--name cv_n \
--repository-ids repo_ID1,... \
--description cv_description
Copy to Clipboard Toggle word wrap

在内容视图中添加软件仓库:

hammer content-view add-repository \
--name cv_n \
--repository-id repo_ID
Copy to Clipboard Toggle word wrap

将 Puppet 模块添加到内容视图中:

hammer content-view puppet-module add \
--content-view cv_n \
--name module_name
Copy to Clipboard Toggle word wrap

发布内容视图:

hammer content-view publish \
--id cv_ID
Copy to Clipboard Toggle word wrap

提升内容视图:

hammer content-view version promote \
--content-view cv_n \
--to-lifecycle-environment env_name
Copy to Clipboard Toggle word wrap

内容视图的增量更新:

hammer content-view version incremental-update \
--content-view-version-id cv_ID \
--packages pkg_n1,... \
--lifecycle-environment-ids env_ID1,...
Copy to Clipboard Toggle word wrap

10.4. 置备环境

Expand
子命令描述和任务

domain

创建域:

hammer domain create \
--name domain_name
Copy to Clipboard Toggle word wrap

子网
机构
loc

添加子网:

hammer subnet create \
--name subnet_name \
--organization-ids org_ID1,... \
--location-ids loc_ID1,... \
--domain-ids dom_ID1,... \
--boot-mode boot_mode \
--network network_address \
--mask netmask --ipam ipam
Copy to Clipboard Toggle word wrap

compute-resource
org
loc

创建计算资源:

hammer compute-resource create \
--name cr_name \
--organization-ids org_ID1,... \
--location-ids loc_ID1,... \
--provider provider_name
Copy to Clipboard Toggle word wrap

添加安装介质:

hammer medium create \
--name med_name \
--path path_to_medium
Copy to Clipboard Toggle word wrap

partition-table

添加分区表:

hammer partition-table create \
--name tab_name \
--path path_to_file \
--os-family os_family
Copy to Clipboard Toggle word wrap

模板

添加置备模板:

hammer template create \
--name tmp_name \
--file path_to_template
Copy to Clipboard Toggle word wrap

os

添加操作系统:

hammer os create \
--name os_name \
--version version_num
Copy to Clipboard Toggle word wrap

10.5. 激活码

Expand
子命令描述和任务

activation-key
org

创建激活码:

hammer activation-key create \
--name ak_name \
--content-view cv_n \
--lifecycle-environment lc_name
Copy to Clipboard Toggle word wrap

在激活码中添加订阅:

hammer activation-key add-subscription \
--id ak_ID \
--subscription-id sub_ID
Copy to Clipboard Toggle word wrap

10.6. 用户和权限

Expand
子命令描述和任务

用户
机构

创建用户:

hammer user create \
--login user_name \
--mail user_mail \
--auth-source-id 1 \
--organization-ids org_ID1,org_ID2,...
Copy to Clipboard Toggle word wrap

为用户添加角色:

hammer user add-role \
--id user_id \
--role role_name
Copy to Clipboard Toggle word wrap

user-group

创建用户组:

hammer user-group create \
--name ug_name
Copy to Clipboard Toggle word wrap

为用户组添加角色:

hammer user-group add-role \
--id ug_id \
--role role_name
Copy to Clipboard Toggle word wrap

role

创建角色:

hammer role create \
--name role_name
Copy to Clipboard Toggle word wrap

filter

创建过滤器并将其添加到角色中:

hammer filter create \
--role role_name \
--permission-ids perm_ID1,perm_ID2,...
Copy to Clipboard Toggle word wrap

10.7. 勘误

Expand
子命令描述和任务

erratum

列出勘误:

hammer erratum list
Copy to Clipboard Toggle word wrap

按 CVE 查找勘误:

hammer erratum list --cve CVE
Copy to Clipboard Toggle word wrap

检查勘误:

hammer erratum info --id err_ID
Copy to Clipboard Toggle word wrap

主机

列出适用于主机的勘误:

hammer host errata list \
--host host_name
Copy to Clipboard Toggle word wrap

将勘误应用到主机:

hammer host errata apply \
--host host_name \
--errata-ids err_ID1,err_ID2,...
Copy to Clipboard Toggle word wrap

10.8. 主机

Expand
子命令描述和任务

hostgroup
org
loc

创建主机组:

hammer hostgroup create \
--name hg_name \
--puppet-environment env_name \
--architecture arch_name \
--domain domain_name \
--subnet subnet_name \
--puppet-proxy proxy_name \
--puppet-ca-proxy ca-proxy_name \
--operatingsystem os_name \
--partition-table table_name \
--medium medium_name \
--organization-ids org_ID1,... \
--location-ids loc_ID1,...
Copy to Clipboard Toggle word wrap

在主机组中添加激活码:

hammer hostgroup set-parameter \
--hostgroup "hg_name" \
--name "kt_activation_keys" \
--value key_name
Copy to Clipboard Toggle word wrap

主机
机构
loc

创建主机(从主机组继承参数):

hammer host create \
--name host_name \
--hostgroup hg_name \
--interface="primary=true, \
mac=mac_addr, ip=ip_addr, \
provision=true" \
--organization-id org_ID \
--location-id loc_ID \
--ask-root-password yes
Copy to Clipboard Toggle word wrap

从主机组中删除主机:

hammer host update --name host_name --hostgroup NIL
Copy to Clipboard Toggle word wrap

job-template

为远程执行添加作业模板:

hammer job-template create \
--file path \
--name template_name \
--provider-type SSH \
--job-category category_name
Copy to Clipboard Toggle word wrap

job-invocation

启动远程作业:

hammer job-invocation create \
--job-template template_name \
--inputs key1=value,... \
--search-query query
Copy to Clipboard Toggle word wrap

监控远程作业:

hammer job-invocation output \
--id job_id --host host_name
Copy to Clipboard Toggle word wrap

10.9. 任务

Expand
子命令描述和任务

task

列出所有任务:

hammer task list
Monitor progress of a running task:
hammer task progress \
--id task_ID
Copy to Clipboard Toggle word wrap

第 11 章 hammer 参考

您可以查看 Hammer 语句的使用。

本参考版本为 Satellite 6.16 发布了 Hammer 组件的版本。

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat