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.5.2.2. 安装 Ansible Automation Platform Resource Operator

  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.

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

您可以使用以下任务配置 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
  2. 运行以下命令来添加 YAML 文件:

    oc apply -f

当应用程序订阅控制器创建 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 作业历史记录

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 工作流的信息。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.