Red Hat Ansible Automation Platform Operator 安装指南

Red Hat Ansible Automation Platform 2.1

本指南为 OpenShift Container Platform 上的 Red Hat Ansible Automation Platform Operator 支持的安装场景提供步骤和参考信息

Red Hat Customer Content Services

摘要

提供反馈:
如果您对本文档有任何改进建议,或发现错误,请联系技术支持 https://access.redhat.com,使用 Docs组件在 Ansible Automation PlatformJIRA 项目中创建一个问题。

前言

感谢您对 Red Hat Ansible Automation Platform 的关注。Ansible Automation Platform 是一个商业产品,它可以帮助团队通过增加控制、知识、协调基于 Ansible 的环境来更好地管理多阶的复杂部署环境。

本指南帮助您了解在 OpenShift Container Platform 上安装 Ansible Automation Platform Operator 后面的安装要求和流程。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

第 1 章 在 Red Hat OpenShift Container Platform 上规划 Red Hat Ansible Automation Platform Operator 安装

Red Hat Ansible Automation Platform 在 Red Hat Enterprise Linux 8 和 Red Hat Openshift 中都被支持。

OpenShift Operator 可帮助在 Red Hat OpenShift Container Platform 上安装和自动化复杂分布式软件的第 2 天操作。Ansible Automation Platform Operator 可让您在 Red Hat OpenShift Container Platform 上部署和管理 Ansible Automation Platform 组件。

您可以使用本节来帮助规划 Red Hat OpenShift Container Platform 环境中的 Red Hat Ansible Automation Platform 安装。安装前,请查看受支持的安装场景以确定哪些满足您的要求。

1.1. 关于 Ansible Automation Platform Operator

Ansible Automation Platform Operator 在 OpenShift 环境中提供新的 Ansible Automation Platform 实例的云原生、按钮式部署。Ansible Automation Platform Operator 包含用于部署和管理自动化控制器和私有 Automation hub 实例的资源类型。 它还包括自动化控制器作业资源,用于在自动化控制器部署中定义和启动作业。 

与从 Red Hat OpenShift Container Platform 上部署的 playbook 启动实例相比,使用 Kubernetes 原生 Operator 部署 Ansible Automation Platform 实例具有诸多优势,包括对 Red Hat Ansible Automation Platform 部署的升级和完整生命周期支持。

您可以从 OperatorHub 中的 Red Hat Operator 目录安装 Ansible Automation Platform Operator。

1.2. OpenShift Container Platform 版本兼容性

OpenShift Container Platform 4.7 及更新的版本提供了用于安装 Ansible Automation Platform 2.1 的 Ansible Automation Platform Operator。

其他资源

1.3. Red Hat OpenShift Container Platform 支持的安装场景

您可以使用 Red Hat OpenShift Container Platform Web 控制台中的 OperatorHub 来安装 Ansible Automation Platform Operator。

另外,您还可以从 OpenShift Container Platform 命令行界面(CLI) oc 安装 Ansible Automation Platform Operator。

按照以下其中一个工作流来安装 Ansible Automation Platform Operator,并使用它来安装所需的 Ansible Automation Platform 组件。

  • 首先自动化控制器和客户资源,然后是自动化中心(automation hub)和客户资源;
  • 首先是自动化中心(automation hub)和客户资源,然后是自动化控制器和客户资源;
  • 自动化控制器和客户资源;
  • 自动化中心和自定义资源.

1.4. 自定义资源

您可以为每个主要安装工作流定义自定义资源。

1.5. 其他资源

第 2 章 在 Red Hat OpenShift Container Platform 上安装 Red Hat Ansible Automation Platform Operator

先决条件

  • 您已在 Operator Hub 中安装了 Red Hat Ansible Automation Platform 目录。
  • 您已为平台创建一个 StorageClass 对象,以及一个带有 ReadWriteMany 访问模式的持久性卷声明(PVC)。详情请参阅 Dyamic Provisioning
  • 要使用 ReadWriteMany 访问模式的 Amazon Web Services 上运行 Red Hat OpenShift Container Platform 集群,您必须添加 NFS 或其他存储。

