【问题标题】:How to loop over a nested dictionary in ansible?如何在ansible中循环嵌套字典?
【发布时间】:2020-03-09 13:30:46
【问题描述】:

如何循环遍历这本字典?

# nested dictionary to loop over:
  vars:
    commands:
      group1:
        cmd1:
          run: foo
        cmd2:
          run: bar
      group2:
        cmd3:
          run: zoo

# expected loop:
- group1, cmd1={...}
- group1, cmd2={...}
- group2, cmd4={...}

我尝试使用 dict2items 和 with_nested 的各种组合,但到目前为止我无法实现该目标,我真的想避免使用包含任务的循环或编写一个执行扁平化的 python 模块。

我仍然希望有一种纯粹可行的方法。

【问题讨论】:

    标签: ansible jinja2


    【解决方案1】:

    loopincluded_tasks 包含的任务是可能的。例如文件

    shell> cat inner-loop.yml
    - debug:
        msg: "{{ outer_item.key }}, {{ item.key }}={{ item.value }}"
      loop: "{{ outer_item.value|dict2items }}"
    

    包含在任务中

        - include_tasks: inner-loop.yml
          loop: "{{ commands|dict2items }}"
          loop_control:
            loop_var: outer_item
    

    给予

        "msg": "group1, cmd1={u'run': u'foo'}"
        "msg": "group1, cmd2={u'run': u'bar'}"
        "msg": "group2, cmd3={u'run': u'zoo'}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 2021-07-16
      • 2021-05-30
      • 2017-07-22
      • 2022-06-15
      相关资源
      最近更新 更多