Jinja2 Шаблон: Вложенный для и если проблема условия - PullRequest
0 голосов
/ 25 сентября 2019

Мне нужно написать сценарий оболочки, основанный на серии условий «если и для» (вложенных), написанных в jinja2 (для использования в ansible).

Проблема в том, что ошибка " неопределенная переменная: webroot"возвращается, и я не понимаю, почему.

Это код jinja2 (в папке templates ):

#!/bin/bash
certbot certonly -n --webroot
{% for hosting in hostings %}
{%   if inventory_hostname in hosting.servers %}
   -w {{ hosting.webroot }}
{%     for domain in hosting.domains %}
         -d {{ domain }}
{%     endfor %}
{%   endif %}
{% endfor %}
#-m {{ hosting.letsencrypt_email }} --agree-tos
-m info@email.it --agree-tos

Переменная «webroot» существует в vars / main.yml, и это та же переменная «Servers», которая имеет правильную область действия.

vars / main.yml file:

hostings:
 - name: 'Wottts'
   servers:
     - 'w2.test.it'
     - 'w.test.it'
     - 'w.yat.it'
   template: 'template.conf.j2'
   webroot: '/var/www/test/html'
   domains:
     - 'pippus.invalid'
     - 'www.pippus.invalid'

Ошибка фатальная: [host.name.it]: FAILED!=> {"change": false, "msg": "AnsibleUndefinedVariable: 'webroot' не определен"}

Спасибо за любую помощь / предложение.

1 Ответ

0 голосов
/ 25 сентября 2019

I решил это сам!

Проблема была в предпоследней строке:

...
{% endfor %}
#-m {{ hosting.letsencrypt_email }} --agree-tos
-m info@email.it --agree-tos

Кажется, что строка, которая началась с "#"Символ был проблемой, удаление его, переменные распознаются правильно.

...