Назад | Перейти на главную страницу

Как передать item.src в шаблон в Ansible?

У меня есть шаблон Jinja2, и я хочу передать ему аргументы из своего vars/main.yml.

Для каждого набора варов мне нужно создать отдельный файл на удаленном сервере.

Мой vars/main.yml имеет следующую структуру:

List:
  - { src: [
        classPath1: xxx,
        classPath2: xxx, 
        contxtHost: xxx,
        logDir: xxx, 
        contxtRegion: xxx,
        .... 
        ],
      dest: xxxx 
    }
  - { src: [
        xxxx
        ], 
      dest: xxxx 
    }

в моей пьесе задача определяется следующим образом:

  - name: testing templates 
    template: "src=templates/sampletest.j2 
               dest=/path/in/Server/{{ item.dest }}
               owner=app 
               group=app 
               mode=0644"
    with_items: '{{ List }}'

Как пройти item.src к моему шаблону?

Примечание: я пытаюсь создать несколько файлов на основе каждого набора переменных. item.src и имя файла item.dest с помощью with_items.

Просто укажите их в templates/sampletest.j2, например:

# start of the template
classPath1 is {{ item.src[0].classPath1 }}
classPath2 is {{ item.src[1].classPath2 }}
contxtHost is {{ item.src[2].contxtHost }}
...
# end of the template

По каждому элементу на List шаблон будет проанализирован и сохранен в файл, определенный в dest.


Теперь проблема в том, что ваш vars/main.yml файл определяет src как список (квадратные скобки) словарей, каждый из которых содержит одну пару ключ-значение (с ключом, названным по-разному в каждом элементе списка), поэтому:

  • Во-первых, вам нужно сослаться на элемент списка по его порядку (например, src[1])
  • тогда вам нужно сослаться на ключ, который определен в этом конкретном элементе (например, classPath2 для и только для src[1]).