流程

  1. 登录到 Red Hat OpenShift Container Platform。
  2. 进入到 OperatorsOperatorHub
  3. 搜索 Red Hat Ansible Automation Platform operator 并点 Install
  4. 选择一个 Update Channel:

    • stable-2.x:安装命名空间范围的 operator,将自动化中心和自动化控制器实例部署到安装 Operator 的命名空间。这适用于大多数情况。stable-2.x 频道不需要管理员特权并使用较少的资源,因为它仅监控一个命名空间。
    • stable-2.x-cluster-scoped: 在集群中的多个命名空间中部署自动化中心和自动化控制器,并且需要集群中所有命名空间的管理员特权。
  5. 选择 Installation Mode, Installed Namespace, 和 Approval Strategy.
  6. Install

安装过程将开始。安装完成后,一个模态将会显示通知 Red Hat Ansible Automation Platform Operator 已安装在指定命名空间中。

  • View Operator 查看新安装的 Red Hat Ansible Automation Platform operator。

第 3 章 在 Red Hat OpenShift Container Platform web 控制台中安装和配置自动化控制器

您可以使用以下说明在 Red Hat OpenShift Container Platform 上安装自动化控制器 Operator,指定自定义资源,并使用外部数据库部署 Ansible Automation Platform。

注意

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

3.1. 先决条件

  • 您已在 Operator Hub 中安装了 Red Hat Ansible Automation Platform 目录。

3.2. 安装自动化控制器 Operator

  1. 进入到 OperatorsInstalled Operators,然后点 Ansible Automation Platform operator。
  2. 找到 Automation controller 选项卡,然后点 Create instance

您可以使用 Form View 或 YAML 视图来配置实例。

3.2.1. 配置自动化控制器 Operator 路由选项

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

  1. Advanced configuration
  2. Ingress type 下,点下拉菜单并选择 Route
  3. Route DNS host 下,输入路由要回答的通用主机名。
  4. Route TLS termination mechanism 下,点下拉菜单并选择 EdgePassthrough
  5. Route TLS credential secret 下,点下拉菜单并从列表中选择一个 secret。

3.2.2. 为您的 Automation hub Operator 配置 Ingress 类型

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

流程

  1. Advanced Configuration
  2. Ingress type 下,点下拉菜单并选择 Ingress
  3. Ingress annotations 下,输入要添加到 ingress 的任何注解。
  4. Ingress TLS secret 下,点下拉菜单并从列表中选择一个 secret。

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

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

验证

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

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 错误来进一步诊断此问题。

配置自动化控制器 operator 后,点表单视图底部的 Create。Red Hat OpenShift Container Platform 现在会创建 pod。这可能需要几分钟时间。

  • 进入到 WorkloadsPods 查看进度并找到新创建的实例。

3.3. 在 Red Hat Ansible Automation Platform operator 上为自动化控制器配置外部数据库

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

默认情况下,Red Hat Ansible Automation Platform Operator 会在与 Ansible Automation Platform 部署相同的命名空间中创建并配置一个受管 PostgreSQL pod。您可以使用外部数据库部署 Ansible Automation Platform,而不是 Red Hat Ansible Automation Platform Operator 自动创建的受管 PostgreSQL pod。

使用外部数据库可让您共享和重复使用资源,并手动管理备份、升级和性能优化。

注意

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

以下部分概述了在 Ansible Automation Platform operator 上为自动化控制器配置外部数据库的步骤。

前提条件

外部数据库必须是 PostgreSQL 数据库,这是 Ansible Automation Platform 当前发行版本支持的版本。

注意

Ansible Automation Platform 2.0 和 2.1 支持 PostgreSQL 12。

步骤

外部 postgres 实例凭证和连接信息需要存储在 secret 中,然后在自动化控制器 spec 中设置。

  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
    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
  3. 在创建 AutomationController 自定义资源对象时,在 spec 中指定 secret,参见以下示例:

    apiVersion: awx.ansible.com/v1beta1
    kind: AutomationController
    metadata:
      name: controller-dev
    spec:
      postgres_configuration_secret: external-postgres-configuration

