如何在ansible中一起使用循环和with_nested

How to use loop and with_nested together in ansible

我有这样定义的变量-

  vars:
    values:
      - key1: value1 
        key2:
          - value1.1
          - value1.2

      - key1: value2 
        key2: 
          - value2.1
          - value2.2

想用 key2 中的相应值迭代 key1

我是 运行 ansible 2.7.10 和 python 2.7.10。这是我根据网上找到的一些建议在我的任务中写的-

(已使用 with_subelements)

- name: test loops
  debug:
    msg: "This is key1: {{ item.0.key1 }}, and here is corresponding key2 element {{ item.1 }}"
  with_subelements:
    - values
    - key2

预期输出:

This is key1: value1, and here is corresponding key2 element value1.1
This is key1: value1, and here is corresponding key2 element value1.2
This is key1: value2, and here is corresponding key2 element value2.1
This is key1: value2, and here is corresponding key2 element value2.2

执行剧本时出现错误:

致命:[本地主机]:失败! => {"msg": "subelements lookup expects a dictionary, got 'values'"}

有什么实现方法吗?

正确的语法是

with_subelements:
  - "{{ values }}"
  - key2

,或Migrated from with_X to loop

loop: "{{ values|subelements('key2') }}"

下图

- hosts: localhost
  vars:
    values:
      - key1: value1
        key2:
          - value1.1
          - value1.2
      - key1: value2 
        key2: 
          - value2.1
          - value2.2
  tasks:
    - debug:
        msg: "{{ item.0.key1 }} - {{ item.1 }}"
      with_subelements:
        - "{{ values }}"
        - key2

给出(删节):

"msg": "value1 - value1.1"
"msg": "value1 - value1.2"
"msg": "value2 - value2.1"
"msg": "value2 - value2.2"