1.5. Ansible Automation Platform 集成
Red Hat Advanced Cluster Management 与 Red Hat Ansible Automation Platform 集成,以便您可以为 Git 订阅应用程序管理创建 prehook 和 posthook AnsibleJob 实例。了解组件以及如何配置 Ansible Automation Platform。
需要的访问权限:集群管理员
弃用: 应用程序订阅以及使用应用程序订阅的所有进程都已弃用。有关更新的功能,请参阅 GitOps 概述。
1.5.1. 集成和组件 复制链接链接已复制到粘贴板!
您可以将 Ansible Automation Platform 作业集成到 Git 订阅中。例如,对于数据库前端和后端应用程序,需要使用带有 Ansible Automation Platform 作业的 Ansible Automation Platform 来实例化数据库。应用程序由 Git 订阅安装。在使用订阅部署前端和后端应用程序 前,数据库会被实例化。
应用程序订阅 operator 被改进,以定义两个名为 prehook 和 posthook 的子文件夹。这两个文件夹都位于 Git 仓库资源根路径中,并分别包含所有 prehook 和 posthook Ansible Automation Platform 作业。
创建 Git 订阅时,所有 prehook 和 posthook AnsibleJob 资源都会作为对象解析并存储在内存中。应用程序订阅控制器决定何时创建 prehook 和 posthook AnsibleJob 实例。
当您创建订阅自定义资源时,Git 分支和 Git 路径指向 Git 存储库根位置。在 Git root 位置中,两个子文件夹 prehook 和 posthook 应该至少包含一个 Kind:AnsibleJob 资源。
1.5.1.1. Prehook 复制链接链接已复制到粘贴板!
应用程序订阅控制器在 prehook 文件夹中搜索所有 kind:AnsibleJob CR,作为 prehook AnsibleJob 对象,然后生成新的 prehook AnsibleJob 实例。新实例名称是 prehook AnsibleJob 对象名称和随机后缀字符串。
请参见以下实例名称示例:database-sync-1-2913063。
应用程序订阅控制器在一分钟循环中再次对协调请求进行队列,它会在 prehook AnsibleJob status.AnsibleJobResult 中检查。当 prehook 的状态为 successful 时,应用程序订阅将继续部署主订阅。
1.5.1.2. Posthook 复制链接链接已复制到粘贴板!
更新应用程序订阅状态时,如果订阅状态已订阅或传播到订阅状态的所有目标集群,应用程序订阅控制器会将 posthook 文件夹中的所有 AnsibleJob kind 自定义资源作为 posthook AnsibleJob 对象搜索。然后,它会生成新的 posthook AnsibleJob 实例。新实例名称是 posthook AnsibleJob 对象名称以及一个随机的后缀字符串。
请参见以下实例名称示例:service-ticket-1-2913849。
请参阅以下主题以启用 Ansible Automation Platform:
1.5.2. 设置 Ansible Automation Platform 复制链接链接已复制到粘贴板!
使用 Ansible Automation Platform 作业,您可以自动执行任务并与外部服务(如 Slack 和 PagerDuty 服务)集成。您的 Git 仓库资源根路径将包含用于部署应用程序、更新应用程序或从集群中删除应用程序一部分的 Ansible Automation Platform 作业的 prehook 和 posthook 目录。
需要的访问权限:集群管理员
1.5.2.1. 先决条件 复制链接链接已复制到粘贴板!
- 安装受支持的 OpenShift Container Platform 版本。
- 安装 Ansible Automation Platform。请参阅 Red Hat Ansible Automation Platform 文档来安装最新支持的版本。
- 安装 Ansible Automation Platform Resource Operator,将 Ansible Automation Platform 作业连接到 Git 订阅的生命周期。最佳实践: Ansible Automation Platform 作业模板应该是幂等的。
-
在模板上为
INVENTORY和EXTRA VARIABLES选择PROMPT ON LAUNCH。如需更多信息,请参阅 作业模板。
- 登录您的 OpenShift Container Platform 集群控制台。
- 在控制台导航中点 OperatorHub。
- 搜索并安装 Ansible Automation Platform Resource Operator。备注:要提交 prehook 和 posthook AnsibleJobs,请使用以下 OpenShift Container Platform 版本上的相应版本安装 Red Hat Ansible Automation Platform Resource Operator:
然后,您可以从控制台的 Credentials 页面创建凭证。点 Add credential,或者从导航中访问页面。如需更多信息,请参阅为 Ansible Automation Platform 创建凭证。
1.5.3. 配置 Ansible Automation Platform 复制链接链接已复制到粘贴板!
使用 Ansible Automation Platform 作业,您可以自动执行任务并与外部服务(如 Slack 和 PagerDuty 服务)集成。您的 Git 仓库资源根路径将包含用于部署应用程序、更新应用程序或从集群中删除应用程序一部分的 Ansible Automation Platform 作业的 prehook 和 posthook 目录。
需要的访问权限:集群管理员
您可以使用以下任务配置 Ansible Automation Platform 配置:
1.5.3.1. 设置 Ansible Automation Platform secret 复制链接链接已复制到粘贴板!
您必须在同一订阅命名空间中创建 Ansible Automation Platform secret 自定义资源。Ansible Automation Platform secret 仅限于相同的订阅命名空间。
通过填写
Ansible Automation Platform secret name部分,从控制台创建 secret。要使用终端创建 secret,请编辑并应用示例yaml文件:注:
namespace与订阅命名空间相同。stringData:token和host来自 Ansible Automation Platform。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来添加 YAML 文件:
oc apply -f
oc apply -fCopy to Clipboard Copied! Toggle word wrap Toggle overflow
当应用程序订阅控制器创建 prehook 和 posthook Ansible 作业时,如果订阅 spec.hooksecretref 中的 secret 可用,则会将其发送到 AnsibleJob 自定义资源 spec.tower_auth_secret,AnsibleJob 可以访问 Ansible Automation Platform。
1.5.3.2. 设置 secret 协调 复制链接链接已复制到粘贴板!
对于使用 prehook 和 posthook AnsibleJob 的主要订阅,在 Git 存储库中更新所有 prehook 和 posthook AnsibleJob 或主订阅后,应协调主订阅。
prehook AnsibleJob 和主订阅持续协调并重新启动新的 pre AnsibleJob 实例。
-
在 pre
AnsibleJob完成后,重新运行主订阅。 - 如果主订阅中有任何规格更改,请重新部署订阅。应更新主要的订阅状态,使其与重新部署过程保持一致。
将 hub 集群订阅状态重置为
nil。订阅会与目标集群上的订阅部署一起刷新。当目标集群上的部署完成时,目标集群上的订阅状态会更新为
"subscribed"或"failed",并同步到 hub 集群订阅状态。-
主订阅完成后,重新启动一个新的 post-
AnsibleJob实例。 验证订阅是否已更新。请参见以下输出:
-
subscription.status ==
"subscribed" -
subscription.status ==
"propagated"带有所有目标集群"subscribed"
-
subscription.status ==
创建 AnsibleJob 自定义资源时,会创建一个 Kubernetes 作业自定义资源,以通过与目标 Ansible Automation Platform 通信来启动 Ansible Automation Platform 作业。作业完成后,作业的最终状态将返回到 AnsibleJob status.AnsibleJob Result。
备注:
Ansible Automation Platform Job operator 保留 AnsibleJob status.conditions,以存储 Kubernetes 作业结果的创建。status.conditions 不会反映实际 Ansible Automation Platform 作业状态。
订阅控制器根据 AnsibleJob.status.AnsibleJob.Result 而不是 AnsibleJob.status.conditions 检查 Ansible Automation Platform 作业状态。
如 prehook 和 posthook AnsibleJob 工作流中所述,当 Git 存储库中更新了主订阅时,会创建一个新的 prehook 和 posthook AnsibleJob 实例。因此,一个主订阅可以链接到多个 AnsibleJob 实例。
subscription.status.ansiblejobs 中定义了四个字段:
-
lastPrehookJobs:最新的 prehook Ansible 作业 -
prehookJobsHistory:所有 prehook Ansible 作业历史记录 -
lastPosthookJobs:最新的 posthook Ansible 作业 -
posthookJobsHistory:所有 posthook Ansible 作业历史记录
1.5.3.3. 使用 Ansible Automation Platform 示例 YAML 文件 复制链接链接已复制到粘贴板!
请参阅 Git prehook 和 posthook 文件夹中的 AnsibleJob YAML 文件示例:
1.5.3.4. 启动工作流 复制链接链接已复制到粘贴板!
要使用 AnsibleJob 自定义资源启动 Ansible Automation Platform 工作流,请将 job_template_name 字段替换为 workflow_template_name 字段,如下例所示。
1.5.3.5. 使用 Ansible Automation Platform 示例 YAML 工作流 复制链接链接已复制到粘贴板!
请参阅 Git prehook 和 Git posthook 文件夹中的工作流 AnsibleJob YAML 文件示例:
请参阅工作流以了解更多有关 Ansible 工作流的信息。