Как использовать loop и with_nested вместе в ansible - PullRequest
1 голос
/ 18 мая 2019

У меня есть переменные, определенные следующим образом:

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

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

Хотите перебрать ключ1 с соответствующими значениями в ключе 2

Я использую 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

Ошибка Iполучить, когда я выполню playbook:

fatal: [localhost]: FAILED!=> {"msg": "поиск подэлементов ожидает словарь, получил 'значения'"}

Есть идеи, как этого добиться?

1 Ответ

0 голосов
/ 18 мая 2019

Правильный синтаксис:

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

или Мигрирует с with_X в цикл

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"
...