5.3. 在 Red Hat OpenShift Container Platform Web 控制台中配置自动化中心


您可以使用以下说明在 Red Hat OpenShift Container Platform 上配置自动化中心 Operator,指定自定义资源,并使用外部数据库部署 Ansible Automation Platform。

自动化中心配置可以通过自动化中心 pulp_settings 或部署后直接在用户界面中进行。但请注意,在 pulp_settings 中进行的配置优先于用户界面中进行的设置。Hub 自定义资源规格应始终将 hub 设置设置为小写。

注意

当删除自动化 hub 实例时,PVC 不会被自动删除。如果新部署的名称与前一名称相同,这可能会导致迁移期间出现问题。因此,建议您在在同一命名空间中部署新自动化 hub 实例前手动删除旧的 PVC。如需更多信息,请参阅 查找和删除 PVC

5.3.1. 先决条件

  • 您已在 Operator Hub 中安装了 Ansible Automation Platform Operator。

自动化中心需要 ReadWriteMany 文件存储、Azure Blob 存储或 Amazon S3 存储进行操作,以便多个 pod 可以访问共享内容,如集合。

AutomationHub CR 上配置对象存储的过程与 Amazon S3 和 Azure Blob Storage 类似。

如果您使用基于文件的存储,且安装场景包含自动化中心,请确保 Ansible Automation Platform Operator 的 storage 选项被设置为 ReadWriteManyReadWriteMany 是默认的存储选项。

另外,OpenShift Data Foundation 提供了一个 ReadWriteMany 或 S3 实现。另外,您可以设置 NFS 存储配置来支持 ReadWriteMany。但是,这会将 NFS 服务器作为潜在的单点故障引入。

要确保成功安装 Ansible Automation Platform Operator,您必须为自动化 hub 置备存储类型,最初为 ReadWriteMany 访问模式。

流程

  1. 进入 Storage PersistentVolume
  2. Create PersistentVolume
  3. 在第一步中,将 accessModes 从默认的 ReadWriteOnce 更新为 ReadWriteMany

    1. 如需了解详细的概述,请参阅 Provisioning 以更新访问模式。
  4. 完成本节中的额外步骤,以创建持久性卷声明 (PVC)。
5.3.1.1.2. 在 Amazon S3 中配置对象存储

红帽支持用于自动化中心的 Amazon Simple Storage Service (S3)。您可以在部署 AutomationHub 自定义资源 (CR) 时配置它,也可以为现有实例配置它。

先决条件

  • 创建 Amazon S3 存储桶以存储对象。
  • 请注意 S3 存储桶的名称。

流程

  1. 创建包含 AWS 凭证和连接详情的 Kubernetes secret,以及 Amazon S3 存储桶的名称。以下示例创建一个名为 test-s3 的 secret:

    $ oc -n $HUB_NAMESPACE apply -f- <<EOF
    apiVersion: v1
    kind: Secret
    metadata:
      name: 'test-s3'
    stringData:
      s3-access-key-id: $S3_ACCESS_KEY_ID
      s3-secret-access-key: $S3_SECRET_ACCESS_KEY
      s3-bucket-name: $S3_BUCKET_NAME
      s3-region: $S3_REGION
    EOF
    Copy to Clipboard Toggle word wrap
  2. 将 secret 添加到自动化中心自定义资源 (CR) spec 中:

    spec:
      object_storage_s3_secret: test-s3
    Copy to Clipboard Toggle word wrap
  3. 如果要将此 secret 应用到现有实例,请重启 API pod 以使更改生效。<hub-name> 是 hub 实例的名称。

    $ oc -n $HUB_NAMESPACE delete pod -l app.kubernetes.io/name=<hub-name>-api
    Copy to Clipboard Toggle word wrap
5.3.1.1.3. 在 Azure Blob 中配置对象存储

红帽支持用于自动化中心的 Azure Blob Storage。您可以在部署 AutomationHub 自定义资源 (CR) 时配置它,也可以为现有实例配置它。

先决条件

  • 创建 Azure Storage blob 容器来存储对象。
  • 请注意 blob 容器的名称。

