12.5. 为 Resource Operator 创建自定义资源


使用 Resource Operator 直接从 Kubernetes 集群管理自动化控制器资源。本节提供了创建自定义资源的步骤,如 AnsibleJobJobTemplateAnsibleProject 等等。

12.5.1. 创建 AnsibleJob 自定义资源

AnsibleJob 自定义资源在 Kubernetes secret (自动化控制器主机 URL、令牌)中指定的自动化控制器实例中启动作业。您可以通过创建 AnsibleJob 资源,在自动化控制器上启动自动化作业。

流程

  1. 指定您要启动的连接 secret 和作业模板。

    apiVersion: tower.ansible.com/v1alpha1
    kind: AnsibleJob
    metadata:
      generateName: demo-job-1 # generate a unique suffix per 'kubectl create'
    spec:
      connection_secret: controller-access
      job_template_name: Demo Job Template
    Copy to Clipboard Toggle word wrap
  2. 配置作业的实时功能,如清单、额外变量和时间。

    spec:
      connection_secret: controller-access
      job_template_name: Demo Job Template
      inventory: Demo Inventory                    # Inventory prompt on launch needs to be enabled
      runner_image: quay.io/ansible/controller-resource-runner
      runner_version: latest
      job_ttl: 100
      extra_vars:                                  # Extra variables prompt on launch needs to be enabled
         test_var: test
      job_tags: "provision,install,configuration"  # Specify tags to run
      skip_tags: "configuration,restart"           # Skip tasks with a given tag
    Copy to Clipboard Toggle word wrap
    注意

    如果您要配置清单和额外变量,则必须在启动时启用提示。要启用 启动时提示,在 自动化控制器 UI 中: 在 Resources Templates 页面中,选择您的模板,然后选择 InventoryVariables 部分旁边的 Prompt on launch 复选框。

  3. 通过指定 workflow_template_name 而不是 job_template_name,使用 AnsibleJob 对象启动工作流作业模板:

    apiVersion: tower.ansible.com/v1alpha1
    kind: AnsibleJob
    metadata:
      generateName: demo-job-1 # generate a unique suffix per 'kubectl create'
    spec:
      connection_secret: controller-access
      workflow_template_name: Demo Workflow Template
    Copy to Clipboard Toggle word wrap

12.5.2. 创建 JobTemplate 自定义资源

作业模板是用于运行 Ansible 作业的定义和一组参数。如需更多信息,请参阅使用 自动化执行 指南中的 作业模板 部分。

流程

  • 通过创建 JobTemplate 自定义资源,在自动化控制器上创建作业模板:

    apiVersion: tower.ansible.com/v1alpha1
    kind: JobTemplate
    metadata:
      name: jobtemplate-4
    spec:
      connection_secret: controller-access
      job_template_name: ExampleJobTemplate4
      job_template_project: Demo Project
      job_template_playbook: hello_world.yml
      job_template_inventory: Demo Inventory
    Copy to Clipboard Toggle word wrap

12.5.3. 创建自动化控制器项目自定义资源

项目是在自动化控制器中表示的 Ansible playbook 的逻辑集合。如需更多信息,请参阅使用自动化执行指南中的 项目 部分

流程

  • 通过创建自动化控制器项目自定义资源,在自动化控制器上创建项目:

    apiVersion: tower.ansible.com/v1alpha1
    kind: AnsibleProject
    metadata:
      name: git
    spec:
      repo: https://github.com/ansible/ansible-tower-samples
      branch: main
      name: ProjectDemo-git
      scm_type: git
      organization: Default
      description: demoProject
      connection_secret: controller-access
      runner_pull_policy: IfNotPresent
    Copy to Clipboard Toggle word wrap

12.5.4. 创建自动化控制器调度自定义资源

定义 AnsibleSchedule 自定义资源,以便在自动化控制器上创建调度,确保指定必要的 apiVersionkind 和唯一的 metadata.name

流程

  • 通过创建自动化控制器调度自定义资源,在自动化控制器上创建调度:

    apiVersion: tower.ansible.com/v1alpha1
    kind: AnsibleSchedule
    metadata:
      name: schedule
    spec:
      connection_secret: controller-access
      runner_pull_policy: IfNotPresent
      name: "Demo Schedule"
      rrule: "DTSTART:20210101T000000Z RRULE:FREQ=DAILY;INTERVAL=1;COUNT=1"
      unified_job_template: "Demo Job Template"
    Copy to Clipboard Toggle word wrap

