如果条件不满足,jinja模板会添加额外的行

时间:2019-06-16 06:29:08

标签: ansible jinja2

jinja模板中的for loop就是这样

{% for m in grp %}
abc {{ m.length }}
      pqr
      xyz
{% if m.flag is defined and m.flag == "f" %}
      yes f {% endif %}    
{% for r in uv %}
      abcdef
{% endfor %}

{% endfor %} 

现在问题出在grp的某些成员中没有flag变量。无论在哪里存在flag,都将正确添加option true行。但是,如果不满足条件,则只添加一个空白行。这4或5行应该没有多余的空行,否则生成的配置文件将被标记为无效。 有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

{% endif %}放入下一行

{% if m.flag is defined and m.flag == "f" %}
      yes f
{% endif %}

Whitespace Control也可能有用。

  

如果在块的开头或结尾(例如For标记),注释或变量表达式中添加减号(-),则该块之前或之后的空格将被删除。

{% if m.flag is defined and m.flag == "f" %}      yes f
{% endif -%}