流程

  1. 创建一个包含 Azure 帐户凭证和连接详情的 Kubernetes secret,以及 Azure Storage blob 容器的名称。以下示例创建一个名为 test-azure 的 secret:

    $ oc -n $HUB_NAMESPACE apply -f- <<EOF
    apiVersion: v1
    kind: Secret
    metadata:
      name: 'test-azure'
    stringData:
      azure-account-name: $AZURE_ACCOUNT_NAME
      azure-account-key: $AZURE_ACCOUNT_KEY
      azure-container: $AZURE_CONTAINER
      azure-container-path: $AZURE_CONTAINER_PATH
      azure-connection-string: $AZURE_CONNECTION_STRING
    EOF
    Copy to Clipboard Toggle word wrap
  2. 将 secret 添加到自动化中心自定义资源 (CR) spec 中:

    spec:
      object_storage_azure_secret: test-azure
    Copy to Clipboard Toggle word wrap
  3. 如果要将此 secret 应用到现有实例,请重启 API pod 以使更改生效。<hub-name> 是 hub 实例的名称。

    $ oc -n $HUB_NAMESPACE delete pod -l app.kubernetes.io/name=<hub-name>-api
    Copy to Clipboard Toggle word wrap

5.3.1.2. 配置自动化 hub Operator 路由选项

Red Hat Ansible Automation Platform Operator 安装表单允许您在 高级配置下进一步配置 Automation hub operator 路由选项。

流程

  1. 登录到 Red Hat OpenShift Container Platform。
  2. 进入到 Operators Installed Operators
  3. 选择 Ansible Automation Platform Operator 部署。
  4. 选择 Automation Hub 选项卡。
  5. 对于新实例,点 Create AutomationHub

    1. 对于现有实例,您可以通过点 WWN 图标,然后编辑 AutomationHub 来编辑 YAML 视图。
  6. Advanced configuration
  7. Ingress type 下,点下拉菜单并选择 Route
  8. Route DNS host 下,输入路由要回答的通用主机名。
  9. Route TLS termination mechanism 下,点下拉菜单并选择 EdgePassthrough
  10. Route TLS credential secret 下,点下拉菜单并从列表中选择一个 secret。

    注意

    配置路由后,您可以通过将 route_host: 添加到该自动化中心实例的 YAML 中来自定义主机名。

5.3.1.3. 为自动化 hub Operator 配置 ingress 类型

Ansible Automation Platform Operator 安装表单允许您在 高级配置下进一步配置 Automation hub operator ingress。

流程

  1. 登录到 Red Hat OpenShift Container Platform。
  2. 进入到 Operators Installed Operators
  3. 选择 Ansible Automation Platform Operator 部署。
  4. 选择 Automation Hub 选项卡。
  5. 对于新实例,点 Create AutomationHub

    1. 对于现有实例,您可以通过点 WWN 图标,然后编辑 AutomationHub 来编辑 YAML 视图。
  6. Advanced Configuration
  7. Ingress type 下,点下拉菜单并选择 Ingress
  8. Ingress annotations 下,输入要添加到 ingress 的任何注解。
  9. Ingress TLS secret 下,点下拉菜单并从列表中选择一个 secret。

验证

配置 Automation hub Operator 后,点表单视图底部的 Create。Red Hat OpenShift Container Platform 创建 pod。这可能需要几分钟时间。

您可以通过进入到 Workloads Pods 并查找新创建的实例来查看进度。

验证来自自动化中心的 Ansible Automation Platform Operator 安装提供的以下 Operator pod 是否正在运行:

Expand
Operator Manager 控制器自动化控制器Automation hub

每 3 个 operator 的 operator 管理器控制器,包括:

  • automation-controller-operator-controller-manager
  • automation-hub-operator-controller-manager
  • resource-operator-controller-manager

部署自动化控制器后,您将看到添加的 pod:

  • controller
  • controller-postgres

部署自动化中心后,您将看到添加的 pod:

  • hub-api
  • hub-content
  • hub-postgres
  • hub-redis
  • hub-worker
注意

缺少 pod 可以代表需要 pull secret。受保护的或私有镜像 registry 需要 pull secret。如需更多信息,请参阅使用镜像 pull secret。您可以通过运行 oc describe pod <pod-name> 来查看 该 pod 上是否有 ImagePullBackOff 错误来进一步诊断此问题。

5.3.2. 查找自动化中心路由

您可以通过平台网关或以下流程访问自动化中心。

流程

  1. 登录到 Red Hat OpenShift Container Platform。
  2. 进入到 Networking Routes
  3. Location 下,点您的自动化 hub 实例的 URL。

