第 5 章 使用 Red Hat Satellite API
本章介绍了如何使用 Red Hat Satellite API 执行不同任务的示例。您可以通过 HTTPS 在端口 443 上使用 API,或者在端口 8443 上通过 HTTPS 在胶囊服务器中使用。
您可以在脚本本身中处理这些不同的端口要求。例如,在 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/'
对于订阅到卫星服务器或胶囊服务器的主机,您可以在 [server]
部分的端口条目中确定从 /etc/rhsm/rhsm.conf 文件访问 API 所需的正确端口。您可以使用这些值来完全自动化脚本,删除任何需要验证要使用哪些端口。
本章使用 curl
来发送 API 请求。更多信息请参阅 第 4.1 节 “使用 curl 进行 API 请求”。
本章示例使用 Python json.tool
模块来格式化输出。
5.1. 使用主机 复制链接链接已复制到粘贴板!
列出主机
本例返回 Satellite 主机列表。
请求示例:
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