3.4. 查找和删除 PVC

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

流程

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

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

    oc delete pvc -n <namespace> <pvc-name>

    == 其他资源

    • 如需有关在 OpenShift Container Platform 上运行 Operator 的更多信息,请参阅 OpenShift Container Platform 产品文档,然后点 OpenShift Container Platform 指南中的操作 Operator

第 4 章 在 Red Hat OpenShift Container Platform Web 控制台中安装和配置自动化中心

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

注意

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

4.1. 先决条件

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

4.2. 安装自动化 hub Operator

  1. 进入到 OperatorsInstalled Operators
  2. 找到 Automation hub 条目,然后点 Create instance

4.2.1. 在 Red Hat OpenShift Container Platform 上安装 Ansible Automation Platform Operator 的存储选项

如果您使用基于文件的存储,且安装场景包含自动化 hub,请确保将 Ansible Automation Platform Operator 的 ReadWriteOnce 默认存储选项改为 ReadWriteMany

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

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

其他资源

4.2.1.1. 使用 ReadWriteMany 访问模式置备 OCP 存储

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

流程

  1. 单击 Provisioning 以更新访问模式。
  2. 在第一步中,将 accessModes 从默认的 ReadWriteOnce 更新为 ReadWriteMany
  3. 完成本节中的额外步骤,以创建持久性卷声明 (PVC)。

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

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

  1. Advanced configuration
  2. Ingress type 下,点下拉菜单并选择 Route
  3. Route DNS host 下,输入路由要回答的通用主机名。
  4. Route TLS termination mechanism 下,点下拉菜单并选择 EdgePassthrough
  5. Route TLS credential secret 下,点下拉菜单并从列表中选择一个 secret。

4.2.3. 为您的 Automation hub Operator 配置 Ingress 类型

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

流程

  1. Advanced Configuration
  2. Ingress type 下,点下拉菜单并选择 Ingress
  3. Ingress annotations 下,输入要添加到 ingress 的任何注解。
  4. Ingress TLS secret 下,点下拉菜单并从列表中选择一个 secret。

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

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

验证

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

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 错误来进一步诊断此问题。

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

  • 进入到 WorkloadsPods 查看进度并找到新创建的实例。

4.3. 访问自动化 hub 用户界面

所有 pod 成功启动后,您可以访问自动化 hub 接口。

  1. 进入到 NetworkingRoutes
  2. Location 下,点您的自动化 hub 实例的 URL。

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

注意

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

4.4. 在 Red Hat Ansible Automation Platform operator 上为自动化中心配置外部数据库

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

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

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

注意

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

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

前提条件

外部数据库必须是 PostgreSQL 数据库,这是 Ansible Automation Platform 当前发行版本支持的版本。

注意

Ansible Automation Platform 2.0 和 2.1 支持 PostgreSQL 12。

步骤

外部 postgres 实例凭证和连接信息需要存储在 secret 中,然后在自动化中心 spec 中设置。

  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
    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
  3. 在创建 AutomationHub 自定义资源对象时,在 spec 中指定 secret,如下例所示:

    apiVersion: awx.ansible.com/v1beta1
    kind: AutomationHub
    metadata:
      name: hub-dev
    spec:
      postgres_configuration_secret: external-postgres-configuration

4.5. 查找和删除 PVC

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

流程

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

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

    oc delete pvc -n <namespace> <pvc-name>

    == 其他资源

    • 如需有关在 OpenShift Container Platform 上运行 Operator 的更多信息,请参阅 OpenShift Container Platform 产品文档,然后点 OpenShift Container Platform 指南中的操作 Operator

第 5 章 通过 OpenShift Container Platform CLI 安装 Ansible Automation Platform Operator

根据这些说明,使用 oc 命令从 OpenShift Container Platform 命令行界面(CLI)在 Red Hat OpenShift Container Platform 上安装 Ansible Automation Platform Operator。

5.1. 先决条件

  • 使用具有 operator 安装权限的账户访问 Red Hat OpenShift Container Platform。
  • OpenShift Container Platform CLI oc 命令安装在本地系统中。如需更多信息,请参阅 Red Hat OpenShift Container Platform 产品文档中的安装 OpenShift CLI

