第 5 章 在 Red Hat Ansible Automation Platform Operator 中配置 Red Hat Ansible Automation Platform 组件
安装 Ansible Automation Platform Operator 并设置 Ansible Automation Platform 组件后,您可以为所需的输出配置它们。
您可以使用以下说明在 Red Hat OpenShift Container Platform 上进一步配置平台网关 Operator,指定自定义资源,并使用外部数据库部署 Ansible Automation Platform。
使用外部数据库部署 Ansible Automation Platform 有两种场景:
| 场景 | 所需的操作 |
| 全新安装 | 您必须为以下平台指定一个外部数据库实例:
请参阅 14.1 中的 aap-configuring-external-db-all-default-components.yml 示例。自定义资源 部分,用于帮助实现此目的。 如果使用 Red Hat Ansible Lightspeed,请使用 aap-configuring-external-db-with-lightspeed-enabled.yml 示例。 |
| 2.4 中现有的外部数据库 |
升级后,您的现有外部数据库保持不变,但您必须在 Ansible Automation Platform 自定义资源中指定 |
要使用外部数据库部署 Ansible Automation Platform,您必须首先创建一个 Kubernetes secret,其中包含用于连接数据库的凭证的 Kubernetes secret。
默认情况下,Ansible Automation Platform Operator 会在与 Ansible Automation Platform 部署相同的命名空间中创建并配置受管 PostgreSQL pod。您可以使用外部数据库部署 Ansible Automation Platform,而不是 Ansible Automation Platform Operator 自动创建的受管 PostgreSQL pod。
使用外部数据库可让您共享和重复使用资源,并手动管理备份、升级和性能优化。
只要数据库名称不同,同一外部数据库(PostgreSQL 实例)可用于自动化中心、自动化控制器和平台网关。换句话说,您可以在一个 PostgreSQL 实例中,带有使用不同名称的多个数据库。
以下部分概述了在 Ansible Automation Platform Operator 上为您的平台网关配置外部数据库的步骤。
前提条件
外部数据库必须是 PostgreSQL 数据库,这是 Ansible Automation Platform 当前发行版本支持的版本。外部 postgres 实例凭证和连接信息必须存储在 secret 中,然后在平台网关 spec 中设置。
Ansible Automation Platform 2.5 支持 PostgreSQL 15。
流程
按照以下模板创建一个
postgres_configuration_secretYAML 文件: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 type: "unmanaged" type: Opaque- 要创建 secret 的命名空间。这应该是您要部署到的同一命名空间。
- 数据库节点的可解析的主机名。
-
外部端口默认为
5432。 -
变量
password的值不应包含单引号或双引号('、')或反斜杠(\),以避免在部署、备份或恢复过程中出现任何问题。
使用
oc create命令将external-postgres-configuration-secret.yml应用到您的集群。$ oc create -f external-postgres-configuration-secret.yml注意以下示例是平台网关部署。要为所有组件配置外部数据库,在 14.1 中使用 aap-configuring-external-db-all-default-components.yml 示例。自定义资源 部分。
在创建
AnsibleAutomationPlatform自定义资源对象时,在 spec 中指定 secret,如下例所示:apiVersion: aap.ansible.com/v1alpha1 kind: AnsibleAutomationPlatform metadata: name: example-aap Namespace: aap spec: database: database_secret: automation-platform-postgres-configuration
5.1.2. 使用意外的 DataStyle 集合对外部数据库进行故障排除 复制链接链接已复制到粘贴板!
在升级 Ansible Automation Platform Operator 时,您可能会遇到类似如下的错误:
NotImplementedError: can't parse timestamptz with DateStyle 'Redwood, SHOW_TIME': '18-MAY-23 20:33:55.765755 +00:00'
当您有一个带有意外 DateStyle 设置的外部数据库时,会发生这种情况。您可以参考以下步骤来解决这个问题。
流程
编辑数据库服务器上的
/var/lib/pgsql/data/postgres.conf文件:# vi /var/lib/pgsql/data/postgres.conf查找并注释掉该行:
#datestyle = 'Redwood, SHOW_TIME'在新注释行下立即添加以下设置:
datestyle = 'iso, mdy'-
保存并关闭
postgres.conf文件。 重新载入数据库配置:
# systemctl reload postgresql注意运行此命令不会影响数据库操作。
SAML 的 HTTPS 重定向允许您登录一次并访问所有平台网关,而无需重新验证。
先决条件
- 您已在 Ansible Automation Platform Operator 的网关中成功配置了 SAML。有关此问题的帮助,请参阅配置 SAML 身份验证。
流程
- 登录到 Red Hat OpenShift Container Platform。
-
进入
。 - 选择 Ansible Automation Platform Operator 部署。
- 选择 All Instances,再进入您的 AnsibleAutomationPlatform 实例。
- 点 ProductShortName 图标,然后选择 。
在 YAML 视图中,将以下 YAML 代码粘贴到
spec:部分:spec: extra_settings: - setting: REDIRECT_IS_HTTPS value: '"True"'- 点击 。
验证
添加 REDIRECT_IS_HTTPS 设置后,等待 pod 自动重新部署。您可以运行以下命令来验证此设置使其进入 pod:
oc exec -it <gateway-pod-name> -- grep REDIRECT /etc/ansible-automation-platform/gateway/settings.py
5.1.4. 为平台网关 Operator ingress 配置 CSRF 设置 复制链接链接已复制到粘贴板!
Red Hat Ansible Automation Platform Operator 创建 Openshift 路由,并自动配置您的跨站点请求伪造(CSRF)设置。使用外部入口时,您必须在入口上配置 CSRF 以允许跨站点请求。您可以在 高级配置 下配置平台网关 operator ingress。
流程
- 登录到 Red Hat OpenShift Container Platform。
-
进入到
。 - 选择 Ansible Automation Platform Operator 部署。
- 选择 Ansible Automation Platform 选项卡。
对于新实例,请单击 。
- 对于现有实例,您可以通过点 WWN 图标 。
- 点 。
- 在 Ingres annotations 下,输入要添加到 ingress 的任何注解。
- 在 Ingress TLS secret 下,点下拉列表并从列表中选择一个 secret。
在以下代码中粘贴 YAML 视图 :
spec: extra_settings: - setting: CSRF_TRUSTED_ORIGINS value: - https://my-aap-domain.com- 配置平台网关后,点表单视图底部的 (如果编辑现有实例,则为 )。
验证
Red Hat OpenShift Container Platform 创建 pod。这可能需要几分钟时间。您可以通过进入到
| Operator Manager 控制器 pod | 自动化控制器 pod | Automation hub pod | event-Driven Ansible (EDA) pod | 平台网关 pod |
|---|---|---|---|---|
| 每个四个 operator 的 operator 管理器控制器,包括:
| 部署自动化控制器后,您可以看到添加以下 pod:
| 部署自动化中心后,您可以看到添加以下 pod:
| 部署 EDA 后,您可以看到添加以下 pod:
| 部署平台网关后,您可以看到添加以下 pod:
|
缺少 pod 可以代表需要 pull secret。受保护的或私有镜像 registry 需要 pull secret。如需更多信息,请参阅使用镜像 pull secret。您可以通过运行 oc describe pod <pod-name> 来查看 该 pod 上是否有 ImagePullBackOff 错误来进一步诊断此问题。
5.1.5. 平台网关的常见问题 复制链接链接已复制到粘贴板!
管理 Ansible Automation Platform 部署,并对常见问题进行故障排除。了解组件的资源管理、日志记录和错误恢复。
- 如果我删除 Ansible Automation Platform 部署,我仍然有权访问自动化控制器?
- 自动化控制器、自动化中心和 Event-Driven Ansible 嵌套在部署中,也会被删除。
- 在 Ansible Automation Platform 自定义资源(CR)层次结构中添加或删除参数时,如何管理参数?
- 在添加 参数时,您只能将其添加到 Ansible Automation Platform 自定义资源(CR)中,这些参数将处理它们到嵌套 CR 的方法。
在删除 参数时,您必须从 Ansible Automation Platform CR 和 嵌套 CR 中删除它们,如 Automation Controller CR。
- 部署出错,但不知道如何找出什么?
- 在 Operator 协调时,可以在命令行中跟进,这对调试非常有用。或者,您也可以单击部署实例,以查看部署要更新的状态条件。
- 仍然有可能查看各个组件日志?
- 在进行故障排除时,您应该检查主日志的 Ansible Automation Platform 实例,然后检查每个单独组件(EDA、AutomationHub、AutomationController)以获取更具体的信息。
- 我在哪里可以查看实例的条件?
-
要显示状态条件,请单击实例,并在 Details 或 Events 选项卡中查看。另外,要显示您可以运行 get 命令的状态条件:
oc get automationcontroller <instance-name> -o jsonpath=Pipe "| jq" - 我是否可以实时跟踪我的迁移?
-
为了帮助跟踪迁移的状态,或了解迁移失败的原因,您可以在迁移运行时查看迁移日志。使用 logs 命令:
oc logs fresh-install-controller-migration-4.6.0-jwfm6 -f - 我已配置了 SAML,但身份验证失败并显示此错误:"Unable to complete social auth login"我可以做什么?
-
您必须更新 Ansible Automation Platform 实例,使其包含
REDIRECT_IS_HTTPS额外设置。如需了解更多信息,请参阅在 OpenShift Container Platform 上为平台网关启用单点登录(SSO)。