API 指南
使用 Red Hat Satellite 代表状态转移(REST) API 指南
摘要
第 1 章 简介 复制链接链接已复制到粘贴板!
红帽卫星提供了一个表述性状态传输(REST) API。该 API 可让软件开发人员和系统管理员在标准 Web 界面之外控制其红帽卫星环境。REST API 对于旨在将红帽卫星功能与通过 HTTP 访问 API 的外部应用程序相集成的开发人员和管理员很有用。
1.1. Red Hat Satellite API 概述 复制链接链接已复制到粘贴板!
使用 REST API 的好处包括:
- 广泛的客户端支持 - 任何支持 HTTP 协议的编程语言、框架或系统都可以使用 API。
- 自我描述 - 客户端应用程序需要对红帽卫星基础架构进行最少的了解,因为用户在运行时发现许多详细信息。
- 基于资源的模型 - 基于资源的 REST 模型提供了管理虚拟化平台的自然方式。
您可以使用 REST API 执行以下任务:
- 与企业 IT 系统集成。
- 与第三方应用程序集成。
- 执行自动化维护或错误检查任务。
- 通过脚本自动执行重复任务。
在准备升级 Satellite 服务器时,请确保使用包含 Satellite API 命令的任何脚本都为最新版本。API 命令在 Satellite 版本之间有所不同。有关 API 中变化的更多信息,请参阅红帽客户门户网站上的 Satellite 版本之间的 API 更改 信息。
1.2. Satellite API 与 Hammer CLI 工具的比较 复制链接链接已复制到粘贴板!
对于很多任务,您可以使用 Hammer 和 Satellite API。您可以使用 Hammer 作为卫星 API 的人类界面。例如,要在脚本中应用对 API 调用的响应,请使用 --debug 选项检查 Hammer 问题的 API 调用: hammer --debug 组织列表。
在后台,每个 Hammer 命令首先建立与 API 的绑定,然后发送请求。在按顺序执行大量 Hammer 命令时,这可能会对性能产生影响。与之相反,使用 API 命令的脚本直接与卫星 API 通信。
请注意,您必须手动更新使用 API 命令的脚本,而 Hammer 会自动反映 API 中的更改。如需更多信息,请参阅 Hammer CLI 指南。
第 2 章 API 参考 复制链接链接已复制到粘贴板!
完整 API 参考位于您的卫星服务器上,位于 https://satellite.example.com/apidoc/v2.html。请注意,即使 Satellite 6 API 的版本 1 和 2 可用,但红帽仅支持版本 2。
2.1. 了解 API 语法 复制链接链接已复制到粘贴板!
内置 API 参考显示 API 路由或路径,前面带有 HTTP 动词:
HTTP_VERB API_ROUTE
HTTP_VERB API_ROUTE
要使用 API,请使用 curl 命令语法和参考文档中的 API 路由构建命令:
- 1
- 要将
curl用于 API 调用,请使用--request选项指定 HTTP 动词。例如,--request POST。 - 2
- 添加
--insecure选项以跳过 SSL peer 证书验证检查。 - 3
- 使用
--user选项提供用户凭据。 - 4
- 5 6
- 7
- 从卫星服务器下载内容时,请使用
--output选项指定输出文件。 - 8
- 使用以下格式的 API 路由:
https://satellite.example.com/katello/api/activation_keys。在卫星 6 中,API 的版本 2 是默认值。因此,不需要在 API 调用的 URL 中使用v2。 - 9
- 将输出重定向到 Python
json.tool模块,以便可以更容易地读取输出。
2.1.1. 使用 GET HTTP Verb 复制链接链接已复制到粘贴板!
使用 GET HTTP 动词从 API 获取有关现有条目或资源的数据。
Example
本例请求 Satellite 主机数量:
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/hosts | python -m json.tool
$ curl --request GET --insecure --user sat_username:sat_password \
https://satellite.example.com/api/hosts | python -m json.tool
响应示例:
API 的响应表示总数中有两个结果,这是结果的第一个页面,并且每个页面的最大结果设置为 20。更多信息请参阅 第 2.2 节 “了解 JSON 响应格式”。
2.1.2. 使用 POST HTTP Verb 复制链接链接已复制到粘贴板!
使用 POST HTTP 动词将数据提交到 API,以创建条目或资源。您必须以 JSON 格式提交数据。更多信息请参阅 第 4.1.1 节 “将 JSON 数据传递给 API 请求”。
Example
这个示例创建了一个激活码。
创建包含以下内容的测试文件(如
activation-key.json):{"organization_id":1, "name":"TestKey", "description":"Just for testing"}{"organization_id":1, "name":"TestKey", "description":"Just for testing"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过在
activation-key.json文件中应用数据来创建激活码:请求示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证是否存在新的激活码。在 Satellite Web UI 中,导航到 Content > Activation keys 以查看您的激活码。
2.1.3. 使用 PUT HTTP Verb 复制链接链接已复制到粘贴板!
使用 PUT HTTP 动词更改现有值或附加到现有资源。您必须以 JSON 格式提交数据。更多信息请参阅 第 4.1.1 节 “将 JSON 数据传递给 API 请求”。
Example
本例更新上例中创建的 TestKey 激活密钥。
编辑之前创建的
activation-key.json文件,如下所示:{"organization_id":1, "name":"TestKey", "description":"Just for testing","max_hosts":"10" }{"organization_id":1, "name":"TestKey", "description":"Just for testing","max_hosts":"10" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 JSON 文件中应用更改:
请求示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 Satellite Web UI 中,导航到 Content > Activation keys 来验证更改。
2.1.4. 使用 DELETE HTTP Verb 复制链接链接已复制到粘贴板!
要删除资源,请使用 DELETE 动词和一个 API 路由,其中包含您要删除的资源 ID。
Example
这个示例删除 ID 为 2 的 TestKey 激活码:
请求示例:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" --request DELETE \ --user sat_username:sat_password --insecure \ https://satellite.example.com/katello/api/activation_keys/2 \ | python -m json.tool
$ curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request DELETE \
--user sat_username:sat_password --insecure \
https://satellite.example.com/katello/api/activation_keys/2 \
| python -m json.tool
响应示例:
2.1.5. 与 API 参考相关的 API 错误信息 复制链接链接已复制到粘贴板!
API 使用 RAILs 格式来指示错误:
Nested_Resource.Attribute_Name
Nested_Resource.Attribute_Name
这会转换为 API 引用中使用的以下格式:
Resource[Nested_Resource_attributes][Attribute_Name_id]
Resource[Nested_Resource_attributes][Attribute_Name_id]
2.2. 了解 JSON 响应格式 复制链接链接已复制到粘贴板!
对 API 的调用返回 JSON 格式的结果。API 调用返回单选项响应或响应集合的结果。
单对象的 JSON 响应格式
您可以使用单对象 JSON 响应来操作单个对象。对单个对象的 API 请求需要对象的唯一标识符 :id。
例如,ID 为 23 的单对象请求的格式:
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/domains/23 | python -m json.tool
$ curl --request GET --insecure --user sat_username:sat_password \
https://satellite.example.com/api/domains/23 | python -m json.tool
响应示例:
集合的 JSON 响应格式
集合是主机和域等对象的列表。集合 JSON 响应的格式由 metadata 字段部分和 results 部分组成。
下面是一个 Satellite 域列表的集合请求的格式示例:
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/domains | python -m json.tool
$ curl --request GET --insecure --user sat_username:sat_password \
https://satellite.example.com/api/domains | python -m json.tool
响应示例:
响应元数据字段
API 响应使用以下元数据字段:
-
total- 不带任何搜索参数的对象总数。 -
Subtotal- 带有给定搜索参数返回的对象数量。如果没有搜索,则小计等于总计。 -
page- 页面号。 -
per_page- 每个页面返回的最大对象数。 -
limit- 在集合响应中返回的指定对象数量。 -
offset- 返回集合前跳过的对象数量。 -
search- 基于scoped_scoped语法的搜索字符串。 排序-
by- 指定 API 对集合进行排序的字段。 -
顺序- 排序顺序,即 ASC 用于升序或 DESC 以降序。
-
-
results- 对象集合。
第 3 章 身份验证 API 调用 复制链接链接已复制到粘贴板!
与 Satellite API 交互需要与卫星服务器 CA 证书进行 SSL 身份验证,并使用有效的卫星用户凭据进行身份验证。本章概述了您可以使用的身份验证方法。
3.1. SSL 身份验证概述 复制链接链接已复制到粘贴板!
红帽卫星使用 HTTPS,这在与红帽卫星服务器通信时提供了一定程度的加密和身份验证。卫星 6.9 不支持非 SSL 通信。
每个红帽卫星服务器都使用自签名证书。此证书充当服务器证书,以验证加密密钥和证书颁发机构(CA)以信任卫星服务器的身份。
3.1.1. 配置 SSL 身份验证 复制链接链接已复制到粘贴板!
使用以下步骤为 API 请求配置卫星服务器的 SSL 身份验证。
流程
从 Satellite 服务器获得您要使用以下选项之一的证书:
如果您在远程服务器中执行命令,请使用 SSH 获取证书:
scp root@satellite.example.com:/var/www/html/pub/katello-server-ca.crt ./
$ scp root@satellite.example.com:/var/www/html/pub/katello-server-ca.crt ./Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果直接在 Satellite 服务器上执行命令,请将证书复制到当前目录中:
cp /var/www/html/pub/katello-server-ca.crt ./
$ cp /var/www/html/pub/katello-server-ca.crt ./Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用带有
--cacert katello-server-ca.crt选项的 API 请求来验证卫星服务器的身份:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建网络安全服务(NSS)数据库以存储
katello-server-ca.crt证书:certutil -N -d sql:$HOME/.pki/nssdb
$ certutil -N -d sql:$HOME/.pki/nssdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 NSS 数据库中永久包含证书:
certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "Red Hat Satellite" \ -i katello-server-ca.crt
$ certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "Red Hat Satellite" \ -i katello-server-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在没有
--cacert选项的情况下输入 API 请求来验证 NSS 数据库中是否存在证书:curl --request GET \ --user sat_username:sat_password \ https://satellite.example.com/api/v2/hosts
$ curl --request GET \ --user sat_username:sat_password \ https://satellite.example.com/api/v2/hostsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. HTTP 身份验证概述 复制链接链接已复制到粘贴板!
所有对 Satellite API 的请求都需要有效的 Satellite 用户名和密码。API 使用 HTTP 基本身份验证对这些凭证进行编码并添加到 授权 标头中。有关基本身份验证的更多信息,请参阅 RFC 2617 HTTP 身份验证: Basic 和 Digest Access Authentication。如果请求不包含适当的 授权 标头,API 会返回 401 Authorization 必需 错误
基本身份验证涉及潜在的敏感信息,例如,它会以纯文本形式发送密码。REST API 需要 HTTPS 来传输级别加密纯文本请求。
有些 base64 库将编码的凭据拆分为多行,并使用换行字符终止每行。这会导致标头,并导致一个有问题的请求。Authorization 标头要求编码的凭据位于标头中的一行中。
3.3. OAuth 身份验证概述 复制链接链接已复制到粘贴板!
作为基本身份验证的替代选择,您可以使用有限的 OAuth 1.0 身份验证。在版本 1.0a 版本 1.0a 中,这有时被称为 1 委派的 OAuth。
要查看 OAuth 设置,请在 Satellite Web UI 中导航到 Administer > Settings > Authentication。OAuth 使用者密钥是 所有 OAuth 客户端要使用的令牌。
Satellite 在 /etc/foreman/settings.yaml 文件中存储 OAuth 设置。使用 satellite-installer 脚本配置这些设置,因为卫星在升级过程中会覆盖对此文件的任何手动更改。
3.3.1. 配置 OAuth 复制链接链接已复制到粘贴板!
要更改 OAuth 设置,请使用所需选项输入 satellite-installer。输入以下命令列出所有 OAuth 相关安装程序选项:
satellite-installer --full-help | grep oauth
# satellite-installer --full-help | grep oauth
启用 OAuth 映射
默认情况下,卫星会将所有 OAuth API 请求授权为内置匿名 API 管理员帐户。因此,API 响应包括所有 Satellite 数据。但是,您还可以指定 Foreman 用户,以发出请求并限制访问该用户的数据。
要启用 OAuth 用户映射,请输入以下命令:
satellite-installer --foreman-oauth-map-users true
# satellite-installer --foreman-oauth-map-users true
Satellite 不在 OAuth 请求中签署标头。具有有效使用者密钥的任何人都可以模拟任何 Foreman 用户。
3.3.2. OAuth 请求格式 复制链接链接已复制到粘贴板!
使用 OAuth 客户端库来构建所有 OAuth 参数。每个 OAuth API 请求都需要带有现有 Foreman 用户和 Authorization 标头的 FOREMAN-USER 标头格式:
--header 'FOREMAN-USER: sat_username' \ --header 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=1321473112,oauth_signature=Il8hR8/ogj/XVuOqMPB9qNjSy6E='
--header 'FOREMAN-USER: sat_username' \
--header 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=1321473112,oauth_signature=Il8hR8/ogj/XVuOqMPB9qNjSy6E='
Example
这个示例列出了使用 OAuth 进行身份验证的架构。请求在 FOREMAN-USER 标头中使用 sat_username 用户名。将 --foreman-oauth-map-users 设置为 true 时,响应中只包含用户有权访问视图的架构。签名反映每个参数、HTTP 方法和 URI 更改。
请求示例:
curl 'https://satellite.example.com/api/architectures' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'FOREMAN-USER: sat_username' \ --header 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=1321473112,oauth_signature=Il8hR8/ogj/XVuOqMPB9qNjSy6E='
$ curl 'https://satellite.example.com/api/architectures' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'FOREMAN-USER: sat_username' \
--header 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=1321473112,oauth_signature=Il8hR8/ogj/XVuOqMPB9qNjSy6E='
第 4 章 不同语言的 API 请求 复制链接链接已复制到粘贴板!
本章概述了使用 curl、Ruby 和 Python 向 Red Hat Satellite 发送 API 请求,并提供了示例。
4.1. 使用 curl 的 API 请求 复制链接链接已复制到粘贴板!
本节概述了如何将 curl 与 Satellite API 搭配使用来执行各种任务。
红帽卫星需要使用 HTTPS,默认为用于主机识别的证书。如果您还没有添加 Satellite 服务器证书,如 第 3.1 节 “SSL 身份验证概述” 所述,您可以使用 --insecure 选项绕过证书检查。
对于用户身份验证,您可以使用 --user 选项以 --user username:password 的形式提供卫星用户凭证,或者如果不包括密码,则命令会提示您输入它。要降低安全风险,请不要将密码作为命令的一部分包含在内,因为它将成为您的 shell 历史记录的一部分。本节中的示例包括仅用于简洁目的的密码。
请注意,如果您使用 --silent 选项,curl 不会显示进度计量或任何错误消息。
本章示例使用 Python json.tool 模块格式化输出。
4.1.1. 将 JSON 数据传递给 API 请求 复制链接链接已复制到粘贴板!
您可以使用 API 请求将数据传递到卫星服务器。数据必须采用 JSON 格式。当使用 --data 选项指定 JSON 数据时,您必须使用 --header 选项设置以下 HTTP 标头:
--header "Accept:application/json" \ --header "Content-Type:application/json"
--header "Accept:application/json" \
--header "Content-Type:application/json"
使用以下选项之一包含带有 --data 选项的数据:
带引号 JSON 格式的数据括在大括号
{}中。在为 JSON 类型参数传递值时,您必须转义引号",带反斜杠\。例如,在大括号中,必须将"Example JSON Variable"格式化为\"Example JSON Variable\":--data {"id":44, "smart_class_parameter":{"override":"true", "parameter_type":"json", "default_value":"{\"GRUB_CMDLINE_LINUX\": {\"audit\":\"1\",\"crashkernel\":\"true\"}}"}}--data {"id":44, "smart_class_parameter":{"override":"true", "parameter_type":"json", "default_value":"{\"GRUB_CMDLINE_LINUX\": {\"audit\":\"1\",\"crashkernel\":\"true\"}}"}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 未加引号的 JSON 格式数据包含在文件中,并由
@符号和文件名指定。例如:--data @file.json
--data @file.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将外部文件用于 JSON 格式的数据具有以下优点:
- 您可以使用最喜欢的文本编辑器。
- 您可以使用语法检查程序来查找并避免错误。
- 您可以使用工具检查 JSON 数据的有效性或重新格式化它。
验证 JSON 文件
使用 json_verify 工具检查 JSON 文件的有效性:
json_verify < test_file.json
$ json_verify < test_file.json
4.1.2. 检索资源列表 复制链接链接已复制到粘贴板!
本节概述了如何将 curl 与 Satellite 6 API 搭配使用,以便从 Satellite 部署中请求信息。这些示例包括请求和响应。每个部署都有预期不同的结果。
列出用户
这个示例是一个基本请求,本例中为 Satellite 资源列表,本例中为 Satellite 用户。此类请求返回元数据中嵌套的数据列表,其他请求类型仅返回实际对象。
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/users | python -m json.tool
$ curl --request GET --insecure --user sat_username:sat_password \
https://satellite.example.com/api/users | python -m json.tool
响应示例:
4.1.3. 创建和修改资源 复制链接链接已复制到粘贴板!
本节概述了如何在 Satellite 6 API 中使用 curl 来处理卫星服务器上的资源。这些 API 调用要求您以 json 格式使用 API 调用传递数据。更多信息请参阅 第 4.1.1 节 “将 JSON 数据传递给 API 请求”。
创建用户
这个示例使用 --data 选项创建一个用户来提供所需信息。
请求示例:
curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request POST \
--user sat_username:sat_password --insecure \
--data "{\"firstname\":\"Test Name\",\"mail\":\"test@example.com\",\"login\":\"test_user\",\"password\":\"password123\",\"auth_source_id\":1}" \
https://satellite.example.com/api/users | python -m json.tool
$ curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request POST \
--user sat_username:sat_password --insecure \
--data "{\"firstname\":\"Test Name\",\"mail\":\"test@example.com\",\"login\":\"test_user\",\"password\":\"password123\",\"auth_source_id\":1}" \
https://satellite.example.com/api/users | python -m json.tool
修改用户
这个示例修改 创建用户 中创建的 test_user 的第一个名称和登录。
请求示例:
curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request PUT \
--user sat_username:sat_password --insecure \
--data "{\"firstname\":\"New Test Name\",\"mail\":\"test@example.com\",\"login\":\"new_test_user\",\"password\":\"password123\",\"auth_source_id\":1}" \
https://satellite.example.com/api/users/8 | python -m json.tool
$ curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request PUT \
--user sat_username:sat_password --insecure \
--data "{\"firstname\":\"New Test Name\",\"mail\":\"test@example.com\",\"login\":\"new_test_user\",\"password\":\"password123\",\"auth_source_id\":1}" \
https://satellite.example.com/api/users/8 | python -m json.tool
4.2. 带有 Ruby 的 API 请求 复制链接链接已复制到粘贴板!
本节概述了如何将 Ruby 与 Satellite API 搭配使用来执行各种任务。
以下是脚本和命令示例。确保您在使用前仔细检查这些脚本,并替换任何变量、用户名、密码和其他信息,以适应您自己的部署。
4.2.1. 使用 Ruby 创建对象 复制链接链接已复制到粘贴板!
此脚本连接到红帽卫星 6 API 并创建一个组织,然后在组织中创建三个环境。如果组织已存在,该脚本将使用该组织。如果组织中已存在任何环境,该脚本将引发错误并退出。
4.2.2. 使用带有 Ruby 的 Apipie Bindings 复制链接链接已复制到粘贴板!
Apipie 绑定是 apipie 记录的 API 调用的 Ruby 绑定。它们从卫星获取并缓存 API 定义,然后根据需要生成 API 调用。本例创建了一个机构,然后在组织中创建三个环境。如果组织已存在,该脚本将使用该组织。如果组织中已存在任何环境,该脚本将引发错误并退出。
4.3. 带有 Python 的 API 请求 复制链接链接已复制到粘贴板!
本节概述了如何将 Python 与 Satellite API 搭配使用来执行各种任务。
以下是脚本和命令示例。确保您在使用前仔细检查这些脚本,并替换任何变量、用户名、密码和其他信息,以适应您自己的部署。
本节中的示例脚本不使用 SSL 验证与 REST API 交互。
4.3.1. 使用 Python 创建对象 复制链接链接已复制到粘贴板!
此脚本连接到红帽卫星 6 API 并创建一个组织,然后在组织中创建三个环境。如果组织已存在,该脚本将使用该组织。如果组织中已存在任何环境,该脚本将引发错误并退出。
Python 2 示例
4.3.2. 使用 Python 从 API 请求信息 复制链接链接已复制到粘贴板!
这是一个示例脚本,它使用 Python 进行各种 API 请求。
Python 2 示例
Python 3 示例
第 5 章 使用 Red Hat Satellite API 复制链接链接已复制到粘贴板!
本章提供了如何使用 Red Hat Satellite API 执行不同任务的一系列示例。您可以通过端口 443 上的 HTTPS 在卫星服务器中使用 API,或者通过 HTTPS 在端口 8443 上使用。
您可以在脚本本身中解决这些不同的端口要求。例如,在 Ruby 中,您可以指定 Satellite 和 Capsule URL,如下所示:
url = 'https://satellite.example.com/api/v2/' capsule_url = 'https://capsule.example.com:8443/api/v2/' katello_url = 'https://satellite.example.com/katello/api/v2/'
url = 'https://satellite.example.com/api/v2/'
capsule_url = 'https://capsule.example.com:8443/api/v2/'
katello_url = 'https://satellite.example.com/katello/api/v2/'
对于订阅 Satellite 服务器或胶囊服务器的主机,您可以确定从 /etc/rhsm/rhsm.conf 文件中访问 API 所需的正确端口,在 [server] 部分的端口条目中。您可以使用这些值来完全自动化脚本,无需验证要使用的端口。
本章使用 curl 发送 API 请求。更多信息请参阅 第 4.1 节 “使用 curl 的 API 请求”。
本章示例使用 Python json.tool 模块格式化输出。
5.1. 使用主机 复制链接链接已复制到粘贴板!
列出主机
此示例返回卫星主机列表。
请求示例:
curl -request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/v2/hosts | python -m json.tool
$ curl -request GET --insecure --user sat_username:sat_password \
https://satellite.example.com/api/v2/hosts | python -m json.tool
响应示例:
为主机请求信息
此请求返回主机 satellite.example.com 的信息。
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/v2/hosts/satellite.example.com \ | python -m json.tool
$ curl --request GET --insecure --user sat_username:sat_password \
https://satellite.example.com/api/v2/hosts/satellite.example.com \
| python -m json.tool
响应示例:
列出主机事实
此请求返回主机 satellite.example.com 的所有事实。
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/v2/hosts/satellite.example.com/facts \ | python -m json.tool
$ curl --request GET --insecure --user sat_username:sat_password \
https://satellite.example.com/api/v2/hosts/satellite.example.com/facts \
| python -m json.tool
响应示例:
使用匹配模式搜索主机
此查询会返回与模式 "example" 匹配的所有主机。
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/v2/hosts?search=example \ | python -m json.tool
$ curl --request GET --insecure --user sat_username:sat_password \
https://satellite.example.com/api/v2/hosts?search=example \
| python -m json.tool
响应示例:
在环境中搜索主机
此查询返回 生产环境 中的所有主机。
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/v2/hosts?search=environment=production \ | python -m json.tool
$ curl --request GET --insecure --user sat_username:sat_password \
https://satellite.example.com/api/v2/hosts?search=environment=production \
| python -m json.tool
响应示例:
使用特定事实值搜索主机
此查询返回名称为 RHEV Hypervisor 的所有主机都。
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/v2/hosts?search=model=\"RHEV+Hypervisor\" \ | python -m json.tool
$ curl --request GET --insecure --user sat_username:sat_password \
https://satellite.example.com/api/v2/hosts?search=model=\"RHEV+Hypervisor\" \
| python -m json.tool
响应示例:
删除主机
此请求将删除名称为 host1.example.com 的主机。
请求示例:
curl --request DELETE --insecure --user sat_username:sat_password \ https://satellite.example.com/api/v2/hosts/host1.example.com \ | python -m json.tool
$ curl --request DELETE --insecure --user sat_username:sat_password \
https://satellite.example.com/api/v2/hosts/host1.example.com \
| python -m json.tool
下载完整引导磁盘镜像
此请求通过其 ID 下载主机的完整引导磁盘镜像。
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/bootdisk/api/hosts/host_ID?full=true \ --output image.iso
$ curl --request GET --insecure --user sat_username:sat_password \
https://satellite.example.com/bootdisk/api/hosts/host_ID?full=true \
--output image.iso
5.2. 使用生命周期环境 复制链接链接已复制到粘贴板!
卫星将应用程序生命周期划分为生命周期环境,它们代表应用程序生命周期的每个阶段。生命周期环境从环境路径相关联。要使用 API 创建链接的生命周期环境,请使用 before _id 参数。
您可以在 https://satellite.example.com/apidoc/v2/lifecycle_environments.html 中找到生命周期环境的内置 API 引用。API 路由包括 /katello/api/environments 和 /katello/api/organizations/:organization_id/environments。
列出生命周期环境
使用此 API 调用来列出 Satellite 上针对默认机构 ID 1 的所有当前生命周期环境。
请求示例:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request GET --user sat_username:sat_password --insecure \ https://satellite.example.com/katello/api/organizations/1/environments \ | python -m json.tool`
$ curl --header "Accept:application/json" \
--header "Content-Type:application/json" \
--request GET --user sat_username:sat_password --insecure \
https://satellite.example.com/katello/api/organizations/1/environments \
| python -m json.tool`
响应示例:
创建链接生命周期环境
使用本例创建生命周期环境的路径。
这个过程使用默认库环境 ID 为 1 作为创建生命周期环境的起点。
选择您要用作起点的现有生命周期环境。使用其 ID 列出环境,本例中为 ID 为
1的环境:请求示例:
curl --request GET --user sat_username:sat_password --insecure \ https://satellite.example.com/katello/api/environments/1 \ | python -m json.tool
$ curl --request GET --user sat_username:sat_password --insecure \ https://satellite.example.com/katello/api/environments/1 \ | python -m json.toolCopy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含以下内容的 JSON 文件,如
life-cycle.json:{"organization_id":1,"label":"api-dev","name":"API Development","prior":1}{"organization_id":1,"label":"api-dev","name":"API Development","prior":1}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用之前选项设置为
1创建生命周期环境。请求示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在命令输出中,您可以看到该生命周期环境的 ID 是
2,并且该生命周期环境前面是1。使用 ID 为2的生命周期环境为此环境创建成功。编辑之前创建的
life-cycle.json文件,更新标签、name和before值。{"organization_id":1,"label":"api-qa","name":"API QA","prior":2}{"organization_id":1,"label":"api-qa","name":"API QA","prior":2}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用之前选项设置为
2,创建生命周期环境。请求示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在命令输出中,您可以看到此生命周期环境的 ID 是
3,在这前的生命周期环境是2。
更新生命周期环境
您可以使用 PUT 命令更新生命周期环境。
这个示例请求更新了生命周期环境的描述,其 ID 为 3。
请求示例:
响应示例:
删除生命周期环境
您可以删除生命周期环境,只要它没有成功。因此,使用以下格式的命令以相反的顺序删除它们:
请求示例:
curl --request DELETE --user sat_username:sat_password --insecure \ https://satellite.example.com/katello/api/environments/:id
$ curl --request DELETE --user sat_username:sat_password --insecure \
https://satellite.example.com/katello/api/environments/:id
5.3. 将内容上传到卫星服务器 复制链接链接已复制到粘贴板!
本节概述了如何使用 Satellite 6 API 将大型文件上传到卫星服务器。这个过程涉及四个步骤:
- 创建上传请求。
- 上传内容。
- 导入内容。
- 删除上传请求。
您可以上传的最大文件大小为 2MB。有关上传较大的内容的详情,请参考 上传内容大大于 2 MB。
流程
创建上传请求。确保修改示例参数以适合您的部署。
请求示例:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request POST --insecure \ --user sat_username:sat_password --data "{}" \ https://satellite.example.com/katello/api/repositories/3/content_uploads$ curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request POST --insecure \ --user sat_username:sat_password --data "{}" \ https://satellite.example.com/katello/api/repositories/3/content_uploadsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令返回
upload_id。响应示例:
{"upload_id":"0be156b1-f373-4cad-89d0-924f8f4491d2","_href":"/pulp/api/v2/content/uploads/0be156b1-f373-4cad-89d0-924f8f4491d2/"}{"upload_id":"0be156b1-f373-4cad-89d0-924f8f4491d2","_href":"/pulp/api/v2/content/uploads/0be156b1-f373-4cad-89d0-924f8f4491d2/"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意
upload_id用于上传内容。上传内容。确保在上传数据时使用正确的 MIME 类型。API 将
application/jsonMIME 类型用于大多数对 Satellite 6 的请求。将upload_id、MIME 类型和其他参数合并在一起,以上传内容。请求示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将内容上传到卫星服务器后,您需要将其导入到相应的存储库。完成此步骤后,卫星服务器才会检测到新内容。
请求示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 成功上传并导入您的内容后,您可以删除上传请求。这样可在上传过程中释放任何数据的临时磁盘空间。
请求示例:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request DELETE --insecure \ --user sat_username:sat_password --data "{}" \ https://satellite.example.com/katello/api/repositories/3/content_uploads/0be156b1-f373-4cad-89d0-924f8f4491d2$ curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request DELETE --insecure \ --user sat_username:sat_password --data "{}" \ https://satellite.example.com/katello/api/repositories/3/content_uploads/0be156b1-f373-4cad-89d0-924f8f4491d2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
上传内容大大于 2 MB
以下示例演示了如何将大型文件分割为块,创建上传请求,上传单个文件,将其导入卫星,然后删除上传请求。请注意,本例使用示例内容、主机名、用户名和文件名。
使用以下示例将文件分成 2MB 块:
split --bytes 2MB --numeric-suffixes --suffix-length=1 \ theforeman-foreman-5.0.1.tar.gz foreman_module.
$ split --bytes 2MB --numeric-suffixes --suffix-length=1 \ theforeman-foreman-5.0.1.tar.gz foreman_module.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看生成的文件:
ls -la theforeman-foreman-5.0.1.tar.gz foreman_module.*
$ ls -la theforeman-foreman-5.0.1.tar.gz foreman_module.* -rw-r--r--. 1 root root 50000 Nov 4 04:42 foreman_module.0 -rw-r--r--. 1 root root 32928 Nov 4 04:42 foreman_module.1 -rw-r--r--. 1 root root 82928 Nov 4 04:41 theforeman-foreman-5.0.1.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建上传请求。
请求示例:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request POST --insecure --user sat_username:sat_password --data "{}" \ https://ibm-vm01.example.com/katello/api/repositories/2/content_uploads$ curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request POST --insecure --user sat_username:sat_password --data "{}" \ https://ibm-vm01.example.com/katello/api/repositories/2/content_uploadsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例:
{"upload_id":"9585528f-07ad-4bb1-9c80-ccece249b2b7","_href":"/pulp/api/v2/content/uploads/9585528f-07ad-4bb1-9c80-ccece249b2b7/"}{"upload_id":"9585528f-07ad-4bb1-9c80-ccece249b2b7","_href":"/pulp/api/v2/content/uploads/9585528f-07ad-4bb1-9c80-ccece249b2b7/"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意
upload_id用于上传内容。将文件块上传到卫星服务器。请注意,在这个示例中使用
offset参数,以及如何与文件大小相关:请求示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将完整上传导入到存储库:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request PUT --insecure --user sat_username:sat_password \ --data "{\"upload_ids\":[\"9585528f-07ad-4bb1-9c80-ccece249b2b7\"]}" \ https://ibm-vm01.example.com/katello/api/repositories/2/import_uploads$ curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request PUT --insecure --user sat_username:sat_password \ --data "{\"upload_ids\":[\"9585528f-07ad-4bb1-9c80-ccece249b2b7\"]}" \ https://ibm-vm01.example.com/katello/api/repositories/2/import_uploadsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除上传请求:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request DELETE --insecure --user sat_username:sat_password --data "{}" \ https://ibm-vm01.example.com/katello/api/repositories/2/content_uploads/9585528f-07ad-4bb1-9c80-ccece249b2b7$ curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request DELETE --insecure --user sat_username:sat_password --data "{}" \ https://ibm-vm01.example.com/katello/api/repositories/2/content_uploads/9585528f-07ad-4bb1-9c80-ccece249b2b7Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在卫星服务器上,检查传输的文件:
ls -la /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gz
# ls -la /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gz -rw-r--r--. 1 apache apache 82928 Nov 4 04:55 /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过比较验证初始文件是否与传输相同:
cmp /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gz \ theforeman-foreman-5.0.1.tar.gz
$ cmp /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gz \ theforeman-foreman-5.0.1.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. 将勘误应用到主机或主机集合 复制链接链接已复制到粘贴板!
您可以使用 API 将勘误表应用到主机、主机组或主机集合。以下是 PUT 请求的基本语法:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" --request PUT \ --user sat_username:sat_password --insecure \ --data json-formatted-data https://satellite7.example.com
$ curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request PUT \
--user sat_username:sat_password --insecure \
--data json-formatted-data https://satellite7.example.com
您可以浏览 APIdoc 中内置的 URL,以查找用于应用勘误表的 URL。您可以使用卫星 Web UI 来帮助发现搜索查询的格式。导航到 Hosts > Host Collections 并选择一个主机集合。进入 Collection Actions > Errata Installation 并注意搜索查询方框内容。例如,对于名为 my-collection 的主机集合,搜索框包含 host_collection="my-collection"。
将勘误应用到主机
这个示例使用 API URL 进行批量操作 /katello/api/hosts/bulk/install_content,以显示简单搜索所需的格式。
请求示例:
curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request PUT \
--user sat_username:sat_password --insecure \
--data "{\"organization_id\":1,\"included\":{\"search\":\"my-host\"},\"content_type\":\"errata\",\"content\":[\"RHBA-2016:1981\"]}" \
https://satellite.example.com/api/v2/hosts/bulk/install_content
$ curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request PUT \
--user sat_username:sat_password --insecure \
--data "{\"organization_id\":1,\"included\":{\"search\":\"my-host\"},\"content_type\":\"errata\",\"content\":[\"RHBA-2016:1981\"]}" \
https://satellite.example.com/api/v2/hosts/bulk/install_content
将勘误应用到主机集合
在本例中,请注意,在卫星 Web UI 中传递搜索字符串 host_collection="my-collection" 所需的转义级别。
请求示例:
curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request PUT \
--user sat_username:sat_password --insecure \
--data "{\"organization_id\":1,\"included\":{\"search\":\"host_collection=\\\"my-collection\\\"\"},\"content_type\":\"errata\",\"content\":[\"RHBA-2016:1981\"]}" \
https://satellite.example.com/api/v2/hosts/bulk/install_content
$ curl --header "Accept:application/json" \
--header "Content-Type:application/json" --request PUT \
--user sat_username:sat_password --insecure \
--data "{\"organization_id\":1,\"included\":{\"search\":\"host_collection=\\\"my-collection\\\"\"},\"content_type\":\"errata\",\"content\":[\"RHBA-2016:1981\"]}" \
https://satellite.example.com/api/v2/hosts/bulk/install_content
5.5. 使用扩展搜索 复制链接链接已复制到粘贴板!
您可以查找可用来在 Web UI 中构建搜索查询的参数。有关更多信息,请参阅管理红帽卫星中的 构建 搜索查询。
例如,要搜索主机,请完成以下步骤:
- 在 Satellite Web UI 中,进入 Hosts > All Hosts,点 Search 字段来显示搜索参数列表。
- 找到要使用的搜索参数。在本例中,找到 os_title 和 model。
在 API 查询中组合搜索参数,如下所示:
请求示例:
curl --insecure --user sat_username:sat_password \ https://satellite.example.com/api/v2/hosts?search=os_title=\"RedHat+7.7\",model=\"PowerEdge+R330\" \ | python -m json.tool
$ curl --insecure --user sat_username:sat_password \ https://satellite.example.com/api/v2/hosts?search=os_title=\"RedHat+7.7\",model=\"PowerEdge+R330\" \ | python -m json.toolCopy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6. 使用带有 Pagination Control 的搜索 复制链接链接已复制到粘贴板!
您可以使用 per_page 和 page pagination 参数来限制 API 搜索查询返回的搜索结果。per_ 参数指定每个页面的结果数,而 page 参数指定按 per_page 参数计算的页面(按 page per_page 参数计算)。
当您没有指定任何 pagination 参数时,返回的默认项目数量被设置为 1000,但每个 页 值的默认值是 20,用于指定 page 参数时适用。
列出内容视图
本例返回页面中的 Content Views 列表。该列表每行包含 10 个键,并返回第三个页面。
请求示例:
curl --request GET --user sat_username:sat_password \ https://satellite.example.com/katello/api/content_views?per_page=10&page=3
$ curl --request GET --user sat_username:sat_password \
https://satellite.example.com/katello/api/content_views?per_page=10&page=3
列出激活码
这个示例会返回一个机构在页面中 ID 为 1 的激活码列表。该列表每行包含 30 密钥,并返回第二个页面。
请求示例:
curl --request GET --user sat_username:sat_password \ https://satellite.example.com/katello/api/activation_keys?organization_id=1&per_page=30&page=2
$ curl --request GET --user sat_username:sat_password \
https://satellite.example.com/katello/api/activation_keys?organization_id=1&per_page=30&page=2
返回多个页面
您可以使用 for 循环结构来获取多个结果页面。
这个示例将页面 1 返回到 Content Views,每个页面有 5 个结果:
for i in seq 1 3; do \ curl --request GET --user sat_username:sat_password \ https://satellite.example.com/katello/api/content_views?per_page=5&page=$i; \ done
$ for i in seq 1 3; do \
curl --request GET --user sat_username:sat_password \
https://satellite.example.com/katello/api/content_views?per_page=5&page=$i; \
done
5.7. 覆盖智能类参数 复制链接链接已复制到粘贴板!
您可以使用 API 搜索智能参数,并提供值来覆盖类中的智能参数。您可以找到您可以在 https://satellite.example.com/apidoc/v2/smart_class_parameters/update.html 的内置 API 参考中修改的属性的完整列表。
查找您要更改的 Smart Class 参数的 ID:
列出所有智能类参数。
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/smart_class_parameters
$ curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/smart_class_parametersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您知道 Puppet 类 ID,例如 5,您可以限制范围:
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/puppetclasses/5/smart_class_parameters
$ curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/puppetclasses/5/smart_class_parametersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这两个调用都接受 search 参数。您可以在卫星 Web UI 中查看可搜索字段的完整列表。进入 Configure > Smart variables 并点 搜索查询框中显示字段列表。
两个特别有用的搜索参数是
puppetclass_name和键,您可以使用它们搜索特定的参数。例如,使用--data选项传递 URL 编码数据。请求示例:
curl --request GET --insecure --user sat_username:sat_password \ --data 'search=puppetclass_name = access_insights_client and key = authmethod' \ https://satellite.example.com/api/smart_class_parameters
$ curl --request GET --insecure --user sat_username:sat_password \ --data 'search=puppetclass_name = access_insights_client and key = authmethod' \ https://satellite.example.com/api/smart_class_parametersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 卫星支持标准范围的搜索语法。
当您找到 参数的 ID 时,列出包括当前覆盖值的完整详情。
请求示例:
curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/smart_class_parameters/63
$ curl --request GET --insecure --user sat_username:sat_password \ https://satellite.example.com/api/smart_class_parameters/63Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用覆盖参数值。
请求示例:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request PUT --insecure --user sat_username:sat_password \ --data '{"smart_class_parameter":{"override":true}}' \ https://satellite.example.com/api/smart_class_parameters/63$ curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request PUT --insecure --user sat_username:sat_password \ --data '{"smart_class_parameter":{"override":true}}' \ https://satellite.example.com/api/smart_class_parameters/63Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,您无法手动创建或删除参数。您只能修改它们的属性。卫星仅在从代理导入类时创建和删除参数。
添加自定义覆盖匹配器。
请求示例:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request PUT --insecure --user sat_username:sat_password \ --data '{"smart_class_parameter":{"override_value":{"match":"hostgroup=Test","value":"2.4.6"}}}' \ https://satellite.example.com/api/smart_class_parameters/63$ curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request PUT --insecure --user sat_username:sat_password \ --data '{"smart_class_parameter":{"override_value":{"match":"hostgroup=Test","value":"2.4.6"}}}' \ https://satellite.example.com/api/smart_class_parameters/63Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关覆盖值的更多信息,请参阅
https://satellite.example.com/apidoc/v2/override_values.html。您可以删除覆盖值。
请求示例:
curl --request DELETE --user sat_username:sat_password \ https://satellite.example.com/api/smart_class_parameters/63/override_values/3
$ curl --request DELETE --user sat_username:sat_password \ https://satellite.example.com/api/smart_class_parameters/63/override_values/3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.8. 使用外部文件修改智能类参数 复制链接链接已复制到粘贴板!
使用外部文件简化了使用 JSON 数据的过程。使用带有语法突出显示的编辑器可以帮助您避免和查找错误。
使用外部文件修改智能类参数
这个示例使用 MOTD Puppet 清单。
按照名称搜索 Puppet 类,本例中为
motd。请求示例:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request GET --user sat_user:sat_password --insecure \ https://satellite.example.com/api/smart_class_parameters?search=puppetclass_name=motd \ | python -m json.tool
$ curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request GET --user sat_user:sat_password --insecure \ https://satellite.example.com/api/smart_class_parameters?search=puppetclass_name=motd \ | python -m json.toolCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查以下输出:每个智能类参数都有具有相同 Satellite 实例的全局 ID。
motd类的内容参数在这一卫星服务器中具有id=3。不要将它与 Puppet 类名称之前显示的 Puppet 类 ID 混淆。响应示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用参数 ID
3获取特定于motd参数的信息,并将输出重定向到文件,如 output_file.json。请求示例:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" --request GET \ --user sat_user:sat_password --insecure \`
$ curl --header "Accept:application/json" \ --header "Content-Type:application/json" --request GET \ --user sat_user:sat_password --insecure \` https://satellite.example.com/api/smart_class_parameters/3 \ | python -m json.tool > output_file.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将上一步中创建的文件复制到用于编辑的新文件中,例如
changed_file.json:cp output_file.json changed_file.json
$ cp output_file.json changed_file.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 修改文件所需的值。在本例中,将
motd模块的内容参数更改为 true,这需要将override选项从false改为true:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑该文件后,验证它是否类似如下,然后保存更改:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将更改应用到 Satellite 服务器:
curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request PUT --user sat_username:sat_password --insecure \ --data @changed_file.json \ https://satellite.example.com/api/smart_class_parameters/3
$ curl --header "Accept:application/json" \ --header "Content-Type:application/json" \ --request PUT --user sat_username:sat_password --insecure \ --data @changed_file.json \ https://satellite.example.com/api/smart_class_parameters/3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.9. 删除 OpenSCAP 报告 复制链接链接已复制到粘贴板!
在卫星服务器上,您可以删除一个或多个 OpenSCAP 报告。但是,当您删除报告时,您必须一次删除一个页面。如果要删除所有 Openscap 报告,请使用如下所示的 bash 脚本。
删除 OpenSCAP 报告
要删除 OpenSCAP 报告,请完成以下步骤:
列出所有 OpenSCAP 报告。请注意您要删除的报告的 ID。
请求示例:
curl --insecure --user username:_password_ \ https://satellite.example.com/api/v2/compliance/arf_reports/ | python -m json.tool
curl --insecure --user username:_password_ \ https://satellite.example.com/api/v2/compliance/arf_reports/ | python -m json.toolCopy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上一步中的 ID,删除 OpenSCAP 报告。对您要删除的每个 ID 重复操作。
请求示例:
curl --insecure --user username:_password_ \ --header "Content-Type: application/json" \ --request DELETE https://satellite.example.com/api/v2/compliance/arf_reports/405
# curl --insecure --user username:_password_ \ --header "Content-Type: application/json" \ --request DELETE https://satellite.example.com/api/v2/compliance/arf_reports/405Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
删除所有 OpenSCAP 报告的 BASH 脚本示例
使用以下 bash 脚本删除所有 OpenSCAP 报告:
附录 A. API 响应代码 复制链接链接已复制到粘贴板!
Red Hat Satellite 6 API 为 API 调用提供 HTTP 响应状态代码。以下代码对卫星 API 中所有资源都是通用的。
| 响应 | 解释 |
|---|---|
| 200 OK | 对于成功的请求操作:显示、索引、更新或删除(GET、PUT、DELETE 请求)。 |
| 201 已创建 | 对于成功创建操作(POST 请求)。 |
| 301 永久移动 | 当 Satellite 限制为使用 HTTPS 和 HTTP 时重定向。 |
| 400 错误请求 | 缺少必需参数,或者搜索查询的语法无效。 |
| 401 未授权 | 未能授权用户(例如,不正确的凭证)。 |
| 403 Forbidden | 用户没有足够的权限来执行操作或读取资源,或者一般不支持该操作。 |
| 404 not Found | 具有给定 ID 的记录不存在。当请求记录不存在时,它可以出现在 show 和 delete 操作中,或者在其中一个关联的记录不存在时创建、更新和删除操作。 |
| 409 冲突 | 因为缺少依赖项而无法删除记录(例如,有主机的主机组)。 |
| 415 不支持的 Media Type | HTTP 请求的内容类型不是 JSON。 |
| 422 Unprocessable Entity | 由于一些验证错误导致创建实体失败。只适用于创建或更新操作。 |
| 500 内部服务器错误 | 内部服务器错误。 |
| 503 服务不可用 | 服务器没有运行。 |
附录 B. API 权限列表 复制链接链接已复制到粘贴板!
红帽卫星 6 API 支持许多需要特定权限的操作。下表列出了 API 权限名称、与这些权限关联的操作以及关联的资源类型。
| 权限名称 | Actions | 资源类型 |
|---|---|---|
| view_activation_keys |
| Katello::ActivationKey |
| create_activation_keys |
| Katello::ActivationKey |
| edit_activation_keys |
| Katello::ActivationKey |
| destroy_activation_keys |
| Katello::ActivationKey |
| logout |
| |
| view_architectures |
| |
| create_architectures |
| |
| edit_architectures |
| |
| destroy_architectures |
| |
| view_audit_logs |
| |
| view_authenticators |
| |
| create_authenticators |
| |
| edit_authenticators |
| |
| destroy_authenticators |
| |
| view_bookmarks |
| |
| create_bookmarks |
| |
| edit_bookmarks |
| |
| destroy_bookmarks |
| |
| download_bootdisk |
| |
| manage_capsule_content |
| SmartProxy |
| view_capsule_content |
| SmartProxy |
| view_compute_profiles |
| |
| create_compute_profiles |
| |
| edit_compute_profiles |
| |
| destroy_compute_profiles |
| |
| view_compute_resources |
| |
| create_compute_resources |
| |
| edit_compute_resources |
| |
| destroy_compute_resources |
| |
| view_compute_resources_vms |
| |
| create_compute_resources_vms |
| |
| edit_compute_resources_vms |
| |
| destroy_compute_resources_vms |
| |
| power_compute_resources_vms |
| |
| console_compute_resources_vms |
| |
| view_config_groups |
| |
| create_config_groups |
| |
| edit_config_groups |
| |
| destroy_config_groups |
| |
| view_config_reports |
| |
| destroy_config_reports |
| |
| upload_config_reports |
| |
| view_containers |
| Container |
| commit_containers |
| Container |
| create_containers |
| Container |
| destroy_containers |
| Container |
| power_compute_resources_vms |
| ComputeResource |
| view_content_hosts |
| Katello::System |
| create_content_hosts |
| Katello::System |
| edit_content_hosts |
| Katello::System |
| destroy_content_hosts |
| Katello::System |
| view_content_views |
| Katello::ContentView |
| create_content_views |
| Katello::ContentView |
| edit_content_views |
| Katello::ContentView |
| destroy_content_views |
| Katello::ContentView |
| publish_content_views |
| Katello::ContentView |
| promote_or_remove_content_views |
| Katello::ContentView |
| export_content_views |
| Katello::ContentView |
| access_dashboard |
| |
| view_discovered_hosts |
| 主机 |
| submit_discovered_hosts |
| 主机 |
| auto_provision_discovered_hosts |
| 主机 |
| provision_discovered_hosts |
| 主机 |
| edit_discovered_hosts |
| 主机 |
| destroy_discovered_hosts |
| 主机 |
| view_discovery_rules |
| DiscoveryRule |
| create_discovery_rules |
| DiscoveryRule |
| edit_discovery_rules |
| DiscoveryRule |
| execute_discovery_rules |
| DiscoveryRule |
| destroy_discovery_rules |
| DiscoveryRule |
| view_domains |
| |
| create_domains |
| |
| edit_domains |
| |
| destroy_domains |
| |
| view_environments |
| |
| create_environments |
| |
| edit_environments |
| |
| destroy_environments |
| |
| import_environments |
| |
| view_external_usergroups |
| |
| create_external_usergroups |
| |
| edit_external_usergroups |
| |
| destroy_external_usergroups |
| |
| view_external_variables |
| |
| create_external_variables |
| |
| edit_external_variables |
| |
| destroy_external_variables |
| |
| view_facts |
| |
| upload_facts |
| |
| view_filters |
| |
| create_filters |
| |
| edit_filters |
| |
| destroy_filters |
| |
| view_arf_reports |
| |
| destroy_arf_reports |
| |
| create_arf_reports |
| |
| view_policies |
| ForemanOpenscap::Policy |
| edit_policies |
| ForemanOpenscap::Policy |
| create_policies |
| ForemanOpenscap::Policy |
| destroy_policies |
| ForemanOpenscap::Policy |
| assign_policies |
| ForemanOpenscap::Policy |
| view_scap_contents |
| ForemanOpenscap::ScapContent |
| view_scap_contents |
| ForemanOpenscap::ScapContent |
| edit_scap_contents |
| ForemanOpenscap::ScapContent |
| create_scap_contents |
| ForemanOpenscap::ScapContent |
| destroy_scap_contents |
| ForemanOpenscap::ScapContent |
| edit_hosts |
| 主机 |
| edit_hostgroups |
| 主机 |
| view_job_templates |
| JobTemplate |
| create_job_templates |
| JobTemplate |
| edit_job_templates |
| |
| edit_job_templates |
| |
| edit_remote_execution_features |
| RemoteExecutionFeature |
| destroy_job_templates |
| JobTemplate |
| lock_job_templates |
| JobTemplate |
| create_job_invocations |
| jobInvocation |
| view_job_invocations |
| jobInvocation |
| execute_template_invocation | TemplateInvocation | |
| filter_autocompletion_for_template_invocation |
| TemplateInvocation |
| view_foreman_tasks |
| ForemanTasks::Task |
| edit_foreman_tasks |
| ForemanTasks::Task |
| create_recurring_logics | ForemanTasks::RecurringLogic | |
| view_recurring_logics |
| ForemanTasks::RecurringLogic |
| edit_recurring_logics |
| ForemanTasks::RecurringLogic |
| view_globals |
| |
| create_globals |
| |
| edit_globals |
| |
| destroy_globals |
| |
| view_gpg_keys |
| Katello::GpgKey |
| create_gpg_keys |
| Katello::GpgKey |
| edit_gpg_keys |
| Katello::GpgKey |
| destroy_gpg_keys |
| Katello::GpgKey |
| view_host_collections |
| Katello::HostCollection |
| create_host_collections |
| Katello::HostCollection |
| edit_host_collections |
| Katello::HostCollection |
| destroy_host_collections |
| Katello::HostCollection |
| edit_classes |
| |
| create_params |
| |
| edit_params |
| |
| destroy_params |
| |
| view_hostgroups |
| |
| create_hostgroups |
| |
| edit_hostgroups |
| |
| destroy_hostgroups |
| |
| view_hosts |
| |
| create_hosts |
| |
| edit_hosts |
| |
| destroy_hosts |
| |
| build_hosts |
| |
| power_hosts |
| |
| console_hosts |
| |
| ipmi_boot |
| |
| puppetrun_hosts |
| |
| search_repository_image_search |
| Docker/ImageSearch |
| view_images |
| |
| create_images |
| |
| edit_images |
| |
| destroy_images |
| |
| view_lifecycle_environments |
| Katello::KTEnvironment |
| create_lifecycle_environments |
| Katello::KTEnvironment |
| edit_lifecycle_environments |
| Katello::KTEnvironment |
| destroy_lifecycle_environments |
| Katello::KTEnvironment |
| promote_or_remove_content_views_to_environments | Katello::KTEnvironment | |
| view_locations |
| |
| create_locations |
| |
| edit_locations |
| |
| destroy_locations |
| |
| assign_locations |
| |
| view_mail_notifications |
| |
| view_media |
| |
| create_media |
| |
| edit_media |
| |
| destroy_media |
| |
| view_models |
| |
| create_models |
| |
| edit_models |
| |
| destroy_models |
| |
| view_operatingsystems |
| |
| create_operatingsystems |
| |
| edit_operatingsystems |
| |
| destroy_operatingsystems |
| |
| view_organizations |
| |
| create_organizations |
| |
| edit_organizations |
| |
| destroy_organizations |
| |
| assign_organizations |
| |
| view_ptables |
| |
| create_ptables |
| |
| edit_ptables |
| |
| destroy_ptables |
| |
| lock_ptables |
| |
| view_plugins |
| |
| view_products |
| Katello::Product |
| create_products |
| Katello::Product |
| edit_products |
| Katello::Product |
| destroy_products |
| Katello::Product |
| sync_products |
| Katello::Product |
| export_products |
| Katello::Product |
| view_provisioning_templates |
| |
| create_provisioning_templates |
| |
| edit_provisioning_templates |
| |
| destroy_provisioning_templates |
| |
| deploy_provisioning_templates |
| |
| lock_provisioning_templates |
| |
| user_logout |
| |
| my_account |
| |
| api_status |
| |
| view_puppetclasses |
| |
| create_puppetclasses |
| |
| edit_puppetclasses |
| |
| destroy_puppetclasses |
| |
| import_puppetclasses |
| |
| view_realms |
| |
| create_realms |
| |
| edit_realms |
| |
| destroy_realms |
| |
| view_search |
| |
| view_cases |
| |
| attachments |
| |
| 配置 |
| |
| app_root |
| |
| view_log_viewer |
| |
| logs |
| |
| rh_telemetry_api |
| |
| rh_telemetry_view |
| |
| rh_telemetry_configurations |
| |
| view_roles |
| |
| create_roles |
| |
| edit_roles |
| |
| destroy_roles |
| |
| access_settings |
| |
| view_smart_proxies |
| |
| create_smart_proxies |
| |
| edit_smart_proxies |
| |
| destroy_smart_proxies |
| |
| view_smart_proxies_autosign |
| |
| create_smart_proxies_autosign |
| |
| destroy_smart_proxies_autosign |
| |
| view_smart_proxies_puppetca |
| |
| edit_smart_proxies_puppetca |
| |
| destroy_smart_proxies_puppetca |
| |
| view_subnets |
| |
| create_subnets |
| |
| edit_subnets |
| |
| destroy_subnets |
| |
| import_subnets |
| |
| view_subscriptions |
| 机构(Organization) |
| attach_subscriptions |
| 机构(Organization) |
| unattach_subscriptions |
| 机构(Organization) |
| import_manifest |
| 机构(Organization) |
| delete_manifest |
| 机构(Organization) |
| view_sync_plans |
| Katello::SyncPlan |
| create_sync_plans |
| Katello::SyncPlan |
| edit_sync_plans |
| Katello::SyncPlan |
| destroy_sync_plans |
| Katello::SyncPlan |
| my_organizations |
| |
| view_usergroups |
| |
| create_usergroups |
| |
| edit_usergroups |
| |
| destroy_usergroups |
| |
| view_users |
| |
| create_users |
| |
| edit_users |
| |
| destroy_users |
|