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 被改进,以定义两个名为 prehookposthook 的子文件夹。这两个文件夹都位于 Git 仓库资源根路径中,并分别包含所有 prehook 和 posthook Ansible Automation Platform 作业。

创建 Git 订阅时,所有 prehook 和 posthook AnsibleJob 资源都会作为对象解析并存储在内存中。应用程序订阅控制器决定何时创建 prehook 和 posthook AnsibleJob 实例。

当您创建订阅自定义资源时,Git 分支和 Git 路径指向 Git 存储库根位置。在 Git root 位置中,两个子文件夹 prehookposthook 应该至少包含一个 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 作业的 prehookposthook 目录。

需要的访问权限:集群管理员

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 作业模板在运行时应该是幂等的。
  • 在模板上为 INVENTORYEXTRA VARIABLES 选择 PROMPT ON LAUNCH。如需更多信息,请参阅 作业模板
  1. 登录您的 OpenShift Container Platform 集群控制台。
  2. 在控制台导航中点 OperatorHub
  3. 搜索并安装 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.
Copy to Clipboard Toggle word wrap

需要的访问权限:集群管理员

您可以使用以下任务配置 Ansible Automation Platform 配置:

1.5.3.1. 设置 Ansible Automation Platform secret

您必须在同一订阅命名空间中创建 Ansible Automation Platform secret 自定义资源。Ansible Automation Platform secret 仅限于相同的订阅命名空间。

  1. 通过填写 Ansible Automation Platform secret name 部分,从控制台创建 secret。要使用终端创建 secret,请编辑并应用示例 yaml 文件:

    注: namespace 与订阅命名空间相同。stringData:tokenhost 来自 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
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来添加 YAML 文件:

    oc apply -f
    Copy to Clipboard Toggle word wrap

当应用程序订阅控制器创建 prehook 和 posthook Ansible 作业时,如果订阅 spec.hooksecretref 中的 secret 可用,则会将其发送到 AnsibleJob 自定义资源 spec.tower_auth_secretAnsibleJob 可以访问 Ansible Automation Platform。

1.5.3.2. 设置 secret 协调

对于使用 prehook 和 posthook AnsibleJob 的主要订阅,在 Git 存储库中更新所有 prehook 和 posthook AnsibleJob 或主订阅后,应协调主订阅。

prehook AnsibleJob 和主订阅持续协调并重新启动新的 pre AnsibleJob 实例。

  1. 在 pre AnsibleJob 完成后,重新运行主订阅。
  2. 如果主订阅中有任何规格更改,请重新部署订阅。应更新主要的订阅状态,使其与重新部署过程保持一致。
  3. 将 hub 集群订阅状态重置为 nil。订阅会与目标集群上的订阅部署一起刷新。

    当目标集群上的部署完成时,目标集群上的订阅状态会更新为 "subscribed""failed",并同步到 hub 集群订阅状态。

  4. 主订阅完成后,重新启动一个新的 post-AnsibleJob 实例。
  5. 验证订阅是否已更新。请参见以下输出:

    • subscription.status == "subscribed"
    • subscription.status == "propagated" 带有所有目标集群 "subscribed"

创建 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 作业历史记录

请参阅 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"
Copy to Clipboard Toggle word wrap

1.5.3.4. 启动工作流

要使用 AnsibleJob 自定义资源启动 Ansible Automation Platform 工作流,请将 job_template_name 字段替换为 workflow_template_name 字段,如下例所示。

请参阅 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
Copy to Clipboard Toggle word wrap

请参阅工作流以了解更多有关 Ansible 工作流的信息。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat