Ansible - 如何管理大量的小任务
Ansible - How to manage Large list of small tasks
我为一个 ansible 项目写了很多小的 yaml 任务文件。
这些任务文件中只有少数被重用(比如 30%)。
我想知道如何管理这个庞大的任务列表,我是否应该将它们全部转换为角色,并用角色调用剧本:
剧本如下(请忽略语法),会很清楚,但我不喜欢每个简单的任务都有一个角色。
- name: playbook with roles for each task
hosts: all
roles:
- small_task_1
- small_task_2
- small_task_3
- small_task_4
....
....
- small_task_20
我喜欢让他们扮演 2-3 个角色,并使用 include_task(或 import_task)调用任务的想法,但问题是,对于任务的每次调用,我都有添加“import_role: , name: , tasks_from” 即使它来自同一个角色!
$ ansible-galaxy 角色列表
$/home/user1/.ansible/roles
- roles_a,(未知版本)
- roles_b,(未知版本)
在roles_a和roles_b中,每个
我可能有大约10个yaml任务
,
name: 剧本有 2 个角色
主持人:全部
- name: small task 1
include_role:
name: role_a
tasks_from: small_task_1
- name: small task 2
include_role:
name: role_a
tasks_from: small_task_2
......
......
- name: small task 9
include_role:
name: role_a
tasks_from: small_task_9
- name: small task 10
include_role:
name: role_a
tasks_from: small_task_10
,
上面的东西不是很方便...
我想将任务分组到一个“角色”(或任何其他 ansible 事物)中,然后调用该组中的任务...类似于:
,
name: 剧本有 2 个角色
主持人:全部
- name: small tasks
include_role:
name: role_a
tasks_from: small_task_1
tasks_from: small_task_2
......
......
tasks_from: small_task_9
tasks_from: small_task_10
,
我试过 block ,但它并没有缩短剧本。
谁能指导我,好吗?
对于最后一个示例,您可以在 include_role
任务上使用 loop
指令,如下所示:
- hosts: localhost
gather_facts: false
tasks:
- include_role:
name: role_a
tasks_from: "{{ item }}"
loop:
- small_task_1
- small_task_2
- small_task_3
- small_task_4
我为一个 ansible 项目写了很多小的 yaml 任务文件。 这些任务文件中只有少数被重用(比如 30%)。 我想知道如何管理这个庞大的任务列表,我是否应该将它们全部转换为角色,并用角色调用剧本: 剧本如下(请忽略语法),会很清楚,但我不喜欢每个简单的任务都有一个角色。
- name: playbook with roles for each task
hosts: all
roles:
- small_task_1
- small_task_2
- small_task_3
- small_task_4
....
....
- small_task_20
我喜欢让他们扮演 2-3 个角色,并使用 include_task(或 import_task)调用任务的想法,但问题是,对于任务的每次调用,我都有添加“import_role: , name: , tasks_from” 即使它来自同一个角色!
$ ansible-galaxy 角色列表 $/home/user1/.ansible/roles
- roles_a,(未知版本)
- roles_b,(未知版本)
在roles_a和roles_b中,每个
我可能有大约10个yaml任务,
name: 剧本有 2 个角色 主持人:全部
- name: small task 1 include_role: name: role_a tasks_from: small_task_1 - name: small task 2 include_role: name: role_a tasks_from: small_task_2 ...... ...... - name: small task 9 include_role: name: role_a tasks_from: small_task_9 - name: small task 10 include_role: name: role_a tasks_from: small_task_10
,
上面的东西不是很方便...
我想将任务分组到一个“角色”(或任何其他 ansible 事物)中,然后调用该组中的任务...类似于:
,
name: 剧本有 2 个角色 主持人:全部
- name: small tasks include_role: name: role_a tasks_from: small_task_1 tasks_from: small_task_2 ...... ...... tasks_from: small_task_9 tasks_from: small_task_10
,
我试过 block ,但它并没有缩短剧本。
谁能指导我,好吗?
对于最后一个示例,您可以在 include_role
任务上使用 loop
指令,如下所示:
- hosts: localhost
gather_facts: false
tasks:
- include_role:
name: role_a
tasks_from: "{{ item }}"
loop:
- small_task_1
- small_task_2
- small_task_3
- small_task_4