验证

Automation hub 用户界面会启动,您可以在其中使用 Operator 配置流程中指定的管理员凭证进行登录。

注意

如果您没有在配置期间指定管理员密码,则会为您自动创建密码。要找到此密码,访问您的项目,选择 Workloads Secrets,打开 controller-admin-password。您可以从那里复制密码并将其粘贴到 Automation hub 密码字段中。

对于希望使用外部数据库部署 Ansible Automation Platform 的用户,可以通过使用实例凭证和连接信息配置 secret,然后使用 oc create 命令将其应用到其集群中。

默认情况下,Ansible Automation Platform Operator 会在与 Ansible Automation Platform 部署相同的命名空间中创建并配置受管 PostgreSQL pod。

如果用户更喜欢使用专用节点来确保专用资源或手动管理备份、升级或性能调整,则用户可能会选择使用外部数据库。

注意

只要数据库名称不同,同一外部数据库(PostgreSQL 实例)可用于自动化中心、自动化控制器和平台网关。换句话说,您可以在一个 PostgreSQL 实例中,带有使用不同名称的多个数据库。

以下部分概述了在 Ansible Automation Platform Operator 上为您的自动化中心配置外部数据库的步骤。

前提条件

外部数据库必须是 PostgreSQL 数据库,这是 Ansible Automation Platform 当前发行版本支持的版本。外部 postgres 实例凭证和连接信息需要存储在 secret 中,然后在自动化中心 spec 中设置。

注意

Ansible Automation Platform 2.5 支持 PostgreSQL 15。

流程

  1. 按照以下模板创建一个 postgres_configuration_secret YAML 文件:

    apiVersion: v1
    kind: Secret
    metadata:
      name: external-postgres-configuration
      namespace: <target_namespace> 
    1
    
    stringData:
      host: "<external_ip_or_url_resolvable_by_the_cluster>" 
    2
    
      port: "<external_port>" 
    3
    
      database: "<desired_database_name>"
      username: "<username_to_connect_as>"
      password: "<password_to_connect_with>" 
    4
    
      sslmode: "prefer" 
    5
    
      type: "unmanaged"
    type: Opaque
    Copy to Clipboard Toggle word wrap
    1. 要创建 secret 的命名空间。这应该是您要部署到的同一命名空间。
    2. 数据库节点的可解析的主机名。
    3. 外部端口默认为 5432
    4. 变量 password 的值不应包含单引号或双引号('、')或反斜杠(\),以避免在部署、备份或恢复过程中出现任何问题。
    5. 变量 sslmode 仅适用于外部数据库。允许的值是:prefer, disable, allow, require, verify-ca, 和 verify-full
  2. 使用 oc create 命令将 external-postgres-configuration-secret.yml 应用到您的集群。

    $ oc create -f external-postgres-configuration-secret.yml
    Copy to Clipboard Toggle word wrap
  3. 在创建 AutomationHub 自定义资源对象时,在 spec 中指定 secret,如下例所示:

    apiVersion: automationhub.ansible.com/v1beta1
    kind: AutomationHub
    metadata:
      name: hub-dev
    spec:
      postgres_configuration_secret: external-postgres-configuration
    Copy to Clipboard Toggle word wrap

数据库迁移脚本使用 hstore 字段来存储信息,因此在自动化中心 PostgreSQL 数据库中必须启用 hstore 扩展。

使用 Ansible Automation Platform 安装程序和受管 PostgreSQL 服务器时,此过程是自动的。

如果 PostgreSQL 数据库是外部的,则必须在安装前在自动化中心 PostgreSQL 数据库中手动启用 hstore 扩展。

如果在安装过程中没有启用 hstore 扩展,在数据库迁移过程中会出现一个失败。

