8.2. 配置凭证以使用 API 访问部署的系统


您不能使用 Red Hat Insights 镜像 UI 接口在蓝图中添加用户名和密码。要在镜像中添加用户名和密码,请使用 Image-builder 服务 API

以下示例演示了如何将凭证添加到使用 Insights 镜像构建器创建的 VMware OVA 镜像类型中。您还可以使用此方法将凭证添加到其他镜像类型。

先决条件

流程

  1. 使用 Red Hat API Tokens 生成的离线令牌不能直接与镜像构建器一起使用。要使用它,请按照以下步骤执行:

    1. 将离线令牌保存到 OFFLINE_TOKEN 变量。
    2. 使用以下命令交换访问令牌的离线令牌:

      $ 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"
      }
  2. 使用 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 \
      )

    访问令牌具有过期时间。如果您收到授权错误,请重新运行上一命令来生成新的访问令牌。

  3. 在您的系统中,以 .json 格式创建一个 compose 请求。以下示例为 x86_64 CPU 架构创建最新的 RHEL 9.4 ova

    $ 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"
                }
            ]
        }
    }
  4. 将 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"}
  5. 检查镜像构建的状态:

    $ 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"
            }
        }
    }
  6. 完成镜像创建后,下载镜像。

    $ curl --location --output vsphere-ova.vmdk  \
        “https://image-builder-service-production.s3.amazonaws.com/composer-api-76...-disk.ova?e42...”

该镜像保存到您的系统中,并可供使用。

后续步骤

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.