12.5.5. 创建自动化控制器工作流自定义资源

工作流允许您配置一系列不同的作业模板(或工作流模板),它们可能或不共享清单、playbook 或权限。如需更多信息,请参阅使用自动化执行 指南中的自动化控制器中的工作流 部分

流程

  • 通过创建工作流自定义资源,在自动化控制器上创建工作流:

    apiVersion: tower.ansible.com/v1alpha1
    kind: AnsibleWorkflow
    metadata:
      name: workflow
    spec:
      inventory: Demo Inventory
      workflow_template_name: Demo Job Template
      connection_secret: controller-access
      runner_pull_policy: IfNotPresent
    Copy to Clipboard Toggle word wrap

工作流作业模板将一系列不同的资源链接,以跟踪作为单个单元一部分的完整作业集合。

如需更多信息,请参阅使用 自动化执行 指南中的 工作流作业模板 部分。

流程

  • 通过创建工作流模板自定义资源,在自动化控制器上创建工作流模板:

    apiVersion: tower.ansible.com/v1alpha1
    kind: WorkflowTemplate
    metadata:
      name: workflowtemplate-sample
    spec:
      connection_secret: controller-access
      name: ExampleTowerWorkflow
      description: Example Workflow Template
      organization: Default
      inventory: Demo Inventory
      workflow_nodes:
      - identifier: node101
        unified_job_template:
          name: Demo Job Template
          inventory:
            organization:
              name: Default
          type: job_template
      - identifier: node102
        unified_job_template:
          name: Demo Job Template
          inventory:
            organization:
              name: Default
          type: job_template
    Copy to Clipboard Toggle word wrap

12.5.7. 创建自动化控制器清单自定义资源

通过使用清单文件,Ansible Automation Platform 可以通过单个命令管理大量主机。

清单还可以通过减少您指定的命令行选项数量来更有效地使用 Ansible Automation Platform。如需更多信息,请参阅使用 自动化执行 指南中的 清单 部分。

流程

  • 通过创建清单自定义资源,在自动化控制器上创建清单:

    metadata:
      name: inventory-new
    spec:
      connection_secret: controller-access
      description: my new inventory
      name: newinventory
      organization: Default
      state: present
      instance_groups:
        - default
      variables:
        string: "string_value"
        bool: true
        number: 1
        list:
          - item1: true
          - item2: "1"
        object:
          string: "string_value"
          number: 2
    Copy to Clipboard Toggle word wrap

12.5.8. 创建自动化控制器凭证自定义资源

在针对机器启动作业、与清单源同步以及从版本控制系统中导入项目内容时,凭证会验证自动化控制器用户。

SSH 和 AWS 是最常用的凭证。有关支持的凭证的完整列表,请参阅 使用自动化执行指南中的凭证类型部分https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.6/html/using_automation_execution/controller-credentials#ref-controller-credential-types

有关定义值的帮助,您可以参考 Red Hat Ansible Automation Platform API KCS 文章的 OpenAPI (Swagger)文件

注意

您可以使用 https://<aap-instance>/api/controller/v2/credential_types/ 查看实例上的凭证类型列表。要获取完整列表,请使用以下 curl 命令:

export AAP_TOKEN="your-oauth2-token"
export AAP_URL="https://your-aap-controller.example.com"

curl -s -H "Authorization: Bearer $AAP_TOKEN" "$AAP_URL/api/controller/v2/credential_types/" | jq -r '.results[].name'
Copy to Clipboard Toggle word wrap

流程

  • 通过创建凭证自定义资源,在自动化控制器上创建 AWS 或 SSH 凭证:

    • SSH 凭证:

      apiVersion: tower.ansible.com/v1alpha1
      kind: AnsibleCredential
      metadata:
        name: ssh-cred
      spec:
        name: ssh-cred
        organization: Default
        connection_secret: controller-access
        description: "SSH credential"
        type: "Machine"
        ssh_username: "cat"
        ssh_secret: my-ssh-secret
        runner_pull_policy: IfNotPresent
      Copy to Clipboard Toggle word wrap
    • AWS 凭证:

      apiVersion: tower.ansible.com/v1alpha1
      kind: AnsibleCredential
      metadata:
        name: aws-cred
      spec:
        name: aws-access
        organization: Default
        connection_secret: controller-access
        description: "This is a test credential"
        type: "Amazon Web Services"
        username_secret: aws-secret
        password_secret: aws-secret
        runner_pull_policy: IfNotPresent
      Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部