Ansible 循环遍历字典列表和单个字典

时间:2021-03-14 10:59:34

标签: loops dictionary ansible yaml jinja2

我想遍历字典列表以及其他字典。它们都具有相同的架构。

  - set_fact:
      my_list:
        - { foo: 1, bar: 2, baz: 3 }
        - { foo: 4, bar: 5, baz: 6 }
        - { foo: 7, bar: 8, baz: 9 }

  - debug:
      msg: "{{item.foo}} {{item.bar}} {{item.baz}}"
    loop:
      - "{{ my_list }}"
      - { foo: 10, bar: 11, baz: 12 }
      - { foo: 13, bar: 14, baz: 15 }

但这给出了:

<块引用>

失败! => {"msg": "该任务包含一个带有未定义变量的选项。错误是:'list object' 没有属性 'foo'

我该怎么做?

1 个答案:

答案 0 :(得分:1)

连接列表,例如

    - debug:
        msg: "{{ item.foo }} {{ item.bar }} {{ item.baz }}"
      loop: "{{ my_list +
                [{'foo': 10, 'bar': 11, 'baz': 12}] +
                [{'foo': 13, 'bar': 14, 'baz': 15}] }}"

给予

  msg: 1 2 3
  msg: 4 5 6
  msg: 7 8 9
  msg: 10 11 12
  msg: 13 14 15

下面的 YAML 格式给出了相同的结果

    - debug:
        msg: "{{ item.foo }} {{ item.bar }} {{ item.baz }}"
      loop: "{{ my_list + _list2 + _list3 }}"
      vars:
        _list2:
          - foo: 10
            bar: 11
            baz: 12
        _list3:
          - foo: 13
            bar: 14
            baz: 15