5.2. 使用 OpenShift Container Platform CLI 将命名空间订阅到 Operator

  1. 为 operator 创建项目

    oc new-project ansible-automation-platform
  2. 创建名为 sub.yaml 的文件。
  3. 将以下 YAML 代码添加到 sub.yaml 文件中。

    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        openshift.io/cluster-monitoring: "true"
      name: ansible-automation-platform
    ---
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: ansible-automation-platform-operator
      namespace: ansible-automation-platform
    spec:
      targetNamespaces:
        - ansible-automation-platform
    ---
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: ansible-automation-platform
      namespace: ansible-automation-platform
    spec:
      channel: 'stable-2.1'
      installPlanApproval: Automatic
      name: ansible-automation-platform-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
    ---
    apiVersion: automationcontroller.ansible.com/v1beta1
    kind: AutomationController
    metadata:
      name: example
      namespace: ansible-automation-platform
    spec:
      replicas: 1

    此文件创建一个名为 ansible-automation-platform 的 Subscription 对象,它将 ansible-automation-platform 命名空间订阅到 ansible-automation-platform-operator operator。

    然后,它会在 ansible-automation-platform 命名空间中创建一个名为 exampleAutomationController 对象。

    要从 示例 更改 Automation 控制器名称,请编辑 kind 中的 name 字段:Automationcontroller 部分的 sub.yaml,并将 <automation_controller_name> 替换为您要使用的名称:

    apiVersion: automationcontroller.ansible.com/v1beta1
    kind: AutomationController
    metadata:
      name: <automation_controller_name>
      namespace: ansible-automation-platform
  4. 运行 oc apply 命令来创建 sub.yaml 文件中指定的对象:

    oc apply -f sub.yaml

要验证命名空间是否已成功订阅到 ansible-automation-platform-operator operator,请运行 oc get subs 命令:

$ oc get subs -n ansible-automation-platform

如需有关将命名空间订阅到 Operator 的更多信息,请参阅 Red Hat OpenShift Container Platform Operator 指南中的使用 CLI 从 OperatorHub 安装

您可以使用 OpenShift Container Platform CLI 获取您创建的自动化控制器的 Web 地址和密码。

5.3. 从 OpenShift Container Platform CLI 获取自动化控制器登录详情

要登录到 Automation 控制器,您需要 web 地址和密码。

5.3.1. 获取自动化控制器 web 地址

Red Hat OpenShift Container Platform 路由以主机名的形式公开服务,以便外部客户端可根据名称访问该服务。创建自动化控制器实例时,为其创建一个路由。路由会继承您分配给 YAML 文件中的自动化控制器对象的名称。

使用以下命令获取路由:

oc get routes -n <controller_namespace>

在以下示例中,自动化控制器 exampleansible-automation-platform 命名空间中运行。

$ oc get routes -n ansible-automation-platform

NAME      HOST/PORT                                              PATH   SERVICES          PORT   TERMINATION     WILDCARD
example   example-ansible-automation-platform.apps-crc.testing          example-service   http   edge/Redirect   None

自动化控制器实例的地址为 example-ansible-automation-platform.apps-crc.testing

5.3.2. 获取自动化控制器密码

sub.yaml 中自动化控制器实例的 YAML 块为 nameadmin_user 键分配值。在以下命令中使用这些值来获取自动化控制器实例的密码。

oc get secret/<controller_name>-<admin_user>-password -o yaml

admin_user 的默认值为 admin。如果您在 sub.yaml 中更改了 admin 用户名,请修改该命令。

以下示例为名为 example 的自动化控制器对象检索密码:

oc get secret/example-admin-password -o yaml

自动化控制器实例的密码列在输出的 metadata 字段中:

$ oc get secret/example-admin-password -o yaml

apiVersion: v1
data:
  password: ODzLODzLODzLODzLODzLODzLODzLODzLODzLODzLODzL
