我有2个角色,都有一系列任务。
但是,角色A中的某些(并非所有)任务几乎与角色B中的任务相同
示例角色任务:
- name: Ensure bible server is running
command: npm run forever
args:
chdir: ~/bible-server
when: "foreverlist.stdout.find('bibleServer.js') == -1"
角色B任务示例:
- name: Ensure certs server is running
command: npm run forever
args:
chdir: ~/certs-server
when: "foreverlist.stdout.find('certsServer.js') == -1"
是否可以参数化任务,以便我可以声明一个任务,就像我会声明一个函数并将参数传递给它一样?
答案 0 :(得分:2)
是的,在Ansible中,这就是库存的用途。将配置指定为清单中的变量,如果两个角色位于同一主机上,则可以使用字典。然后遍历字典以在每个配置上重复任务。
servers:
- path: bible-server
script: bibleServer.js
- path: cert-server
script: certServer.js
然后在任务中:
- name: Ensure Servers are running
command: npm run forever
args:
chdir: "~/{{ item.path }}"
when: "foreverlist.stdout.find('{{ item.script }}') == -1"
with_items: "{{ servers }}"