1.13. 配置 Ansible Tower 任务以在受管集群中运行

Red Hat Advanced Cluster Management 与 Ansible Tower 自动化集成,以便您可以创建创建或升级集群之前或之后的 prehook 和 posthook AnsibleJob 实例。为集群销毁配置 prehook 和 posthook 作业,集群扩展操作不被支持。

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

1.13.1. 先决条件

您必须满足以下先决条件才能在 Red Hat Advanced Cluster Management 集群中运行 Ansible 模板:

  • OpenShift Container Platform 4.6 或更高版本
  • 安装 Ansible Automation Platform Resource Operator,将 Ansible 作业连接到 Git 订阅的生命周期。为了获得最佳结果,在使用 AnsibleJob 启动 Ansible Tower 作业时,Ansible Tower 作业模板在运行时应该是等价的。您可以在 OpenShift Container Platform OperatorHub 中找到 Ansible Automation Platform Resource Operator。

有关安装和配置 Ansible Tower 自动化的更多信息,请参阅设置 Ansible 任务

1.13.2. 使用控制台将 AnsibleJob 模板配置为在集群中运行

您必须指定在创建集群时要用于集群的 Ansible 作业模板。要在创建集群时指定模板,请在 Automation 步骤中选择您要应用到集群的 Ansible 模板。如果没有 Ansible 模板,请单击 Add Automation template 来创建。

1.13.3. 创建 AnsibleJob 模板

要使用集群安装或升级来启动 Ansible 作业,您必须创建一个 Ansible 作业模板来指定作业何时运行。它们可以配置为在集群安装或升级之前或之后运行。

要指定在创建模板时运行 Ansible 模板的详情,请完成控制台中的步骤:

  1. 从 Red Hat Advanced Cluster Management 导航中选择 Infrastructure > Automation
  2. 选择适用于您的问题单的适用路径:

    • 如果要创建新模板,请单击 Create Ansible template 并继续第 3 步。
    • 如果要修改现有模板,请在要修改的模板的 Options 菜单中点击 Edit template,然后继续第 5 步。
  3. 输入模板的唯一名称,其中包含小写字母数字字符或连字符(-)。
  4. 选择您要用于新模板的凭据。要将 Ansible 凭证链接到 Ansible 模板,请完成以下步骤:

    1. 在 Red Hat Advanced Cluster Management 导航中选择 Automation。任何未链接到凭证的模板列表中的模板都包含可用于将模板链接到现有凭证的 Link to credential 图标。仅显示与模板相同的命名空间中的凭证。
    2. 如果没有可以选择的凭证,或者您不想使用现有凭证,请从您要链接的模板的 Options 菜单中选择 Edit template
    3. 如果必须创建凭证,点 Add credentials 并完成为 Ansible Automation Platform 创建凭证中的步骤。
    4. 在与模板相同的命名空间中创建凭据后,在编辑模板时,在 Ansible Automation Platform credential 字段中选择凭据。
  5. 如果要在安装集群前启动任何 Ansible 作业,请在 Pre-install Ansible job templates 部分中选择 Add an Ansible job template
  6. 选择或输入 prehook 和 posthook Ansible 作业的名称,以添加到集群的安装或升级中。

    注:Ansible job template name 需要与 Ansible Tower 中的 Ansible 作业的名称匹配。

  7. 如有必要,拖动 Ansible 作业以更改顺序。
  8. 对于您要在集群安装后启动的 Ansible 作业模板,重复 Post-install Ansible job templatesPre-upgrade Ansible job templates 以及 Post-upgrade Ansible job templates 部分中的第 5 - 7 步。

您的 Ansible 模板已配置为在集群中运行,在指定操作发生时指定此模板。

1.13.4. 使用标签将 AnsibleJob 模板配置为在受管集群中运行

当集群由 Red Hat Advanced Cluster Management for Kubernetes 创建或通过标签导入来由 Red Hat Advanced Cluster Management 管理时,您可以创建一个绑定到集群的 AnsibleJob

