Jinja2模板:针对条件条件嵌套

时间:2019-09-25 11:42:05

标签: ansible jinja2

我必须基于jinja2(将在ansible中使用)编写的一系列“条件和条件”(嵌套)条件编写一个shell脚本。

问题是返回了错误消息“ 未定义的变量:webroot ”,我不明白为什么。

这是jinja2代码(在 templates文件夹下):

<Code to get ValidatableResponse>.htmlPath().getString("html.body.span.input.@value")

变量“ webroot”存在于vars / main.yml中,并且与正确定义范围的“服务器”变量相同。

vars / main.yml文件:

#!/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

错误是致命的:[host.name.it]:失败! => {“更改”:false,“ msg”:“ AnsibleUndefinedVariable:'webroot'未定义”}

感谢您的帮助/建议。

1 个答案:

答案 0 :(得分:0)

自己解决了

问题出在倒数第二行:

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

似乎以“ ”字符开头的行是问题所在,将其删除即可正确识别变量。