kind: Secret
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Secret","metadata":{"labels":{"app.kubernetes.io/component":"automationcontroller","app.kubernetes.io/managed-by":"automationcontroller-operator","app.kubernetes.io/name":"example","app.kubernetes.io/operator-version":"","app.kubernetes.io/part-of":"example"},"name":"example-admin-password","namespace":"ansible-automation-platform"},"stringData":{"password":"88TG88TG88TG88TG88TG88TG88TG88TG"}}'
  creationTimestamp: "2021-11-03T00:02:24Z"
  labels:
    app.kubernetes.io/component: automationcontroller
    app.kubernetes.io/managed-by: automationcontroller-operator
    app.kubernetes.io/name: example
    app.kubernetes.io/operator-version: ""
    app.kubernetes.io/part-of: example
  name: example-admin-password
  namespace: ansible-automation-platform
  resourceVersion: "185185"
  uid: 39393939-5252-4242-b929-665f665f665f

对于这个实例,密码是 88TG88TG88TG88TG88TG88TG88TG88TG

5.4. 其他资源

  • 如需有关在 OpenShift Container Platform 上运行 Operator 的更多信息,请参阅 OpenShift Container Platform 产品文档,然后点 OpenShift Container Platform 指南中的操作 Operator

第 6 章 使用带有自动化中心的 Red Hat Single Sign-On Operator

私有自动化中心使用 Red Hat Single Sign-On 进行验证。

Red Hat Single Sign-On Operator 会创建和管理资源。使用此 Operator 创建自定义资源,以在 Openshift 中自动执行 Red Hat Single Sign-On 管理。

  • 虚拟机 (VM) 上安装 Ansible Automation Platform 时,安装程序可以自动安装和配置 Red Hat Single Sign-On,以用于私有自动化中心。
  • 在 Red Hat OpenShift Container Platform 上安装 Ansible Automation Platform 时,您必须单独安装单点登录。

本章论述了在 OpenShift Container Platform 上安装 Ansible Automation Platform 时配置 Red Hat Single Sign-On 并将其与私有自动化中心集成的过程。

先决条件

  • 您具有 operator 安装权限的账户访问 Red Hat OpenShift Container Platform。
  • 已安装包含 Red Hat Ansible Automation Platform operator 的目录。
  • 已安装 Red Hat Single Sign-On Operator。要安装 Red Hat Single Sign-On Operator,请按照 Red Hat Single Sign-On 文档中的使用自定义资源安装 Red Hat Single Sign-On 中的步骤操作。

6.1. 创建 Keycloak 实例

安装 Red Hat Single Sign-On Operator 时,您可以创建一个 Keycloak 实例以用于 Ansible Automation Platform。

在此,您提供一个外部 Postgres 或会为您创建一个。

流程

  1. 进入 OperatorInstalled Operators
  2. 选择 rh-sso 项目。
  3. 选择 Red Hat Single Sign-On Operator
  4. 在 Red Hat Single Sign-On Operator 详情页面中选择 Keycloak
  5. 单击 Create instance
  6. YAML 视图

    默认 Keycloak 自定义资源如下:

    apiVersion: keycloak.org/v1alpha1
    kind: Keycloak
    metadata:
      name: example-keycloak
      labels:
    	app: sso
      namespace: aap
    spec:
      externalAccess:
    	enabled: true
      instances: 1
  7. Create
  8. 部署完成后,您可以使用此凭证登录到管理控制台。
  9. 您可以在命名空间中的 credential-<custom-resource> (example keycloak) secret 中找到管理员的凭证。

6.2. 为 Ansible Automation Platform 创建 Keycloak 域

创建域来管理一组用户、凭据、角色和组。用户从属于并登陆到的域。域彼此隔离,只能管理和验证其控制的用户。

