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

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

[typeA]
host1
host2]

[typeB]
host3
host4

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

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

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

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

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

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

问题是,对于第一个循环,由于数据结构,我需要循环使用= 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]}}”:错误!任务中的重复循环:项目

欢迎帮助!泽维尔