12.5. 为 Resource Operator 创建自定义资源
12.5.1. 创建 AnsibleJob 自定义资源
AnsibleJob 自定义资源在 Kubernetes secret (自动化控制器主机 URL、令牌)中指定的自动化控制器实例中启动作业。您可以通过创建 AnsibleJob 资源,在自动化控制器上启动自动化作业。
流程
指定您要启动的连接 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
配置作业的实时功能,如清单、额外变量和时间。
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 中: 在
页面中,选择您的模板,然后选择 Inventory 和 Variables 部分旁边的 Prompt on launch 复选框。 通过指定
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