流程

  1. 进入 OperatorInstalled Operators
  2. 选择 Red Hat Single Sign-On Operator 项目。
  3. 选择 Keycloak Realm 选项卡,再点 Create Keycloak Realm
  4. Keycloak Realm 表单中,选择 YAML 视图。编辑 YAML 文件,如下所示:

    kind: KeycloakRealm
    apiVersion: keycloak.org/v1alpha1
    metadata:
      name: ansible-automation-platform-keycloakrealm
      namespace: rh-sso
      labels:
        app: sso
        realm: ansible-automation-platform
    spec:
      realm:
        id: ansible-automation-platform
        realm: ansible-automation-platform
        enabled: true
        displayName: {PlatformNameShort}
      instanceSelector:
        matchLabels:
          app: sso

    字段

    描述

    metadata.name

    在元数据中为配置资源 (CR) 的名称设置唯一值。

    metadata.namespace

    在元数据中为配置资源 (CR) 的名称设置唯一值。

    metadata.labels.app

    将标签设置为唯一值。这在创建客户端 CR 时使用。

    metadata.labels.realm

    将标签设置为唯一值。这在创建客户端 CR 时使用。

    spec.realm.id

    设置 realm 名称和 id。这些名称必须相同。

    spec.realm.realm

    设置 realm 名称和 id。这些名称必须相同。

    spec.realm.displayname

    设置显示的名称。

  5. Create 并等待进程完成。

6.3. 创建 Keycloak 客户端

Keycloak 客户端使用 Red Hat Single Sign-On 验证 hub 用户。当用户验证请求时,请求会通过 Keycloak 客户端。当 Single Sign-On 验证或发出 OAuth 令牌时,客户端会向自动化中心提供总结,用户可以登录。

流程

  1. 进入 OperatorInstalled Operators
  2. 选择 Red Hat Single Sign-On Operator 项目。
  3. 选择 Keycloak Client 选项卡,然后点 Create Keycloak Client
  4. 在 Keycloak Realm 表单中,选择 YAML 视图
  5. 使用以下内容替换默认 YAML 文件:

    kind: KeycloakClient
    apiVersion: keycloak.org/v1alpha1
    metadata:
      name: automation-hub-client-secret
      labels:
        app: sso
        realm: ansible-automation-platform
      namespace: rh-sso
    spec:
      realmSelector:
        matchLabels:
          app: sso
          realm: ansible-automation-platform
      client:
        name: Automation Hub
        clientId: automation-hub
        secret: <client-secret>                        1
        clientAuthenticatorType: client-secret
        description: Client for {HubNameStart}
        attributes:
          user.info.response.signature.alg: RS256
          request.object.signature.alg: RS256
        directAccessGrantsEnabled: true
        publicClient: true
        protocol: openid-connect
        standardFlowEnabled: true
        protocolMappers:
          - config:
              access.token.claim: "true"
              claim.name: "family_name"
              id.token.claim: "true"
              jsonType.label: String
              user.attribute: lastName
              userinfo.token.claim: "true"
            consentRequired: false
            name: family name
            protocol: openid-connect
            protocolMapper: oidc-usermodel-property-mapper
          - config:
              userinfo.token.claim: "true"
              user.attribute: email
              id.token.claim: "true"
              access.token.claim: "true"
              claim.name: email
              jsonType.label: String
            name: email
            protocol: openid-connect
            protocolMapper: oidc-usermodel-property-mapper
            consentRequired: false
          - config:
              multivalued: "true"
              access.token.claim: "true"
              claim.name: "resource_access.${client_id}.roles"
              jsonType.label: String
            name: client roles
            protocol: openid-connect
            protocolMapper: oidc-usermodel-client-role-mapper
            consentRequired: false
          - config:
              userinfo.token.claim: "true"
              user.attribute: firstName
              id.token.claim: "true"
              access.token.claim: "true"
              claim.name: given_name
              jsonType.label: String
            name: given name
            protocol: openid-connect
            protocolMapper: oidc-usermodel-property-mapper
            consentRequired: false
          - config:
              id.token.claim: "true"
              access.token.claim: "true"
              userinfo.token.claim: "true"
            name: full name
            protocol: openid-connect
            protocolMapper: oidc-full-name-mapper
            consentRequired: false
          - config:
              userinfo.token.claim: "true"
              user.attribute: username
              id.token.claim: "true"
              access.token.claim: "true"
              claim.name: preferred_username
              jsonType.label: String
            name: <username>
            protocol: openid-connect
            protocolMapper: oidc-usermodel-property-mapper
            consentRequired: false
          - config:
              access.token.claim: "true"
              claim.name: "group"
              full.path: "true"
              id.token.claim: "true"
              userinfo.token.claim: "true"
            consentRequired: false
            name: group
            protocol: openid-connect
            protocolMapper: oidc-group-membership-mapper
          - config:
              multivalued: 'true'
              id.token.claim: 'true'
              access.token.claim: 'true'
              userinfo.token.claim: 'true'
              usermodel.clientRoleMapping.clientId:  '{HubName}'
              claim.name: client_roles
              jsonType.label: String
            name: client_roles
            protocolMapper: oidc-usermodel-client-role-mapper
            protocol: openid-connect
          - config:
              id.token.claim: "true"
              access.token.claim: "true"
              included.client.audience: '{HubName}'
            protocol: openid-connect
            name: audience mapper
            protocolMapper: oidc-audience-mapper
      roles:
        - name: "hubadmin"
          description: "An administrator role for {HubNameStart}"
    1
    使用唯一值替换它。
  6. Create 并等待进程完成。

