管理自动化内容


Red Hat Ansible Automation Platform 2.5

在自动化中心中创建和管理集合、内容和存储库

Red Hat Customer Content Services

摘要

本指南介绍了如何在自动化中心中创建、编辑、删除和移动内容。

对红帽文档提供反馈

如果您对本文档有任何改进建议,或发现错误,请通过 https://access.redhat.com 联系技术支持来创建一个请求。

Ansible 认证的内容集合包括在订阅 Red Hat Ansible Automation Platform 中。使用 Ansible 自动化中心(Automation hub),您可以从所有形式的 Ansible 内容访问并策展一组唯一的集合。

Red Hat Ansible 内容包含两种类型的内容:

  • Ansible 认证的内容集合
  • Ansible 验证的内容集合

您可以使用 Ansible 认证内容集合或 Ansible 验证的内容集合来构建自动化库。如需有关 Ansible 认证内容集合和 Ansible 验证的内容集合之间的区别的更多信息,请参阅本指南中的 Ansible 认证内容集合和 Ansible 验证的内容或 Ansible 验证的内容

您可以通过下载其软件包来手动更新这些集合。

您可以通过创建一个要求文件,使用 Ansible Automation hub 将相关的 Red Hat Ansible 认证内容集合分发到您的用户。

在使用要求文件安装内容前,您必须:

使用远程配置配置您的私有自动化中心,使其与 console.redhat.com 上托管的 Ansible 认证内容集合或 Ansible Galaxy 中的集合同步。

位于 Automation ContentRemotes 远程配置都为 communityrh-certified 存储库提供关于存储库 上次更新的时间 的信息。您可以使用Automation Repositories页面中包含的 EditSync 功能随时将新内容添加到 Ansible Automation hub 中。

Ansible Galaxy 和 Ansible Automation Hub 之间有什么区别?

发布到 Ansible Galaxy 的集合是 Ansible 社区发布的最新内容,没有与它们关联的联合支持声明。Ansible Galaxy 是 Ansible 社区访问内容的推荐前端目录。

向 Ansible Automation Hub 发布的集合面向红帽及所选合作伙伴的客户。客户需要 Ansible 订阅才能访问和下载 Ansible 自动化中心中的集合。认证集合意味着红帽与合作伙伴就位具有战略关系,随时支持共同客户,并且集合可能还会有额外的测试和验证。

如何在 Ansible Galaxy 上请求命名空间?

要通过 Ansible Galaxy GitHub 问题请求命名空间,请按照以下步骤执行:

您必须至少登录一次才能验证系统。

用户添加为命名空间的管理员后,您可以使用自助式进程添加更多管理员。

Ansible Galaxy 命名空间命名有任何限制?

集合命名空间必须遵循 Python 模块名称规则。这意味着集合应具有简短的、由小写字符组成的名称。您可以在名称中使用下划线以提高它的可读性。

1.1.1. Automation Hub 中的令牌管理

在通过上传或下载集合与 Automation Hub 交互前,您需要创建 API 令牌。Automation Hub API 令牌将您的 ansible-galaxy 客户端与 Red Hat Automation Hub 服务器进行身份验证。

注意

Automation hub 不支持基本身份验证或通过服务帐户进行身份验证。您必须使用令牌管理进行身份验证。

创建 API 令牌的方法因所使用的自动化中心类型而异:

1.1.2. 在自动化 hub 中创建离线令牌

在自动化中心中,您可以使用 Token 管理 创建离线令牌。离线令牌是用来保护您的内容的 secret 令牌,因此请确保将其存储在安全的位置。

注意

您的离线令牌在 30 天不活跃后过期。

流程

  1. 进入 Red Hat Hybrid Cloud Console 上的 Ansible Automation Platform
  2. 在导航面板中,选择 Automation HubConnect to Hub
  3. 离线令牌下,点 Load Token
  4. Copy to clipboard 图标复制离线令牌。
  5. 将 API 令牌粘贴到文件中,并存储在安全位置。

后续步骤

离线令牌现在可用于将自动化中心配置为默认集合服务器,或使用 ansible-galaxy 命令行工具上传集合。

1.1.3. 在私有自动化中心中创建 API 令牌

在私有自动化中心中,您可以使用 API 令牌管理创建 API 令牌。API 令牌是用于保护内容的 secret 令牌,因此请确保将其存储在安全的位置。

API 令牌不会过期。

前提条件

  • Red Hat Ansible Automation Platform 的有效订阅凭证。

流程

  1. 登录到您的私有自动化中心。
  2. 在导航面板中,选择 Automation ContentAPI token
  3. Load Token
  4. 要复制 API 令牌,请点 Copy to clipboard 图标。
  5. 将 API 令牌粘贴到文件中,并存储在安全位置。

后续步骤

API 令牌现在可用于将自动化中心配置为默认集合服务器,或使用 ansible-galaxy 命令行工具上传集合。

1.1.4. 保持离线令牌处于活跃状态

离线令牌在 30 天不活动后过期。您可以通过保持离线令牌保持活跃状态来保持离线令牌。

当应用程序代表用户执行操作时,保持在线令牌处于活动状态很有用;例如,这允许应用程序在用户离线时执行常规数据备份。

注意

如果离线令牌过期,则必须 获取一个新令牌

流程

  • 运行以下命令防止您的令牌过期:

    curl https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token -d grant_type=refresh_token -d client_id="cloud-services" -d refresh_token="{{ user_token }}" --fail --silent --show-error --output /dev/null
    Copy to Clipboard Toggle word wrap

您可以编辑 rh-certified 远程存储库,将 console.redhat.com 上托管的自动化中心的集合同步到私有自动化中心。默认情况下,您的私有自动化中心 rh- certified 存储库包含整个 Ansible 认证内容集合组的 URL。

要只使用您的机构指定的集合,私有自动化中心管理员可以从 rh-certified remote 中手动创建要求文件。

如果您的要求文件中有集合 ABC,并且新的集合 X 被添加到要使用的 console.redhat.com 中,则必须将 X 添加到您的私有自动化中心要求文件中以同步它。

前提条件

  • 您有有效的修改 Ansible 仓库内容权限。有关权限的更多信息,请参阅 访问管理和身份验证
  • 您已从 console.redhat.com 上的自动化中心托管服务中检索 Sync URL 和 API Token。
  • 您已配置了端口 443 的访问权限。这是同步认证集合所必需的。如需更多信息,请参阅 规划安装 的网络端口和协议 部分中的自动化中心表。

流程

  1. 登录到您的 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentRemotes
  3. rh-certified 远程存储库中,单击 Edit remote
  4. URL 字段中,粘贴 Sync URL
  5. Token 字段中,粘贴您从 console.redhat.com 获取的令牌。
  6. 单击 Save remote

结果

现在,您可以将集合从 console.redhat.com 同步到私有自动化中心。

您可以编辑 community 远程存储库,将所选集合从 Ansible Galaxy 同步到私有自动化中心。默认情况下,您的私有自动化中心 community 存储库定向到 galaxy.ansible.com/api/

先决条件

  • 您有修改 Ansible 存储库内容的权限。有关权限的更多信息,请参阅 访问管理和身份验证
  • 您有一个 requirements.yml 文件,用于标识要从 Ansible Galaxy 同步的集合,如下例所示:

    requirements.yml 示例

collections:
  # Install a collection from Ansible Galaxy.
  - name: community.aws
    version: 5.2.0
    source: https://galaxy.ansible.com
Copy to Clipboard Toggle word wrap

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentRemotes
  3. Community remote 的 Details 选项卡中,点 Edit remote
  4. YAML requirements 字段中,粘贴 requirements.yml 文件的内容。
  5. 单击 Save remote

结果

