2016-08-04 3 views
0

Я пытаюсь сделать Ansible playbook тем, что вызывает рулоны динамически. Теперь Ansible не поддерживает это изначально, поэтому я подумал, что могу обойти это с помощью некоторых шаблонов Jinja2 ... но я даже не уверен, как это сделать на самом деле. Так скажем, у меня есть список ролей в переменнойAnsible - использование Jinja 2 для динамических ролей

role_vars: 
    - role1 
    - role2 
    - role3 

Мой шаблон:

- hosts: localhost 
    roles: > 
    {%- for name in role_vars %} 
    {{- '- ' + name + '\n ' -}} 
    {%- endfor %} 

Я предполагаю, что это должно дать что-то вроде этого:

- hosts: localhost 
    roles: 
    - role1 
    - role2 
    - role3 

, но я могу не получится. Итак, как я? Возможно ли это?

ответ

0

Вы разместили слишком много обрезных модификаторов. Попробуйте это:
шаблона:

- hosts: localhost 
    roles: 
    {% for name in role_vars -%} 
    - {{ name }} 
    {% endfor %} 
+0

Я побежал, и это дает мне: ОШИБКА! Синтаксическая ошибка при загрузке YAML. Ошибка в файле file.yml ': строка 23, столбец 6, но может быть находиться в другом месте в файле в зависимости от конкретной проблемы синтаксиса. Нарушитель Похоже, что строка: роли: {% для имени в role_vars -%} ......... Я нахожусь под впечатлением, вам нужен «>» к трубе это для того, чтобы распознать jinja2, но это также дало мне ошибку. – ExaExcellion

+0

Я думаю, что я вас неправильно понял ... Этот шаблон не должен быть напрямую загружен в игру-книгу, а в качестве источника модуля «template». Невозможно использовать jinja2 в таких играх. –

+0

Я понял, что символ '>' должен обозначать встроенные шаблоны. Очевидно, это может привести к запутанным сценариям, и это также не должно использоваться слишком много. Но, как вы сказали, в этом случае лучше использовать модуль, так что спасибо! – ExaExcellion

Смежные вопросы