部署自动化中心时,您必须使用 "Valid Redirect URI" 和 "Web Origins" 更新客户端,如更新 Red Hat Single Sign-On 客户端中所述。另外,客户端会预先配置令牌映射程序,如果您的身份验证供应商未向 Red Hat SSO 提供组数据,则必须更新组映射来反映传递的信息。这通常由用户属性实现。

6.4. 创建 Keycloak 用户

此流程会创建一个有 hubadmin 角色的 Keycloak 用户,它可以使用 Super Administration 权限登录到自动化中心。

流程

  1. 进入 OperatorInstalled Operators
  2. 选择 Red Hat Single Sign-On Operator 项目。
  3. 选择 Keycloak Realm 选项卡,再点 Create Keycloak User
  4. Keycloak User 表单中,选择 YAML 视图
  5. 使用以下内容替换默认 YAML 文件:

    apiVersion: keycloak.org/v1alpha1
    kind: KeycloakUser
    metadata:
      name: hubadmin-user
      labels:
        app: sso
        realm: ansible-automation-platform
      namespace: rh-sso
    spec:
      realmSelector:
        matchLabels:
          app: sso
          realm: ansible-automation-platform
      user:
        username: hub_admin
        firstName: Hub
        lastName: Admin
        email: hub_admin@example.com
        enabled: true
        emailVerified: false
        credentials:
          - type: password
            value: <ch8ngeme>
        clientRoles:
          automation-hub:
            - hubadmin
  6. Create 并等待进程完成。

创建用户时,Operator 会创建一个包含用户名和密码的 Secret,格式为:credential-<realm name>-<username>-<namespace>。在本例中,凭据名为 credentials-ansible-automation-platform-hub-admin-rh-sso。创建用户时,Operator 不会更新用户密码。密码的改变不会反映在 Secret 中。

6.5. 安装 Ansible Automation Platform Operator

流程

  1. 进入 OperatorOperator Hub,搜索 Ansible Automation Platform Operator。
  2. 选择 Ansible Automation Platform Operator 项目。
  3. 点 Operator 标题。
  4. Install
  5. 选择要将 Operator 安装到的项目。红帽建议使用 Operator 推荐的命名空间名称。

    1. 如果要将 Operator 安装到推荐的项目里,请从下拉菜单中选择 Create Project
    2. 输入项目名称。
    3. Create
  6. Install
  7. 安装 Operator 后,点 View Operator

6.6. 创建 Red Hat Single Sign-On 连接 secret

流程

  1. 进入 https://<sso_host>/auth/realms/ansible-automation-platform
  2. 复制 public_key 值。
  3. 在 OpenShift Web UI 中,进入到 WorkloadsSecrets
  4. 选择 ansible-automation-platform 项目。
  5. Create,然后选择 From YAML
  6. 编辑以下 YAML 以创建 secret

    apiVersion: v1
    kind: Secret
    metadata:
      name: automation-hub-sso                       1
      namespace: ansible-automation-platform
    type: Opaque
    stringData:
      keycloak_host: "keycloak-rh-sso.apps-crc.testing"
      keycloak_port: "443"
      keycloak_protocol: "https"
      keycloak_realm: "ansible-automation-platform"
      keycloak_admin_role: "hubadmin"
      social_auth_keycloak_key: "automation-hub"
      social_auth_keycloak_secret: "client-secret"   2
      social_auth_keycloak_public_key: >-            3
    1
    创建自动化中心实例时使用此名称。
    2
    如果在为自动化中心创建 Keycloak 客户端时更改 secret,请务必更改此值以匹配。
    3
    输入在安装 Ansible Automation Platform Operator 中复制的 public_key 值。
  7. Create 并等待进程完成。

