我知道这里的嵌套循环文档:http : //docs.ansible.com/ansible/playbooks_loops.html#nested-loops我有3台服务器:例如server1,server2,server3。我需要以这种方式运行命令:
在server1上
运行命令在server1上运行命令,在server2上
运行命令在server1上运行命令,在server2上运行命令,在server3上运行命令
知道我如何使用ansible中的循环来做到这一点吗?我知道如何使用循环和乘积过滤器运行嵌套循环。但是不知道如何使用Ansible处理我的特殊情况。
这取决于数据的结构。例如,剧本可以胜任
- hosts: server1,server2,server3
vars:
batch001:
- command: "foo"
hosts: [server1]
- command: "bar"
hosts: [server1, server2]
- command: "baz"
hosts: [server1, server2, server3]
tasks:
- command: "{{ item.command }}"
loop: "{{ batch001 }}"
when: inventory_hostname in item.hosts
下一个选择是使用嵌套的命令列表创建服务器字典。例如,
- hosts: server1,server2,server3
vars:
batch002:
server1:
commands: ["foo", "bar", "baz"]
server2:
commands: ["foo", "bar"]
server3:
commands: ["foo"]
tasks:
- command: "{{ item }}"
loop: "{{ batch002[inventory_hostname]['commands'] }}"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句