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
。
1.5.1.3. Ansible Automation Platform 放置规则
使用有效的 prehook AnsibleJob
时,订阅会启动 prehook AnsibleJob
,而不会考虑放置规则的决定。
例如,您可以有一个 prehook AnsibleJob
,它传播放置规则订阅失败。当放置规则更改时,会创建新的 prehook 和 posthook AnsibleJob
实例。
请参阅以下主题以启用 {aap_short}:
1.5.2. 设置 Ansible Automation Platform
使用 Ansible Automation Platform 作业,您可以自动执行任务并与外部服务(如 Slack 和 PagerDuty 服务)集成。您的 Git 仓库资源根路径将包含用于部署应用程序、更新应用程序或从集群中删除应用程序一部分的 Ansible Automation Platform 作业的 prehook
和 posthook
目录。
需要的访问权限:集群管理员
1.5.2.1. 先决条件
- 安装 OpenShift Container Platform 4.6 或更高版本。
- 安装 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:- OpenShift Container Platform 4.8 需要(AAP)Resource Operator early-access、stable-2.1、stable-2.2
- OpenShift Container Platform 4.9 需要(AAP)Resource Operator early-access、stable-2.1、stable-2.2
- OpenShift Container Platform 4.10 及更新的版本需要(AAP) Resource Operator stable-2.1, stable-2.2
然后,您可以从控制台的 Credentials 页面创建凭证。点 Add credential,或者从导航中访问页面。如需更多信息,请参阅为 Ansible Automation Platform 创建凭证。
1.5.3. 配置 Ansible Automation Platform
With {aap-short} jobs, you can automate tasks and integrate with external services, such as Slack and PagerDuty services. Your Git repository resource root path will contain `prehook` and `posthook` directories for {aap-short} jobs that run as part of deploying the application, updating the application, or removing the application from a cluster.
需要的访问权限:集群管理员
您可以使用以下任务配置 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 工作流的信息。