Ansible中的嵌套循环

拜纳(Vinay Pai)

我知道这里的嵌套循环文档: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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章