1.5. Ansible Automation Platform 集成和简介
Red Hat Advanced Cluster Management 与 Red Hat Ansible Automation Platform 集成,以便您可以为 Git 订阅应用程序管理创建 prehook 和 posthook AnsibleJob
实例。了解组件以及如何配置 Ansible Automation Platform。
需要的访问权限:集群管理员
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
。如需更多信息,请参阅 作业模板。
1.5.2.2. 安装 Ansible Automation Platform Resource Operator
- 登录您的 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。apiVersion: v1 kind: Secret metadata: name: toweraccess namespace: same-as-subscription type: Opaque stringData: token: ansible-tower-api-token host: https://ansible-tower-host-url
运行以下命令来添加 YAML 文件:
oc apply -f
当应用程序订阅控制器创建 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 文件示例:
apiVersion: tower.ansible.com/v1alpha1 kind: AnsibleJob metadata: name: demo-job-001 namespace: default spec: tower_auth_secret: toweraccess job_template_name: Demo Job Template extra_vars: cost: 6.88 ghosts: ["inky","pinky","clyde","sue"] is_enable: false other_variable: foo pacman: mrs size: 8 targets_list: - aaa - bbb - ccc version: 1.23.45 job_tags: "provision,install,configuration" skip_tags: "configuration,restart"
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 文件示例:
apiVersion: tower.ansible.com/v1alpha1 kind: AnsibleJob metadata: name: demo-job-001 namespace: default spec: tower_auth_secret: toweraccess workflow_template_name: Demo Workflow Template extra_vars: cost: 6.88 ghosts: ["inky","pinky","clyde","sue"] is_enable: false other_variable: foo pacman: mrs size: 8 targets_list: - aaa - bbb - ccc version: 1.23.45
请参阅工作流以了解更多有关 Ansible 工作流的信息。