流程

  1. 检查 PostgreSQL 服务器上是否有扩展(自动化 hub 数据库)。

    $ psql -d <automation hub database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore'"
    Copy to Clipboard Toggle word wrap
  2. 其中 <automation hub database> 的默认值为 automationhub

    带有 hstore 可用的输出示例

    name  | default_version | installed_version |comment
    ------+-----------------+-------------------+---------------------------------------------------
     hstore | 1.7           |                   | data type for storing sets of (key, value) pairs
    (1 row)
    Copy to Clipboard Toggle word wrap

    带有 hstore 不可用的输出示例

     name | default_version | installed_version | comment
    ------+-----------------+-------------------+---------
    (0 rows)
    Copy to Clipboard Toggle word wrap
  3. 在基于 RHEL 的服务器上,hstore 扩展包含在 postgresql-contrib RPM 软件包中,该软件包在安装 PostgreSQL 服务器 RPM 软件包时不会自动安装。

    要安装 RPM 软件包,请使用以下命令:

    dnf install postgresql-contrib
    Copy to Clipboard Toggle word wrap
  4. 使用以下命令将 hstore PostgreSQL 扩展加载到自动化中心数据库中:

    $ psql -d <automation hub database> -c "CREATE EXTENSION hstore;"
    Copy to Clipboard Toggle word wrap

    在以下输出中,installed_version 字段列出了使用的 hstore 扩展,表示启用了 hstore

    name | default_version | installed_version | comment
    -----+-----------------+-------------------+------------------------------------------------------
    hstore  |     1.7      |       1.7         | data type for storing sets of (key, value) pairs
    (1 row)
    Copy to Clipboard Toggle word wrap

5.3.4. 查找和删除 PVC

持久性卷声明 (PVC) 是一个存储卷,用于存储自动化 hub 和自动化控制器应用程序使用的数据。这些 PVC 独立于应用程序,即使应用程序被删除也是如此。如果您确信不再需要 PVC,或者已在其他位置备份它,您可以手动删除它们。

流程

  1. 列出部署命名空间中的现有 PVC:

    oc get pvc -n <namespace>
    Copy to Clipboard Toggle word wrap
  2. 通过比较旧部署名称和 PVC 名称来识别与之前部署关联的 PVC。
  3. 删除旧的 PVC:

    oc delete pvc -n <namespace> <pvc-name>
    Copy to Clipboard Toggle word wrap

5.3.5. 其他配置

集合下载计数可帮助您了解集合使用情况。要在自动化中心中添加集合下载计数,请设置以下配置:

spec:
  pulp_settings:
    ansible_collect_download_count: true
Copy to Clipboard Toggle word wrap

启用 ansible_collect_download_count 时,自动化中心将显示集合的下载计数。

在自动化 hub 中部署容器镜像前,您必须将 registry 添加到自动化控制器镜像配置中的 allowedRegistries 中。要做到这一点,您可以将以下代码复制并粘贴到自动化控制器镜像 YAML 中。

流程

  1. 登录到 Red Hat OpenShift Container Platform
  2. 导航到 Home Search
  3. 选择 Resources 下拉列表,并键入 "Image"。
  4. 选择 Image (config,openshift.io/v1)
  5. Name 标题下点 Cluster
  6. 选择 YAML 选项卡。
  7. 粘贴 spec 值下的以下内容:

    spec:
      registrySources:
        allowedRegistries:
        - quay.io
        - registry.redhat.io
        - image-registry.openshift-image-registry.svc:5000
        - <OCP route for your automation hub>
    Copy to Clipboard Toggle word wrap
  8. 点击 Save

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

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

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

先决条件

  • GPG 密钥对。如果没有,可以使用 gpg --full-generate-key 命令生成一个。
  • 您的公钥-私钥对有权在 Ansible Automation Platform Hub Operator 上配置内容签名。

流程

  1. 创建用于签名脚本的 ConfigMap。您创建的 ConfigMap 包含签名服务用于集合和容器镜像的脚本。

    注意

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

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

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

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

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

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: signing-scripts
    data:
      collection_sign.sh: |-
          #!/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 /var/lib/pulp/.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
      container_sign.sh: |-
        #!/usr/bin/env bash
    
        # galaxy_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. 为您的 GnuPG 私钥创建 secret。此 secret 安全地存储您用于签名的 GnuPG 私钥。

    gpg --export --armor <your-gpg-key-id> > signing_service.gpg
    
    oc create secret generic signing-galaxy --from-file=signing_service.gpg
    Copy to Clipboard Toggle word wrap

    该机密必须具有名为 signing_service.gpg 的密钥。

  3. 配置 AnsibleAutomationPlatform CR。

    apiVersion: aap.ansible.com/v1alpha1
    kind: AnsibleAutomationPlatform
    metadata:
      name: aap-hub-signing-sample
    spec:
      hub:
        signing_secret: "signing-galaxy"
        signing_scripts_configmap: "signing-scripts"
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat