Как перебирать вложенные элементы в Ansible - PullRequest
0 голосов
/ 13 июня 2019

Я не уверен, правильно ли я иду, но у меня следующая проблема.

Мне нужна простая задача, такая как:

  - name: Copying files
    template:
      src: "{{ item[1] }}.j2"
      dest: "{{ path }}/{{ item[0] }}/{{ item[1] }}"
    with_nested:
      - [ 'env1' , 'env2' ]
      - [ 'file1' , 'file2']

Фактические результаты:

/path/env1/file1
/path/env1/file2
/path/env2/file1
/path/env2/file2

Ожидаемые результаты:

/path/env1/file1
/path/env2/file2

Мне просто нужно, чтобы file1 генерировал шаблон в каталоге env1 и file2 генерировал шаблон в env2.Я не могу сделать это с простым 'with_items', потому что у меня есть 2 элемента для перебора, имя каталога и имя файла.

Я уверен, что есть способ сделать этоправильно ..

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Вы можете попробовать следующее, чтобы получить ожидаемые результаты:

  - name: Copying files
    template:
      src: "{{ item[1] }}.j2"
      dest: "{{ path }}/{{ item[0] }}/{{ item[1] }}"
    with_together:
      - [ 'env1' , 'env2' ]
      - [ 'file1' , 'file2']

with_together объяснение

0 голосов
/ 13 июня 2019

Использовать zip фильтр. Игра ниже

- hosts: localhost
  vars:
    list1: [ 'env1' , 'env2' ]
    list2: [ 'file1' , 'file2']
  tasks:
    - debug:
        msg: "/path/{{ item.0 }}/{{ item.1 }}"
      loop: "{{ list1|zip(list2)|list }}"

дает (grep msg):

    "msg": "/path/env1/file1"
    "msg": "/path/env2/file2"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...