现在,您可以将 requirements.yml 文件中标识的集合从 Ansible Galaxy 同步到私有自动化中心。

1.1.7. 配置代理设置

如果您的私有自动化中心位于网络代理后面,您可以在远程上配置代理设置,以同步位于本地网络之外的内容。

前提条件

  • 您有有效的修改 Ansible 仓库内容权限。有关权限的更多信息,请参阅 访问管理和身份验证
  • 您有一个来自本地网络管理员的代理 URL 和凭证。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentRemotes
  3. rh-certifiedCommunity remote 中,点 More Actions 图标 appears 并选择 Edit remote
  4. 展开 Show advanced options 下拉菜单。
  5. 在适当的字段中输入代理 URL、代理用户名和代理密码。
  6. 单击 Save remote

1.1.8. 创建要求文件

使用要求文件将集合添加到自动化中心。要求文件采用 YAML 格式,列出要在自动化中心中安装的集合。

标准 requirements.yml 文件包含以下参数:

  • Name :格式为 < namespace>.<collection_name&gt; 的集合的名称
  • 版本: 集合版本号

流程

  • 创建您的要求文件。

    在 YAML 格式中,您的要求文件中的集合信息应包含以下信息:

    collections:
      - name: namespace.collection_name
        version: 1.0.0
    Copy to Clipboard Toggle word wrap

确保指定集合版本号,否则您将同步所有集合版本。同步所有版本可能需要比预期更多的空间。

后续步骤

要同步要求文件中的集合,请按照 同步 Ansible 内容集合 中的步骤操作。

1.2. 在自动化中心中同步 Ansible 内容集合

若要同步内容,可创建要求文件并将其上传到相应的远程。远程是允许您从外部集合源将内容同步到自定义存储库的配置。

1.2.1. 同步 Ansible 内容集合

您可以在 console.redhat.com 上的 Ansible Automation Hub 中同步认证和验证的集合。

注意

在同步内容时,请记住自动化中心不会检查其他依赖项存储库。要避免错误,请通过编辑远程设置来关闭依赖项下载。如需更多信息 ,请参阅在自动化中心中创建远程配置

前提条件

  • 有一个有效的 Ansible Automation Platform 订阅。
  • 具有 console.redhat.com 的机构管理员权限。
  • 您已创建了 要求文件
  • 以下域名是防火墙或代理的允许列表的一部分。从自动化中心或 Galaxy 服务器成功连接并下载集合需要它们:

    • galaxy.ansible.com
    • cloud.redhat.com
    • console.redhat.com
    • sso.redhat.com
    • ansible-galaxy-ng.s3.dualstack.us-east-1.amazonaws.com
  • Ansible Automation hub 资源存储在 Amazon Simple Storage 中。以下域名必须位于允许列表中:

    • automation-hub-prd.s3.us-east-2.amazonaws.com
    • ansible-galaxy.s3.amazonaws.com
  • 在使用自签名证书或红帽域时,SSL 检查会被禁用。
重要

在开始内容同步前,请参阅知识库文章 同步自动化内容的资源要求,以确保具有同步所需集合的资源。

流程

  1. 在导航面板中,选择 Automation ContentRemotes
  2. 从中查找您要同步的远程,然后点击铅笔图标 Edit 进行编辑。
  3. 查找标有 Requirements file 的字段。在这里,您可以粘贴要求文件的内容,或者通过选择上传按钮从硬盘上传文件。
  4. 单击 Save remote
  5. 要开始同步,请从导航面板中选择 Automation ContentRepositories
  6. 在包含您要同步的存储库的行中,点 WWN 图标并选择 Sync repository Sync repository 图标来启动到私有自动化中心的远程存储库同步。
  7. 在出现的模态中,您可以切换以下选项:

    • 镜像 :如果您希望存储库内容镜像远程存储库的内容,则选择此项。
    • 优化 :只有在远程服务器未报告任何更改时,选择该选项。
  8. 单击 Sync 以完成同步。

验证

Sync status 列更新,以通知您同步是否成功。

  • 导航到 Automation ContentCollections,以确认您的集合内容已成功同步。

1.3. 在私有自动化中心中的集合和内容签名

作为机构的自动化管理员,您可以配置私有自动化中心,以根据机构中的不同组签名和发布 Ansible 内容集合。

为提高安全性,自动化创建者可以配置 Ansible-Galaxy CLI 以验证这些集合,确保在上传到自动化中心后不会更改它们。

1.3.1. 在私有自动化 hub 中配置内容签名

要成功签名并发布 Ansible 认证的内容集合,您必须配置私有自动化中心进行签名。

前提条件

  • 您的 TIPC 密钥对已安全设置并管理您的机构。
  • 您的公钥-私钥对有权在私有自动化中心上配置内容签名。

