Dictionary Ansible:在字典的3个层次上循环一次

Dictionary Ansible:在字典的3个层次上循环一次,dictionary,ansible,Dictionary,Ansible,我需要把字典里有三个层次的单词列表循环一遍。下面是我的字典的一个例子: 组织: -名称:组织1 模板: -名称:模板1 节点: -标识符:标识符1 辅助\u模板:一些\u模板 -标识符:标识符2 辅助模板:一些其他模板 -名称:组织2(etc) 我需要在一个任务中拥有所有3个级别的变量。我试着先做一个集合,但它只是抓住了列表中的最后一个模板。我的单个任务需要循环完成dict的所有3个级别;i、 例如,它需要组织名称、模板名称,然后需要遍历每个模板的节点,获取标识符和辅助模板。最接近我的是: -

我需要把字典里有三个层次的单词列表循环一遍。下面是我的字典的一个例子:

组织: -名称:组织1 模板: -名称:模板1 节点: -标识符:标识符1 辅助\u模板:一些\u模板 -标识符:标识符2 辅助模板:一些其他模板 -名称:组织2(etc) 我需要在一个任务中拥有所有3个级别的变量。我试着先做一个集合,但它只是抓住了列表中的最后一个模板。我的单个任务需要循环完成dict的所有3个级别;i、 例如,它需要组织名称、模板名称,然后需要遍历每个模板的节点,获取标识符和辅助模板。最接近我的是:

- debug:
    var: item.1.nodes | map(attribute='identifier')
  loop: "{{ orgs | subelements ('templates', skip_missing=True) }}"
但这会产生一个标识符列表&而不是单个值。

可以迭代include\u任务。例如,创建一个文件

shell>cat loop\u nodes.yml
-调试:
msg:“{{outer_item.0.name}”-
{{outer_item.1.name}-
{{item.identifier}}-
{{item.secondary_template}}”
循环:{{outer_item.1.nodes}}”
回路控制:
标签:“{outer_item.1.name}”
并将其包含在循环中

-包含任务:loop\u nodes.yml
循环:{{orgs}子元素('templates',skip_missing=True)}
回路控制:
循环变量:外部项目
给予

msg:Org 1-模板1-标识符1-某些模板
msg:Org 1-模板1-标识符2-某些其他模板
...

不太明白你的意思。也许你想要一个更好的例子,包括输入和预期输出,会有所帮助。嘿@Jack-对不起,我没有说得更清楚-请看下面Vladimir的回答:它完成了我想要的。不过,作为将来的参考,我能做些什么来更好地解释我的问题呢?弗拉基米尔发布了这部戏的输出,你的问题应该包括你想看的输出。明白了-谢谢,下次会记住。谢谢弗拉基米尔-这正是我想要的。我几乎是独自一人,使用了include_任务,但我没有想到这一点。再次感谢!