带有子元素的嵌套嵌套循环

时间:2018-09-27 13:15:49

标签: loops nested ansible

我正在解决嵌套循环的问题,其中第一个循环在数组元素的键上,而内部循环在另一个变量上。

我按类型收集了一组主机,因此清单中有每种类型的部分,并在右侧部分添加了每个主机。

[typeA]
host1
host2]

[typeB]
host3
host4

对于每种类型的主机,我都有要在该类型的每种主机上安装的模块的列表。我创建了一个JSON配置,以按类型收集模块列表。

{
    "modules" : [
        {
            "type": "typeA",
            "list": ["module1","module2"]
        },
        {
            "type": "typeB",
            "list": ["module3","module4"]
        }
    ]
}

我需要在每个主机和每个安装的模块上创建一个文件,其中包含属于当前组的同一类型的所有主机的hostId。

例如: 在host1上,我应该创建2个文件,分别名为module1.cfg和module2.cfg,并包含host1和host2的hostId。 在host2上,我应该创建2个文件,分别名为module3.cfg和module4.cfg,其中包含host3和host4的hostId

我选择在localhost(运行ansible的主机)上准备配置文件

问题是有一个双循环: 1)正确类型的每个模块的第一个循环   2)属于当前主机类型的每个主机的第二个循环

问题在于,对于第一个循环,由于数据结构的原因,我需要循环使用use = ing“ with_subelements:”

使用“ with_subelements:”将经典外观(使用with_items)嵌套到循环中似乎是不可能的

有什么主意吗?

我的任务: node_type是我要安装的主机类型:“ typeA”或“ typeB”

- name: "Only loop for modules"
  debug:
    msg: "Module = {{ item.1 }}"
  with_subelements:
    - "{{modules}}"
    - list
  when: item.0.type == node_type
  delegate_to: localhost

但是我无法添加新的with_items:“ {{groups [node_type]}}”: 错误!任务中重复的项目:

欢迎您的帮助! 泽维尔

0 个答案:

没有答案