完成以下步骤以创建一个 Ansible 作业,并使用尚未由 Red Hat Advanced Cluster Management 管理的集群进行配置:

  1. 在应用程序功能支持的一个频道中为 Ansible 任务创建定义文件。只支持 Git 频道。

    使用 AnsibleJob 作为定义中的 kind 值。

    您的定义文件内容可能类似以下示例:

    apiVersion: apiVersion: tower.ansible.com/v1alpha1
    kind: AnsibleJob
    metadata:
      name: hive-cluster-gitrepo
    spec:
      tower_auth_secret: my-toweraccess
      job_template_name: my-tower-template-name
      extra_vars:
        variable1: value1
        variable2: value2

    通过将文件存储在 prehook 或 posthook 目录中,它会创建一个与放置规则匹配的集群名称列表。集群名称列表可作为 extra_vars 的值传递给 AnsibleJob kind 资源。当此值传递给 AnsibleJob 资源时,Ansible 作业可以决定新的集群名称并在自动化中使用它。

  2. 登录您的 Red Hat Advanced Cluster Management hub 集群。
  3. 通过 Red Hat Advanced Cluster Management 控制台,使用 Git 订阅创建一个应用程序,该订阅引用您刚刚创建的定义文件存储频道的频道。有关创建应用程序和订阅的更多信息,请参阅管理应用程序资源

    在创建订阅时,请指定一个标签,您可以在以后创建或导入的集群中添加该订阅以与集群连接。这可以是现有标签,如 vendor=OpenShift,也可以是您创建和定义的唯一可用标签。

    注:如果您选择已在使用的标签,Ansible 作业会自动运行。最佳实践是将不属于 prehook 或 posthook 的资源包含在应用程序中。

    当检测到集群时使用与 AnsibleJob 标签匹配的标签时,默认放置规则运行作业。如果您希望自动化在由 hub 集群管理的所有正在运行的集群中运行,请将以下内容添加到放置规则中:

    clusterConditions:
      - type: ManagedClusterConditionAvailable
        status: "True"

    您可以将其粘贴到放置规则的 YAML 内容中,或者在 Red Hat Advanced Cluster Management 控制台的 Application create 页面中选择 Deploy to all online clusters and local cluster 集群的选项。

  4. 按照创建集群将目标受管集群分别导入到 hub 集群中的内容创建或导入集群。

    在创建或导入集群时,使用您在创建订阅时使用的相同标签,AnsibleJob 会自动配置为在集群中运行。

Red Hat Advanced Cluster Management 会自动将集群名称注入 AnsibleJob.extra_vars.target_clusters 路径。您可以动态将集群名称注入到定义中。完成以下步骤,创建一个 AnsibleJob,并使用已经由 Red Hat Advanced Cluster Management 管理的集群进行配置:

  1. 在 Git Channel 的 prehook 或 posthook 目录中为 AnsibleJob 创建定义文件。

    使用 AnsibleJob 作为定义中的 kind 值。

    您的定义文件内容可能类似以下示例:

    apiVersion: tower.ansible.com/v1alpha1
    kind: AnsibleJob
    metadata:
      name: hive-cluster-gitrepo
    spec:
      tower_auth_secret: my-toweraccess
      job_template_name: my-tower-template-name
      extra_vars:
        variable1: value1
        variable2: value2

    使用访问您的 Ansible Tower 所需的验证 secret 替换 my-toweraccess

    my-tower-template-name 替换为 Ansible Tower 中的模板名称。

每次删除或添加由 Ansible 作业控制的集群时,AnsibleJob 会自动运行和更新 extra_vars.target_clusters 变量。此更新提供了通过特定自动化指定集群名称,或将自动化应用到一组集群的功能。

1.13.5. 查看 Ansible 作业的状态

您可以查看正在运行的 Ansible 作业的状态,以确保它启动并在成功运行。要查看正在运行的 Ansible 作业的当前状态,请完成以下步骤:

  1. 在 Red Hat Advanced Cluster Management 菜单中,选择 Infrastructure > Clusters 以访问 Clusters 页面。
  2. 选择集群名称来查看其详情。
  3. 在集群信息上查看 Ansible 作业最后一次运行的状态。该条目显示以下状态之一:

    • 当安装 prehook 或 posthook 任务失败时,集群状态会显示 Failed
    • 当升级 prehook 或 posthook 任务失败时,会在 Distribution 字段中显示升级失败的警告信息。

      提示: 如果集群 prehook 或 posthook 失败,您可以从 Clusters 页面重试升级。