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 变量。此更新提供了通过特定自动化指定集群名称,或将自动化应用到一组集群的功能。