8.2. 配置凭证以使用 API 访问部署的系统
您不能使用 Red Hat Insights 镜像 UI 接口在蓝图中添加用户名和密码。要在镜像中添加用户名和密码,请使用 Image-builder 服务 API。
以下示例演示了如何将凭证添加到使用 Insights 镜像构建器创建的 VMware OVA 镜像类型中。您还可以使用此方法将凭证添加到其他镜像类型。
先决条件
- 访问 混合云控制台.
- OAuth 2.0 授权。
- 您创建了离线令牌。请参阅 生成离线令牌。
- 访问 Image-builder 服务 API。
-
已安装
jq
工具
流程
使用 Red Hat API Tokens 生成的离线令牌不能直接与镜像构建器一起使用。要使用它,请按照以下步骤执行:
-
将离线令牌保存到
OFFLINE_TOKEN
变量。 使用以下命令交换访问令牌的离线令牌:
$ OFFLINE_TOKEN=”YOUR_OFFLINE_TOKEN” $ curl --silent \ --request POST \ --data grant_type=refresh_token \ --data client_id=rhsm-api \ --data refresh_token=$OFFLINE_TOKEN \ https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token \ | jq .
它生成类似以下示例的输出:
{ "access_token": "oiZjo1Mjhk...", "expires_in": 900, "refresh_expires_in": 0, "refresh_token": "eyJhbG...", "token_type": "bearer", "not-before-policy": 0, "session_state": "f0dbb8d4-4e4e-4654-844c-6f3704c84422", "scope": "offline_access" }
-
将离线令牌保存到
使用
jq
从 JSON 有效负载获取实际访问令牌,并使用以下代码片段将其保存在变量中:$ access_token=$( \ curl --silent \ --request POST \ --data grant_type=refresh_token \ --data client_id=rhsm-api \ --data refresh_token=$OFFLINE_TOKEN \ https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token \ | jq -r .access_token \ )
访问令牌具有过期时间。如果您收到授权错误,请重新运行上一命令来生成新的访问令牌。
在您的系统中,以
.json
格式创建一个 compose 请求。以下示例为 x86_64 CPU 架构创建最新的 RHEL 9.4ova
。$ cat request.json { "image_name": "ova_image_name", "distribution": "rhel-94", "image_requests": [ { "architecture": "x86_64", "image_type": "vsphere-ova", "upload_request": { "type": "vmdk", "options": {} } } ], "customizations": { "users": [ { "name": "user-name", "ssh_key": "ssh-rsa AAAAB...qfGI+vk", "password": "password" } ] } }
将 compose 请求发送到镜像构建器 API:
$ curl --silent \ --request POST \ --header "Authorization: Bearer $access_token" \ --header "Content-Type: application/json" \ --data @request.json \ https://console.redhat.com/api/image-builder/v1/compose
如果请求成功,您可以看到类似如下的输出,即镜像 ID:
{"id":"fd4ecf3c-f0ce-43dd-9fcc-6ad11208b939"}
检查镜像构建的状态:
$ curl \ --silent \ --header "Authorization: Bearer $access_token" \ "https://console.redhat.com/api/image-builder/v1/composes/$compose_id" \ | image_ID.
如果请求成功,您可以看到类似如下的输出,即镜像 ID:
{"id":"fd4ecf3c-f0ce-43dd-9fcc-6ad11208b939"}
您还可以通过访问 Red Hat Hybrid Cloud Console 来检查镜像构建进度。
镜像构建后,您可以看到以下输出:
如果请求成功,您可以看到类似如下的输出,即镜像 ID:
{ "image_status": { "status": "success", "upload_status": { "options": { "url": "https://image-builder-service-production.s3.amazonaws.com/composer-api-76...-disk.ova?e42..." }, "status": "success", "type": "aws.s3" } } }
完成镜像创建后,下载镜像。
$ curl --location --output vsphere-ova.vmdk \ “https://image-builder-service-production.s3.amazonaws.com/composer-api-76...-disk.ova?e42...”
该镜像保存到您的系统中,并可供使用。
后续步骤
- 使用 CLI 或 vSphere GUI 将您的镜像部署到 vSphere。
其他资源
- 红帽 API 入门 文章
- Image-builder 服务 API 博客文章