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


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
  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
    注意

    如果您要配置清单和额外变量,则必须在启动时启用提示。要启用 启动时提示,在 自动化控制器 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

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

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

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

流程

  • 通过创建自动化控制器调度自定义资源,在自动化控制器上创建调度:
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"

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

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

工作流作业模板将一系列不同的资源链接,以跟踪作为单个单元一部分的完整作业集合。如需更多信息,请参阅使用 自动化执行 指南中的 工作流作业模板 部分。

流程

  • 通过创建工作流模板自定义资源,在自动化控制器上创建工作流模板:
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

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

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

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

SSH 和 AWS 是最常用的凭证。有关支持的凭证的完整列表,请参阅 使用自动化执行指南中的凭证类型部分https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/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'

流程

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

12.5.8.1. 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

12.5.8.2. 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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.