【发布时间】:2021-06-08 22:05:31
【问题描述】:
我为一个 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 任务
,,,
-
名称:具有 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 事物),并从该组中调用任务......类似于:
,,,
-
名称:具有 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 ,但它并没有缩短剧本。
有人可以指导我吗?
【问题讨论】: