Ansible - Какой правильный синтаксис для loop + zip при объединении более двух списков? - PullRequest
2 голосов
/ 29 марта 2019

Мне не удалось найти синтаксис для loop + zip при объединении более двух списков.

Начиная с Ansible 2.5, как показано здесь , следующий синтаксис заменяется на _ вместе сloop + zip:

- name: with_together
  debug:
    msg: "{{ item.0 }} - {{ item.1 }}"
  with_together:
    - "{{ list_one }}"
    - "{{ list_two }}"

- name: with_together -> loop
  debug:
    msg: "{{ item.0 }} - {{ item.1 }}"
  loop: "{{ list_one|zip(list_two)|list }}"

Мой вопрос такой: тогда как при использовании with_together вы можете просто добавлять списки и ссылаться на них с помощью итерационных чисел, я не смог найти метод для использования с loop +застежка-молния.Я пытался:

loop: "{{ list_one|zip(list_two)|zip(list_three)|zip(list_four)list }}"

Без успеха.

1 Ответ

2 голосов
/ 29 марта 2019

Вы можете добавить дополнительные массивы внутри самого zip-фильтра.

zip(list, list, list, ...)

Например:

- hosts: localhost
  become: false
  gather_facts: false
  tasks:
  - vars:
      list_one:
      - one
      - two
      list_two:
      - three
      - four
      list_three:
      - five
      - six
    debug:
      msg: "{{ item.0 }} {{ item.1 }} {{ item.2 }}"
    loop: "{{ list_one | zip(list_two, list_three) | list }}"

При запуске:

PLAY [localhost] *********************************************************************************************************************************************

TASK [debug] *************************************************************************************************************************************************
ok: [localhost] => (item=['one', 'three', 'five']) => {
    "msg": "one three five"
}
ok: [localhost] => (item=['two', 'four', 'six']) => {
    "msg": "two four six"
}

PLAY RECAP ***************************************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...