流程

  1. 创建只接受文件名的签名脚本。

    注意

    此脚本充当签名服务,必须使用通过 PULP_SIGNING_KEY_FINGERPRINT 环境变量指定的密钥为该文件生成 ascii-armored 分离 gpg 签名。

    该脚本打印一个 JSON 结构,其格式如下:

    {"file": "filename", "signature": "filename.asc"}
    Copy to Clipboard Toggle word wrap

    所有文件名都是当前工作目录中的相对路径。对于分离的签名,文件名必须保持相同。

    示例: 以下脚本为内容生成签名:

    #!/usr/bin/env bash
    
    FILE_PATH=$1
    SIGNATURE_PATH="$1.asc"
    
    ADMIN_ID="$PULP_SIGNING_KEY_FINGERPRINT"
    PASSWORD="password"
    
    # Create a detached signature
    gpg --quiet --batch --pinentry-mode loopback --yes --passphrase \
       $PASSWORD --homedir ~/.gnupg/ --detach-sign --default-key $ADMIN_ID \
       --armor --output $SIGNATURE_PATH $FILE_PATH
    
    # Check the exit status
    STATUS=$?
    if [ $STATUS -eq 0 ]; then
       echo {\"file\": \"$FILE_PATH\", \"signature\": \"$SIGNATURE_PATH\"}
    else
       exit $STATUS
    fi
    Copy to Clipboard Toggle word wrap

    部署私有自动化中心后,为 Ansible Automation Platform 集群启用了签名后,会在集合中会显示新的 UI。

  2. 查看 Ansible Automation Platform 安装程序清单文件中的以 automationhub_* 开头的选项。

    [all:vars]
    .
    .
    .
    automationhub_create_default_collection_signing_service = True
    automationhub_auto_sign_collections = True
    automationhub_require_content_approval = True
    automationhub_collection_signing_service_key = /abs/path/to/galaxy_signing_service.gpg
    automationhub_collection_signing_service_script = /abs/path/to/collection_signing.sh
    Copy to Clipboard Toggle word wrap

    两个新密钥(automationhub_auto_sign_collectionsautomationhub_require_content_approval)表示必须签名集合,并在上传到私有自动化中心后需要批准。

1.3.2. 在私有自动化中心中使用内容签名服务

在私有自动化中心上配置内容签名后,您可以手动为新集合签名,或使用新签名替换现有签名。当用户下载特定集合时,此签名表示它们的集合是它们,在认证后没有被修改。

在以下情况下,您可以在私有自动化中心上使用内容签名:

  • 您的系统没有配置自动签名,您必须使用手动签名过程来签署集合。
  • 自动配置的集合中的当前签名已损坏,需要新的签名。
  • 对于之前签名的内容,您需要额外的签名。
  • 您希望在集合中轮转签名。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentCollection Approvals。Approval dashboard 将打开并显示一个集合列表。
  3. 点击您要批准的集合旁边的缩略图标。在出现的模态中,选中确认您要批准集合的框,然后点 Approve and sign collections

验证

  • 导航到 Automation ContentCollections,以验证您签名并批准的集合是否已显示。

1.3.3. 下载签名公钥

签名和批准集合后,从 Ansible Automation Platform UI 下载签名公钥。您必须下载公钥,然后才能将其添加到本地系统密钥环中。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentSignature Keys。签名密钥仪表板显示多个键的列表:集合和容器镜像。

    • 要验证集合,请下载前缀为 collections- 的密钥。
    • 要验证容器镜像,请下载前缀为 container- 的密钥。
  3. 选择以下方法之一下载您的公钥:

    • 单击 Download Key 图标以下载公钥。
    • 点您要复制的公钥旁边的 Copy to clipboard

验证

使用您复制的公钥来验证您要安装的内容集合。

1.3.4. 配置 Ansible-Galaxy CLI 以验证集合

您可以配置 Ansible-Galaxy CLI 来验证集合。这样可确保下载的集合由您的机构批准,且在上传到自动化中心后没有改变。

如果某个集合由自动化中心签名,服务器会提供 ASCII armored,GPG-detached 签名在使用它验证集合的内容前验证 MANIFEST.json 的真实性。您必须通过为 ansible-galaxy 配置密钥环或使用 --keyring 选项提供路径来选择签名验证。

前提条件

  • 签名的集合在自动化中心中可用于验证签名。
  • 认证的集合可以由机构中的批准角色签名。
  • 验证的公钥已添加到本地系统密钥环中。

流程

  1. 要将公钥导入到用于 ansible-galaxy 的非默认密钥环中,请运行以下命令:

    gpg --import --no-default-keyring --keyring ~/.ansible/pubring.kbx my-public-key.asc
    Copy to Clipboard Toggle word wrap
    注意

    除了自动化中心提供的任何签名外,也可以在要求文件和命令行中提供签名源。签名源应当是 URI。

  2. 要使用额外签名验证 CLI 上提供的集合名称,请运行以下命令:

    ansible-galaxy collection install namespace.collection
    --signature https://examplehost.com/detached_signature.asc
    --signature file:///path/to/local/detached_signature.asc --keyring ~/.ansible/pubring.kbx
    Copy to Clipboard Toggle word wrap

    您可以多次使用这个选项提供多个签名。

  3. 确认要求文件中的集合在集合的签名密钥后列出任何其他签名源,如下例所示。

    # requirements.yml
    collections:
      - name: ns.coll
        version: 1.0.0
        signatures:
          - https://examplehost.com/detached_signature.asc
          - file:///path/to/local/detached_signature.asc
    
    ansible-galaxy collection verify -r requirements.yml --keyring ~/.ansible/pubring.kbx
    Copy to Clipboard Toggle word wrap

    当您从自动化中心安装集合时,服务器提供的签名会与安装的集合一起保存,以验证集合的真实性。

  4. (可选)如果您需要在不查询 Ansible Galaxy 服务器的情况下再次验证集合的内部一致性,请使用 --off 命令行选项运行之前使用的相同命令

1.4. Ansible 验证的内容

Red Hat Ansible Automation Platform 包括 Ansible 验证的内容(Ansible validated content),可补充现有 Red Hat Ansible 认证的内容。

Ansible 验证的内容提供了一个由专家领导的路径,用于在各种平台(包括红帽和合作伙伴的平台)上执行操作任务,。

1.4.1. 使用安装程序配置验证的集合

当您下载并运行 RPM 捆绑包安装程序时,认证和验证的集合会自动上传。认证的集合上传到 rh-certified 存储库中。验证的集合上传到 validated 的存储库。

您可以使用两个变量更改默认配置:

  • automationhub_seed_collections 是一个布尔值,用于定义是否启用预加载。
  • automationhub_collection_seed_repository 是一个变量,允许您在设置为 true 时指定要上传的内容类型。可能的值是 certifiedvalidated。如果缺少此变量,则两个内容集都会被上传。
注意

更改默认配置可能需要进一步更改您可以使用的其他内容。

第 2 章 在自动化 hub 中管理集合

作为内容创建者,您可以使用自动化中心中的命名空间来策展和管理集合。例如,您可以:

  • 使用权限创建团队来策展命名空间,并将集合上传到私有自动化中心
  • 在命名空间中添加信息和资源,以帮助在其自动化任务中集合的最终用户
  • 将集合上传到命名空间
  • 查看命名空间导入日志,以确定上传集合及其当前批准状态是否成功或失败。

有关创建内容的详情,请参考 开发自动化内容

2.1. 使用命名空间管理 Automation Hub 中的集合

命名空间是 Automation Hub 中的唯一位置,您可以上传并发布内容集合。对 Automation Hub 中的命名空间的访问取决于有权管理其中的内容和相关信息的团队。

您可以使用 Automation Hub 中的命名空间组织在您的机构内开发的集合,以用于内部发布和使用。

如果使用命名空间,则必须有一个具有创建、编辑和上传集合到命名空间的团队。上传到命名空间的集合需要管理员批准,然后才能发布并供使用。

2.1.1. 为内容 Curator 创建新团队

您可以在 Ansible Automation Platform 中创建一个新团队,旨在支持机构中的内容策展。此团队可以为内部开发的集合提供在私有自动化中心中发布。

为了帮助内容开发人员创建命名空间,并将其内部开发的集合上传到私有自动化中心,您必须首先创建和编辑团队并分配所需的权限。

前提条件

  • 在 Ansible Automation Platform 中具有管理权限,并可创建团队。

流程

  1. 登录到您的 Ansible Automation Platform。
  2. 在导航面板中,选择 Access ManagementTeams,再点 Create team
  3. 输入 Content Engineering 作为团队的名称。
  4. 为团队选择一个 机构
  5. Create team。您已创建新团队,并打开团队 Details 页面。
  6. 选择 Roles 选项卡,然后选择 Automation Content 选项卡。
  7. Add roles
  8. Resource type 列表中选择 Namespace 并点 Next
  9. 选择将接收新角色的命名空间,然后单击下一步
  10. 选择要应用到所选命名空间的角色,然后点 Next
  11. 查看您的选择并点击 完成
  12. 单击 Close 以完成该过程。

    使用您分配的权限创建新团队。然后您可以将用户添加到团队中。

  13. Teams 页面中的 Users 选项卡。
  14. 单击 Add users
  15. 选择用户并单击 添加用户

其他资源

2.1.2. 创建命名空间

您可以创建一个命名空间来组织内容开发人员上传到自动化中心的集合。在创建命名空间时,您可以在自动化中心中分配一个团队作为该命名空间的所有者。

提示

默认情况下,Ansible 合作伙伴团队还可在自动化中心上使用在 Ansible Galaxy 上使用的命名空间。有关任何查询和澄清,请联系 ansiblepartners@redhat.com

前提条件

  • 您有 Add NamespacesUpload to Namespaces 权限。

流程

  1. 登录到您的 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentNamespaces
  3. Create namespace 并为您的命名空间输入一个 Name
  4. 可选:在适当的字段中输入描述、公司、徽标 URL、资源或有用的链接。
  5. Create namespace
  6. 选择 Team Access 选项卡,再点 Add roles 将角色分配给您的命名空间。
  7. 选择您要授予角色的团队,然后点 Next
  8. 选择您要应用到所选团队的角色,然后点 Next
  9. 查看您的选择并点击 完成
  10. 单击 Close 以完成该过程。

后续步骤

您的内容开发人员现在可以将集合上传到新命名空间中,并允许团队中的用户作为所有者上传集合。

2.1.3. 在命名空间中添加额外信息和资源

您可以将信息添加到命名空间中包含的集合中,并为用户提供资源。例如,您可以添加徽标和描述,并将用户链接到 GitHub 存储库、签发跟踪器或其他在线资产。您还可以在 Resources 字段中输入标记文本,使其包含更多信息。这对在自动化任务中使用集合的用户非常有用。

前提条件

  • 您有更改命名空间的权限。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentNamespaces
  3. 选择您要编辑的命名空间。
  4. Edit namespace
  5. 在字段中输入相关信息。
  6. 可选:在 Resources 字段中输入标记信息。
  7. Save namespace

结果

您的内容开发人员现在可以将集合上传到您的新命名空间中,或者允许团队中的用户作为所有者上传集合。

在创建命名空间时,具有上传权限的团队可以开始添加其集合以进行批准。批准后,命名空间中的集合会出现在 Published 存储库中。

2.1.4. 将集合上传到您的命名空间中

您可以将 tar.gz 文件格式内部开发的集合上传到私有自动化中心命名空间中,供自动化 hub 管理员审核和批准。批准后,集合将移到自动化中心用户可以查看并下载它的 Published 内容存储库。

注意

按如下方式格式化您的集合文件名:<my_namespace-my_collection-1.0.0.tar.gz>

前提条件

  • 您有一个命名空间,可以将集合上传到这个命名空间。
重要

尝试上传非常大的集合将导致错误。

在上传到 Ansible Galaxy 或 console.redhat.com 时,将集合大小限制为 20 mb。对于私有自动化中心,请避免上传集合大小 200 mb 或更多。

如果需要带有多个集合和依赖项的完整环境,请使用执行环境。如需更多信息,请参阅 拉取执行环境以便在自动化中心中使用

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentNamespaces 并选择命名空间。
  3. 选择 Collections 选项卡。
  4. Upload collection
  5. Collection file 字段旁边的 Browse
  6. 选择要上传的集合。
  7. 选择以下选项之一:

    • Staging 仓库
    • 没有管道的存储库
  8. Upload collection

验证

要验证集合是否上传成功,或者是否上传了 Automation ContentNamespaces,点 More Actions 图标 &&,然后选择 Imports 您会发现一个测试概述,指示导入是否成功。

2.1.5. 查看命名空间导入日志

您可以查看上传到命名空间的集合状态,以评估进程是否成功或失败。

导入的集合信息包括:

Status
完成或失败
批准状态
等待批准或批准
版本
上传的集合的版本
导入日志
在集合导入过程中执行的活动

前提条件

  • 您可以访问可上传集合的命名空间。

流程

  1. 登录到您的 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentNamespaces
  3. 选择一个命名空间。
  4. More Actions 图标 3.3.0 并选择 Imports
  5. 使用 search 字段或找到列表中导入的集合。
  6. 点导入的集合。
  7. 查看集合导入详情,以确定命名空间中的集合状态。

2.1.6. 删除集合

如果集合不依赖于其他集合,您可以通过删除不需要的集合来进一步管理集合。集合上的 Dependencies 选项卡显示使用当前集合的其他集合列表。

前提条件

  • 要删除的集合没有与其他集合的依赖关系。
  • 您有 Delete Collections 权限。

流程

  1. 登录到您的 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentCollections
  3. 在删除集合前,请检查它是否有依赖的集合:

    • 点该集合的 Dependencies 选项卡。如果为空,您将能够删除集合。如果 Dependencies 选项卡不为空,您必须先删除这些依赖项,然后才能删除集合。
  4. 点要删除的集合。
  5. More Actions 图标 需要,然后选择一个选项:

    1. 从系统中删除版本会从 整个实例中删除集合的特定版本,包括所有存储库和命名空间。
    2. 从存储库中删除版本会从 上传的存储库中删除集合的特定版本。这不会影响其他存储库或命名空间中的集合。
    3. 从存储库中删除整个集合,会从上传的仓库中删除整个集合的所有版本,但不会影响其他存储库或命名空间。
    4. 从系统中删除整个集合,从实例中删除整个集合的所有版本,包括所有存储库和命名空间。
  6. 当确认窗口打开时,验证集合或版本号是否正确,然后选择 Delete

2.1.7. 删除命名空间

您可以删除不需要的命名空间来管理自动化中心服务器上的存储。您必须首先确保要删除的命名空间不包含具有依赖项的集合。

前提条件

  • 您要删除的命名空间没有依赖项集合。
  • Delete namespace 权限。

流程

  1. 登录到您的 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentNamespaces
  3. 点要删除的命名空间。
  4. More Actions 图标 , 然后点 Delete namespace

    注意

    如果 Delete namespace 按钮被禁用,命名空间会包含带有依赖项的集合。检查此命名空间中的集合,并删除任何依赖项。

结果

您删除的命名空间及其关联的集合现已从命名空间列表视图中删除。

2.2. 管理 Automation Hub 中内部集合的发布过程

使用自动化中心管理和发布您机构中开发的内容集合。您可以在命名空间中上传和组集合。它们需要管理批准才能出现在 发布的内容存储库中。发布集合后,您的用户可以访问并下载它以供使用。

您还可以拒绝未满足机构认证标准的提交集合。

2.2.1. 关于批准

您可以使用导航面板中的 Collection Approvals 功能管理 Automation Hub 中上传的集合。

批准仪表板
默认情况下,Approval 仪表板列出所有具有 Needs Review 状态的集合。您可以检查它们是否包含在您的 Published 存储库中。
查看集合详情
您可以点击 Version 号来查看有关集合的更多信息。
过滤集合
根据 Namespace, Collection, 或 Repository 过滤集合来找到内容并更新其状态。

2.2.2. 为内部发布批准集合

您可以批准上传到各个命名空间的集合供内部发布和使用。所有等待审核的集合都位于 Automation ContentCollection Approvals 中。

前提条件

  • 您有修改 Ansible 存储库内容的权限。

流程

  1. 在导航面板中,选择 Automation ContentCollection Approvals

    需要批准的集合会检查状态 Needs review

  2. 在列表中找到您要查看的集合。您还可以使用搜索栏根据 Namespace、Repository 和 Status 过滤集合。
  3. 点 thumbs up 图标以批准并签署集合。在出现的界面中确认您的选择。

验证

批准的集合将移到 Published 存储库,用户可以在其中查看并下载它们以供使用。

2.2.3. 拒绝上传的集合以检查

您可以拒绝上传到单个命名空间的集合。所有等待审核的集合都位于 Automation ContentCollection Approvals 中。

需要批准的集合会检查状态 Needs review

前提条件

  • 您有修改 Ansible 存储库内容的权限。

流程

  1. 在导航面板中,选择 Automation ContentCollection Approvals
  2. 在列表中找到您要查看的集合。您还可以使用搜索栏根据 Namespace、Repository 和 Status 过滤集合。
  3. 单击缩略图标以拒绝集合。在出现的界面中确认您的选择。

验证

您拒绝发布的集合将移到 Rejected 仓库中。

2.3. 使用自动化中心进行存储库管理

作为平台管理员,您可以在存储库之间创建、编辑、删除和移动自动化内容集合。

2.3.1. Automation Hub 中的软件仓库类型

在自动化中心中,您可以根据是否要验证集合,将集合发布到两种类型的存储库:

Staging 软件仓库
任何有权上传到命名空间的用户都可以将集合发布到这些存储库中。这些仓库中的集合在搜索页面中不可用。相反,它们会显示在批准仪表板中,供管理员进行验证。staging 存储库使用 pipeline=staging 标签标记。
自定义软件仓库
对存储库具有写入权限的任何用户都可以将集合发布到这些存储库。自定义软件仓库可以是公共的,所有用户都可以查看它们,或者只有具有查看权限的用户才能看到它们。这些存储库不会在批准仪表板中显示。如果存储库所有者启用了搜索,则集合可能会出现在搜索结果中。

默认情况下,Automation Hub 包含一个 staging 存储库,它会在未指定存储库来上传集合时自动使用。用户可以在存储库创建期间创建新的暂存 存储库

在 Automation Hub 中,您可以将集合批准到标记为 pipeline=approved 标签的任何存储库中。默认情况下,自动化中心包含一个用于批准内容的存储库,但您可以选择从仓库创建屏幕中添加更多。您无法直接发布带有 pipeline=approved 标签的软件仓库。在发布至 'pipleline=approved' 存储库之前,集合必须首先经过一个暂存存储库并被批准。

自动批准
启用自动批准后,任何上传到 staging 存储库的集合将自动提升到标记为 pipeline=approved 的所有存储库。
批准需要

当禁用自动批准后,管理员可以查看批准仪表板,并查看上传到任何暂存存储库的集合。由 Approved 排序显示已批准的存储库列表。从此列表中,管理员可以选择要提升内容的一个或多个存储库。

如果只有一个已批准的存储库,集合会自动移到其中,管理员不会被提示选择存储库。

拒绝
拒绝的集合会自动放入被拒绝的存储库,该存储库被预安装。

使用基于角色的访问控制(RBAC)通过基于用户角色定义访问权限来限制用户对自定义存储库的访问。默认情况下,用户可以查看其自动化中心中的所有公共存储库,但它们无法修改存储库,除非其角色允许他们这样做。相同的逻辑适用于存储库上的其他操作。例如,您可以通过更改其角色权限,删除用户从自定义存储库下载内容的能力。有关管理用户对自动化中心访问权限的信息,请参阅 访问管理和身份验证

2.3.4. 在自动化中心中创建自定义存储库

当使用 Red Hat Ansible Automation Platform 创建存储库时,您可以将存储库配置为私有,或者在搜索结果中隐藏它。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentRepositories
  3. Create repository
  4. 输入 存储库的名称。
  5. Description 字段中,描述存储库的用途。
  6. 要在每次进行更改时保留较早版本的存储库,请在带有 Retained 版本号的 字段中输入一个图表。保留的版本数量范围是 0 到无限。要保存所有版本,将此设置为 null。

    注意

    如果对自定义存储库有更改有问题,您可以恢复到保留的不同存储库版本

  7. Pipeline 字段中,为存储库选择一个管道。此选项定义可以将集合发布到存储库的人员。

    Staging
    任何人都被允许将自动化内容发布到存储库中。
    已批准
    需要添加到此存储库的集合,才能通过暂存存储库通过批准过程进行。如果启用了自动批准,任何上传到 staging 存储库的集合将自动提升到所有批准的存储库。
    None
    对存储库具有权限的用户可以直接发布到存储库,存储库不属于批准管道。
  8. 可选: 要从搜索结果中隐藏存储库,选择 Hide from search
  9. 可选: 要使存储库私有,请选择 Make private。这会防止没有权限的用户查看存储库。
  10. 要将远程存储库中的内容同步到此存储库中,在 Remote 字段中选择包含您要包含在自定义存储库中的集合的远程。如需更多信息,请参阅存储库同步
  11. Create repository

默认情况下,私有存储库和自动化内容集合在系统的所有用户中是隐藏的。所有用户都可以查看公共存储库,但不能修改。使用这个流程提供对自定义存储库的访问。

流程

  1. 登录到私有自动化中心。
  2. 在导航面板中,选择 Automation ContentRepositories
  3. 单击列表中的存储库,再选择 Team Access 选项卡。
  4. 单击 Assign teams
  5. 选择您要授予角色的团队,然后点 Next
  6. 选择您要应用到所选团队的角色,然后点 Next
  7. 查看您的选择并点击 完成
  8. 单击 Close 以完成该过程。

2.3.6. 在自动化中心存储库中添加集合

创建存储库后,您可以开始向其中添加自动化内容集合。

流程

  1. 在导航面板中,选择 Automation ContentRepositories
  2. 点击列表中的存储库。
  3. 选择 Collection versions 选项卡。
  4. Add Collections 并选择您要添加到存储库的集合。
  5. Select

2.3.7. 恢复到不同的自动化中心存储库版本

当从存储库添加或删除自动化内容集合时,会创建一个新版本。如果对存储库的更改造成问题,您可以恢复到以前的版本。恢复是一种安全操作,且不会从系统中删除集合,而是更改与存储库关联的内容。保存的版本数量在创建存储库时由 Retained number of versions 设置定义。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentRepositories
  3. 单击列表中的存储库,然后选择 Versions 选项卡。
  4. 找到您要恢复到的版本,然后点击 More Actions 图标 channel,然后选择 Revert to this version
  5. 选中确认您的选择,然后单击 Revert to repository version

2.4. 在自动化 hub 中管理远程配置

您可以将远程配置设置为运行自动化中心的任何服务器。远程配置允许您从外部集合源将内容同步到自定义存储库。

2.4.1. 在自动化中心中创建远程配置

您可以使用 Red Hat Ansible Automation Platform 创建到外部集合源的远程配置。然后,您可以将这些集合中的内容同步到自定义存储库中。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentRemotes
  3. 单击 Create Remote
  4. 为远程配置输入一个名称
  5. 输入远程服务器的 URL,包括特定存储库的路径。

    注意

    要查找远程服务器 URL 和存储库路径,请导航到 Automation ContentRepositories,选择 More Actions 图标 WWN,然后选择 Copy CLI 配置

  6. 要仅同步签名的集合,请仅选中标记为 Signed 集合 的框。
  7. 要同步依赖项,请选中标有 Sync all dependencies 的复选框。要关闭依赖项同步,请保留此复选框。
  8. 输入访问外部集合所需的 TokenUsernamePassword,将凭证配置为远程服务器。

    注意

    要从导航面板中生成令牌,请选择 Automation ContentAPI token,点 Load token 并复制载入的令牌。

  9. 要从 console.redhat.com 访问集合,输入 SSO URL 以登录到身份提供程序(IdP)。
  10. 选择或创建 要求文件 来标识要与自定义存储库同步的集合和版本范围。例如,只下载 kubernetes 和 AWS 集合版本 5.0.0 或更高版本,要求文件类似如下:

    Collections:
     	  - name: community.kubernetes
    	  - name: community.aws
     		version:”>=5.0.0”
    Copy to Clipboard Toggle word wrap
  11. 可选: 要进一步配置远程,请使用 Show advanced options 下的选项:

    1. 如果您的机构有一个公司代理,请输入 Proxy URL, Proxy UsernameProxy Password
    2. 使用 TLS 验证复选框启用或禁用传输层安全性。
    3. 如果验证需要数字证书,输入客户端密钥客户端证书
    4. 如果您的服务器使用自签名 SSL 证书,在 CA certificate 字段中输入用于身份验证的 PEM 编码客户端证书。
    5. 要加快下载此远程集合的速度,在 Download concurrency 字段中指定可下载的集合数量。
    6. 要限制此远程上每秒的查询数量,指定 Rate Limit

      注意

      有些服务器可以设置特定的速率限制,如果超过,同步会失败。

2.4.2. 提供对远程配置的访问

创建远程配置后,您必须先为其提供访问,然后任何人都可以使用它。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentRemotes
  3. 单击列表中的存储库,然后选择 Team Access 选项卡。
  4. Add roles
  5. 选择您要授予角色的团队,然后点 Next
  6. 选择您要应用到所选团队的角色,然后点 Next
  7. 查看您的选择并点击 完成
  8. 单击 Close 以完成该过程。

2.5. 在自动化中心中同步软件仓库

您可以通过将存储库从一个自动化中心同步到另一个自动化中心,将相关的自动化内容集合分发到您的用户。为确保您有最新的集合更新,请定期将自定义存储库与远程同步。

2.5.1. 在自动化中心中同步软件仓库

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentRepositories
  3. 在列表中找到您的存储库并点 More Actions 图标 WWN,然后选择 Sync repository

    配置的远程中的所有集合都下载到您的自定义存储库中。要检查集合同步的状态,请从导航面板中选择 Automation ContentTask Management

    注意

    要将存储库同步限制为远程中的特定集合,您可以使用 requirements.yml 文件标识要拉取的特定集合。如需更多信息,请参阅创建远程

2.6. 在自动化中心中导出和导入集合

Ansible 自动化中心(Automation hub)在存储库中存储自动化内容集合。这些集合由自动化内容创建者版本。同一集合的许多版本可以同时存在于同一或不同的存储库中。

集合存储为可导入和导出的 .tar 文件。此存储格式可确保您导入到新存储库的集合与最初创建和导出的集合相同。

2.6.1. 在自动化中心中导出自动化内容集合

完成集合后,您可以将其导入到可在您的机构中的其他位置。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentCollectionsCollections 页面显示所有存储库中的所有集合。您可以搜索特定的集合。
  3. 点击您要导出的集合。此时会打开集合详情页面。
  4. Install 选项卡中,选择 Download tarball。.tar 文件下载到您的默认浏览器下载文件夹。现在,您可以将其导入到您选择的位置。

2.6.2. 在自动化中心中导入自动化内容集合

作为自动化内容创建者,您可以导入要在自定义存储库中使用的集合。要使用自定义存储库中的集合,您必须首先将集合导入到您的命名空间中,以便自动化中心管理员可以批准它。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentNamespacesNamespaces 页面显示所有可用的命名空间。
  3. 选择您要添加集合的命名空间。
  4. 选择 Collections 选项卡。
  5. Upload Collection
  6. 输入或浏览以选择集合文件。
  7. 选择存储库管道来添加集合。选择是 Staging reposRepositories,没有管道
  8. Upload collection

    Imports 屏幕显示测试概述,并在集合上传成功或失败时通知您。要查找导入,请在命名空间中点 More Actions 图标 3.3.0 并选择 Imports

    注意

    如果集合没有被批准,它不会显示在已发布的存储库中。

第 3 章 在私有自动化中心中管理容器

了解用于配置私有自动化中心远程 registry 和软件仓库的管理员工作流和流程。

3.1. 管理私有自动化中心远程 registry

使用自动化中心远程 registry 管理 Ansible Automation Platform 基础架构中的容器镜像存储库。您可以使用自动化中心执行以下任务:

  • 控制谁可以访问单个容器存储库
  • 更改镜像上的标签
  • 查看活动和镜像层
  • 提供有关每个容器存储库的附加信息

3.1.1. 容器注册中心

自动化中心远程 registry 用于存储和管理执行环境。构建或提供执行环境后,您可以将该执行环境推送到私有自动化中心的 registry 部分,以创建容器存储库。

然后,您可以:* 将执行环境推送到自动化中心远程 registry。* 创建一个组,可访问 registry 中的容器存储库。* 将新组添加到容器存储库。* 在容器存储库中添加 README,以为用户提供相关信息和相关链接。

要确定谁可以访问和管理 Ansible Automation Platform 中的执行环境,您必须配置私有自动化中心中的容器存储库的用户访问权限。

3.2.1. 远程 registry 团队权限

您可以控制用户如何与在私有自动化中心管理的执行环境进行交互。使用以下权限列表,为远程 registry 创建具有正确特权的团队。

Expand
表 3.1. 用于在私有自动化中心中管理容器的团队权限列表
权限名称描述

创建新容器

用户可以创建新容器

更改容器命名空间权限

用户可以更改容器存储库的权限

更改容器

用户可以更改容器的信息

更改执行环境标签

用户可以修改执行环境标签

推送到现有容器

用户可以将执行环境推送到现有容器中

3.2.2. 在私有自动化中心中创建新团队

您可以创建并为私有自动化中心中的团队创建并分配权限,以便用户访问系统中指定的功能。默认情况下,新团队没有任何分配的权限。您可以在首次创建团队或编辑现有团队时添加权限来添加或删除权限。

如需更多信息,请参阅 访问 管理和身份验证指南中的团队。

默认情况下,私有自动化中心不包括自动化执行环境。要填充容器 registry,您必须将执行环境推送到其中。

您必须遵循特定的工作流来填充私有自动化中心远程 registry:

  • 从红帽生态系统目录(registry.redhat.io)拉取自动化执行环境
  • 标记它们
  • 将其推送到私有自动化中心远程 registry
重要

2025 年 4 月 1 日起, quay.io 正在添加三个额外的端点。因此,客户必须调整防火墙系统列表中的允许/块列表,使其包含以下端点:

  • cdn04.quay.io
  • cdn05.quay.io
  • cdn06.quay.io

为了避免拉取容器镜像出现问题,客户必须将出站 TCP 连接(端口 80 和 443)到以下主机名:

  • cdn.quay.io
  • cdn01.quay.io
  • cdn02.quay.io
  • cdn03.quay.io
  • cdn04.quay.io
  • cdn05.quay.io
  • cdn06.quay.io

此更改应针对用于启用到 registry.redhat.ioregistry.access.redhat.com 的出站连接的任何防火墙配置进行修改。

在配置防火墙规则时使用主机名而不是 IP 地址。

完成此更改后,您可以继续从 registry.redhat.ioregistry.access.redhat.com 拉取镜像。您不需要 quay.io 登录,或以任何方式直接与 quay.io registry 交互,以继续拉取红帽容器镜像。

如需更多信息,请参阅容器镜像防火墙更改 2024/2025

确保 Table 6.4 中列出的 网络端口和协议。执行环境(EE) 可用于避免拉取容器镜像的问题。

3.3.1. 拉取在自动化中心中使用的执行环境

在将执行环境推送到私有自动化中心之前,您必须首先从现有 registry 中拉取它们并标记它们以供使用。以下示例详细介绍了如何从红帽生态系统目录(registry.redhat.io)拉取执行环境。

前提条件

  • 有从 registry.redhat.io 中拉取自动化执行环境的权限。

流程

  1. 使用您的 registry.redhat.io 凭证登录到 Podman:

    $ podman login registry.redhat.io
    Copy to Clipboard Toggle word wrap
  2. 输入您的用户名和密码。
  3. 拉取执行环境:

    $ podman pull registry.redhat.io/<ee_name>:<tag>
    Copy to Clipboard Toggle word wrap

验证

要验证您最近拉取的执行环境是否包含在列表中,请执行以下步骤:

  1. 列出本地存储中的镜像:

    $ podman images
    Copy to Clipboard Toggle word wrap
  2. 检查执行环境名称,并验证该标签是否正确。

3.3.2. 标记在自动化中心中使用的执行环境

从 registry 中拉取执行环境后,标记它们以便在私有自动化中心远程 registry 中使用。

前提条件

  • 您已从外部 registry 拉取执行环境。
  • 有自动化中心实例的 FQDN 或 IP 地址。

流程

  • 使用自动化中心容器存储库标记本地执行环境:

    $ podman tag registry.redhat.io/<ee_name>:<tag> <automation_hub_hostname>/<ee_name>
    Copy to Clipboard Toggle word wrap

验证

  1. 列出本地存储中的镜像:

    $ podman images
    Copy to Clipboard Toggle word wrap
  2. 验证您最近使用自动化中心信息标记的执行环境是否包含在列表中。

3.3.3. 将执行环境推送到私有自动化中心

您可以将标记的执行环境推送到私有自动化中心,以创建新容器并填充远程 registry。

前提条件

  • 有创建新容器的权限。
  • 有 Ansible Automation Platform 实例的 FQDN 或 IP 地址。

流程

  1. 使用 Ansible Automation Platform 位置和凭证登录到 Podman:

    $ podman login -u=<username> -p=<password> <aap_url>
    Copy to Clipboard Toggle word wrap
    警告

    当您登录时,让 Podman 提示您输入密码。使用您的用户名同时输入密码,可以将您的密码公开给 shell 历史记录。

  2. 将执行环境推送到自动化中心远程 registry:

    $ podman push <automation_hub_url>/<ee_name>
    Copy to Clipboard Toggle word wrap

故障排除

push 操作会在上传期间重新编译镜像层,无法保证可重复生成,依赖于客户端实施。这可能会导致镜像层摘要的变化,并导致推送操作失败,Error: Copying this image requires changing layer representation, which is not possible (image is signed or the destination specifies a digest)

验证

  1. 登录到您的 Ansible Automation Platform。
  2. 导航到 Automation ContentExecution Environments
  3. 在 container 存储库列表中找到容器。

3.4. 设置容器存储库

设置容器存储库时,您必须添加描述,包括 README,添加可以访问存储库的团队,以及标记自动化执行环境。

3.4.1. 设置远程 registry 的先决条件

  • 已登陆到 Ansible Automation Platform。
  • 您有更改存储库的权限。

3.4.2. 将 README 添加到容器存储库中

将 README 添加到容器存储库,以向用户提供如何使用容器的说明。自动化中心容器存储库支持 Markdown 创建 README。默认情况下,README 为空。

前提条件

  • 有更改容器的权限。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentExecution Environments
  3. 选择您的执行环境。
  4. Details 标签页中,点 Add
  5. Raw Markdown 文本字段中,使用 Markdown 格式输入您的 README 文本。
  6. 完成后点 Save

后续步骤

添加 README 后,您可以随时通过点 Edit 并重复步骤 4 和 5 对其进行编辑。

3.4.3. 提供对自动化执行环境的访问

为需要使用镜像的用户提供对自动化执行环境的访问。通过添加团队,您可以修改团队对容器存储库所需的权限。您可以使用这个选项根据团队分配的内容扩展或限制权限。

前提条件

  • 您具有改变容器命名空间的权限。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentExecution Environments
  3. 选择自动化执行环境。
  4. Team Access 选项卡中,单击 Add roles
  5. 选择您要授予访问权限的团队或团队,然后点 Next
  6. 选择您要添加到此执行环境的角色,然后点 Next
  7. 单击 Finish

3.4.4. 标记容器镜像

标记自动化执行环境,为存储在自动化中心容器存储库中的自动化执行环境添加额外的名称。如果没有将标签添加到自动化执行环境,则自动化中心名称默认为 latest

前提条件

  • 您已 更改自动化执行环境标签 权限。

流程

  1. 在导航面板中,选择 Automation ContentExecution Environments
  2. 选择自动化执行环境。
  3. Images 选项卡。
  4. More Actions 图标 ,点 Manage tags
  5. 在文本字段中添加新标签,然后点 Add
  6. 可选:通过点该镜像的任何标签上的 x 来删除当前标签

验证

  • Activity 选项卡,再检查最新的变化。

3.4.5. 创建凭证

要从密码或令牌保护的 registry 中拉取自动化执行环境镜像,您必须创建一个凭证。

在早期版本的 Ansible Automation Platform 中,您需要部署 registry 来存储执行环境镜像。在 Ansible Automation Platform 2.0 及更新的版本中,系统会像您已经启动并运行了远程 registry 一样运行。要存储执行环境镜像,请只添加您选择的远程 registry 的凭证。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ExecutionInfrastructureCredentials
  3. Create credential 以创建新凭证。
  4. 输入授权 NameDescriptionOrganization
  5. Credential Type 下拉菜单中,选择 Container Registry
  6. 输入身份验证 URL。这是远程 registry 地址。
  7. 输入登录到远程 registry 所需的 UsernamePassword 或 Token
  8. 可选: 要启用 SSL 验证,请选择 Verify SSL
  9. Create credential

3.5. 从容器存储库中拉取镜像

从自动化中心远程 registry 中拉取自动化执行环境,将副本复制到本地机器。Automation hub 为容器存储库中每个 最新的 自动化执行环境提供 podman pull 命令。您可以将此命令复制并粘贴到终端中,或者使用 podman pull 根据自动化执行环境标签复制自动化执行环境。

3.5.1. 拉取镜像

您可以从自动化中心远程 registry 中拉取自动化执行环境,将副本复制到本地机器。

前提条件

  • 您需要有从私有容器存储库查看和拉取的权限。

流程

  1. 如果您要从密码保护的 registry 中拉取自动化执行环境,请在拉取自动化执行环境前创建凭证
  2. 在导航面板中,选择 Automation ContentExecution Environments
  3. 选择自动化执行环境。
  4. Pull this image 条目中,点 Copy to clipboard
  5. 在终端中粘贴并运行命令。

验证

  • 运行 podman images 以查看本地机器上的镜像。

3.5.2. 从容器存储库同步镜像

您可以从自动化中心远程 registry 中拉取自动化执行环境,将镜像同步到本地机器。要从远程 registry 同步自动化执行环境,您必须首先配置远程 registry。

前提条件

您需要有从私有容器存储库查看和拉取的权限。

流程

  1. 在导航面板中,选择 Automation ContentExecution Environments
  2. https://registry.redhat.io 添加到 registry。
  3. 添加所需的任何凭证进行验证。

    注意

    有些远程 registry 非常积极,速率限制。在 Advanced Options 下设置速率限制。

  4. 在导航面板中,选择 Automation ContentExecution Environments
  5. 在页面标头中点 Create execution environment
  6. 选择您要从中拉取的 registry。Name 字段显示本地 registry 中显示的自动化执行环境的名称。

    注意

    Upstream name 字段是远程服务器上的镜像名称。例如,如果上游名称被设置为 "alpine",并且 Name 字段为 "local/alpine",则 alpine 镜像会从远程下载,并重命名为 "local/alpine"。

  7. 设置要包含或排除的标签列表。使用大量标签同步自动化执行环境会非常耗时,并使用大量磁盘空间。

3.6. 使用签名的容器

自动化执行环境是 Ansible Automation Platform 用来运行作业的容器镜像。您可以将此内容下载到私有自动化中心,并在您的机构内发布它。

3.6.1. 为容器签名部署您的系统

要部署您的系统,使其准备好进行容器签名,首先 启用了自动化内容集合和容器签名。然后您可以创建签名脚本,或者手动添加和签署执行环境

请注意,安装程序会在安装程序所在的同一服务器上查找脚本和密钥。

流程

  1. 在终端中,创建签名脚本,并将脚本路径作为安装程序参数传递。

    示例

    #!/usr/bin/env bash
    
    # pulp_container SigningService will pass the next 4 variables to the script.
    MANIFEST_PATH=$1
    FINGERPRINT="$PULP_SIGNING_KEY_FINGERPRINT"
    IMAGE_REFERENCE="$REFERENCE"
    SIGNATURE_PATH="$SIG_PATH"
    
    # Create container signature using skopeo
    skopeo standalone-sign \
      $MANIFEST_PATH \
      $IMAGE_REFERENCE \
      $FINGERPRINT \
      --output $SIGNATURE_PATH
    
    # Optionally pass the passphrase to the key if password protected.
    # --passphrase-file /path/to/key_password.txt
    
    # Check the exit status
    STATUS=$?
    if [ $STATUS -eq 0 ]; then
      echo {\"signature_path\": \"$SIGNATURE_PATH\"}
    else
      exit $STATUS
    fi
    Copy to Clipboard Toggle word wrap
  2. 查看 Ansible Automation Platform 安装程序清单文件,以了解以 automationhub swig 开头的容器签名选项。

    [all:vars]
    .
    .
    .
    
    automationhub_create_default_container_signing_service = True
    automationhub_container_signing_service_key = /absolute/path/to/key/to/sign
    automationhub_container_signing_service_script = /absolute/path/to/script/that/signs
    Copy to Clipboard Toggle word wrap
  3. 安装完成后,登录 Ansible Automation Platform 并导航到 Automation ContentSignature Keys

    注意

    container-default 服务由 Ansible Automation Platform 安装程序创建的。

验证

确保有一个名为 container-defaultcontainer-anyname 的密钥。

3.6.2. 在自动化中心远程添加容器

您可以使用以下两种方式之一将容器远程添加到自动化中心:

  • 通过创建远程
  • 使用自动化执行环境

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentRemote Registries
  3. 单击 Create remote registry

    • Name 字段中输入容器所在的 registry 的名称。
    • URL 字段中输入容器所在的 registry 的 URL。
    • 如果需要,在 Username 字段中输入用户名。
    • Password 字段中,根据需要输入密码。
    • 单击 Create remote registry

3.6.3. 添加和签名执行环境

自动化执行环境是容器镜像,可以纳入系统级别的依赖项和基于集合的内容。每个执行环境都允许您有一个自定义镜像来运行作业,每个镜像只包含运行作业时所需的内容。

流程

  1. 在导航面板中,选择 Automation ContentExecution Environments
  2. Create execution environment,然后在出现的字段中输入相关信息。

    1. Name 字段显示本地 registry 上执行环境的名称。
    2. Upstream name 字段是远程服务器上的镜像名称。
    3. Registry 下,从下拉菜单中选择 registry 的名称。
    4. 可选:在 Add tag (s) to include 字段中输入标签。如果字段为空,则将传递所有标签。您必须指定要传递哪些特定于存储库的标签。
    5. 可选:在 Add tag (s) to exclude 字段中输入要排除的标签。
  3. 单击 Create execution environment。您应该会在出现的列表中看到您的新执行环境。
  4. 同步并签署您的新自动化执行环境。

    1. More Actions 图标 HEKETI 并选择 Sync execution environment
    2. More Actions 图标 HEKETI 并选择 Sign execution environment
  5. 单击您的新执行环境。在 Details 页面中,找到 Signed 标签,以确定您的执行环境是否已签名。

3.6.4. 从本地环境推送容器镜像

使用以下步骤为本地系统中的自动化执行环境签名,并将签名的执行环境推送到自动化中心 registry。

流程

  1. 在终端中,登录到 Podman 或当前使用的任何容器客户端:

    > podman pull <container-name>
    Copy to Clipboard Toggle word wrap
  2. 拉取执行环境后,添加标签(例如: latest、rc、beta 或版本号,如 1.0; 2.3 等):

    > podman tag <container-name> <server-address>/<container-name>:<tag name>
    Copy to Clipboard Toggle word wrap
  3. 进行更改后签署执行环境,并将其推送到自动化中心 registry:

    > podman push <server-address>/<container-name>:<tag name> --tls-verify=false --sign-by <reference to the gpg key on your local>
    Copy to Clipboard Toggle word wrap

    如果执行环境没有签名,则只能使用嵌入的任何当前签名推送。另外,您可以使用以下脚本在不签名的情况下推送执行环境:

    > podman push <server-address>/<container-name>:<tag name> --tls-verify=false
    Copy to Clipboard Toggle word wrap
  4. 推送执行环境后,进入 Automation ContentExecution Environments
  5. 要显示新执行环境,点 Refresh 图标。
  6. 点镜像的名称查看您推送的镜像。

故障排除

每个执行环境的详细信息页面指示是否已签名。如果详情页面显示镜像为 Unsigned,您可以使用以下步骤从自动化中心签名执行环境:

  1. 单击执行环境名称,以导航到详细信息页面。
  2. More Actions 图标 。有三个选项可用:

    • 签名执行环境
    • 在 Controller 中使用
    • 删除执行环境
  3. 从下拉菜单中选择 Sign execution environment

验证

签名服务为执行环境签名。在对执行环境进行签名后,状态会更改为"signed"。

3.6.5. 带有签名镜像的策略

podman 或其他镜像客户端可以使用策略来确保镜像的有效性,方法是将特定策略分配给该签名。

3.6.6. 使用 podman 确保镜像由特定的签名签名

要确保执行环境由特定签名签名,签名必须首先位于您的本地环境中。

流程

  1. 在导航面板中,选择 Automation ContentSignature Keys
  2. 点您使用的签名旁的 Download key 图标。此时应打开一个新窗口,以表示您已下载了该密钥。

3.6.7. 配置客户端以验证签名

要确保从远程 registry 中拉取的执行环境被正确签名,您必须首先在策略文件中使用正确的公钥配置执行环境。

前提条件

  • 客户端必须配置 sudo 权限才能验证签名。

流程

  1. 打开终端并使用以下命令:

    >  sudo <name of editor> /etc/containers/policy.json
    Copy to Clipboard Toggle word wrap

    显示的文件类似如下:

    {
      "default": [{"type": "reject"}],
      "transports": {
      	"docker": {
        	"quay.io": [{"type": "insecureAcceptAnything"}],
        	"docker.io": [{"type": "insecureAcceptAnything"}],
        	"<server-address>": [
          	{
              	    "type": "signedBy",
              	    "keyType": "GPGKeys",
              	    "keyPath": "/tmp/containersig.txt"
          	}]
      	}
      }
    }
    Copy to Clipboard Toggle word wrap

    此文件显示 quay.iodocker.io 都不执行验证,因为类型是 insecureAcceptAnything,它会覆盖默认的 reject 类型。但是 <server-address> 将执行验证,因为参数 type 被设置为 "signedBy"

    注意

    目前唯一支持的 keyType 是 GPG 密钥。

  2. <server-address> 条目下,修改 keyPath <1> 使其包含您的密钥文件的名称。

    {
        	"default": [{"type": "reject"}],
        	"transports": {
            	"docker": {
              	  "quay.io": [{"type": "insecureAcceptAnything"}],
              	  "docker.io": [{"type": "insecureAcceptAnything"}],
              	  "<server-address>": [{
                    	"type": "signedBy",
                    	"keyType": "GPGKeys",
                    	"keyPath": "/tmp/<key file name>",
                    	"signedIdentity": {
                      	  "type": "matchExact"
                        }
                	  }]
                }
        	}
    }
    Copy to Clipboard Toggle word wrap
  3. 保存并关闭该文件。

验证

  • 使用 Podman 或您选择的客户端拉取文件:
> podman pull <server-address>/<container-name>:<tag name> --tls-verify=false
Copy to Clipboard Toggle word wrap

此响应验证执行环境是否已签名且没有错误。如果执行环境没有签名,命令会失败。

3.6.8. 删除容器仓库

从 Ansible Automation Platform 中删除远程存储库,以管理您的磁盘空间。您可以从 Execution Environment 列表视图中的 Red Hat Ansible Automation Platform 接口删除存储库。

前提条件

  • 有管理存储库的权限。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation ContentExecution Environments
  3. 在您要删除的容器存储库中,点 More Actions 图标 &&,然后点 Delete execution environment
  4. 显示确认消息时,单击复选框,再单击 Delete execution environment

验证

  • 返回到 自动化执行环境 列表视图。如果自动化执行环境已被成功删除,它将不再位于列表中。

法律通告

Copyright © 2025 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

© 2026 Red Hat
返回顶部