6.7. 使用 Operator 安装自动化中心

按照以下流程使用 Operator 安装自动化中心。

流程

  1. 进入 OperatorInstalled Operators
  2. 选择 Ansible Automation Platform。
  3. 选择 Automation hub 选项卡,再点 Create Automation hub
  4. 选择 YAML 视图。YAML 应该类似于:

    apiVersion: automationhub.ansible.com/v1beta1
    kind: AutomationHub
    metadata:
      name: private-ah                              1
      namespace: ansible-automation-platform
    spec:
      sso_secret: automation-hub-sso                2
      pulp_settings:
        verify_ssl: false
      route_tls_termination_mechanism: Edge
      ingress_type: Route
      loadbalancer_port: 80
      file_storage_size: 100Gi
      image_pull_policy: IfNotPresent
      web:
        replicas: 1
      file_storage_access_mode: ReadWriteMany
      content:
        log_level: INFO
        replicas: 2
      postgres_storage_requirements:
        limits:
          storage: 50Gi
        requests:
          storage: 8Gi
      api:
        log_level: INFO
        replicas: 1
      postgres_resource_requirements:
        limits:
          cpu: 1000m
          memory: 8Gi
        requests:
          cpu: 500m
          memory: 2Gi
      loadbalancer_protocol: http
      resource_manager:
        replicas: 1
      worker:
        replicas: 2
    1
    将 metadata.name 设置为要用于实例的名称。
    2
    将 spec.sso_secret 设置为创建一个 Secret 来保存 Red Hat Single Sign On 连接详情过程中创建的 secret 名称。
    注意

    此 YAML 关闭 SSL 验证 (ssl_verify: false)。如果对于 OpenShift 没有使用自签名的证书,则这个设置可以被忽略。

  5. Create 并等待进程完成。

6.8. 确定自动化中心路由

使用以下步骤确定 hub 路由。

流程

  1. 进入到 NetworkingRoutes
  2. 选择您用于安装的项目。
  3. 复制 private-ah-web-svc 服务的位置。如果您在创建自动化中心实例时使用不同的名称,则服务名称会有所不同。这用于在以后更新 Red Hat Single Sign-On 客户端。

6.9. 更新 Red Hat Single Sign-On 客户端

在自动化中心已被安装,并且您知道实例的 URL,您需要更新 Red Hat Single Sign-On,设置 Valid Redirect URI 和 Web Origins。

流程

  1. 进入 OperatorInstalled Operators
  2. 选择 RH-SSO 项目。
  3. Red Hat Single Sign-On Operator
  4. 选择 Keycloak Client
  5. 点 automation-hub-client-secret 客户端。
  6. 选择 YAML
  7. 更新 Client YAML 以添加 Valid Redirect URI 和 Web Origins 设置。

    redirectUris:
      - 'https://private-ah-ansible-automation-platform.apps-crc.testing/*'
    webOrigins:
      - 'https://private-ah-ansible-automation-platform.apps-crc.testing'

    字段

    描述

    redirectURIs

    这是确定 Automation Hub Route 中确定的位置。确定在 redirectUris 设置的末尾添加了 /*。

    webOrigins

    这是确定 Automation Hub Route 中确定的位置。

    注意

    在输入这些设置时,确保缩进正确。

  8. 点击 Save

验证连接

  1. 进入自动化中心路由。
  2. 输入 hub_admin 用户凭证并登录。
  3. Red Hat Single Sign-On 处理身份验证并重定向到自动化中心。

6.10. 其他资源

法律通告

Copyright © 2023 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.