模板如下所示:
solr.replication.master=
{% if ansible_eth0.ipv4.address == servermaster.eth0 %}
false
{% else %}
true
{% endif %}
solr.replication.slave=false
输出应如下所示:
solr.replication.master=true
solr.replication.slave=false
我实际得到的是:
solr.replication.master=truesolr.replication.slave=false
据我所知,Jinja2剥离了空格,而且ansible可能默认配置了这个。但它似乎没有荣誉 - / +空白标签。
有没有办法强制换行?
答案 0 :(得分:15)
在第一个位置将以下行添加到模板中:
#jinja2: trim_blocks:False
答案 1 :(得分:4)
正如您所提到的-/+
空白标记未被尊重,line macros也未被启用(至少不是%%
或#
或##
。
trim_blocks
。我发现唯一有用的是,trim_blocks
只忽略第一个换行符
对于您的示例,只需添加额外的换行就足够了
solr.replication.master={% if ansible_eth0.ipv4.address == servermaster.eth0 %}false{% else %}true{% endif %}
solr.replication.slave=false
答案 2 :(得分:4)
我有同样的问题。我通过添加
解决了这个问题solr.replication.master={% if ansible_eth0.ipv4.address == servermaster.eth0 %}false{% else %}true{% endif %}{{''}}
到该行的末尾,例如:
<p>
这会插入一个空字符串文字,副作用是不剥离空格。
答案 3 :(得分:1)
我认为使用ternary
过滤器可能会有所帮助。
solr.replication.master={{ (ansible_eth0.ipv4.address == servermaster.eth0) | ternary('false', 'true') }}
solr.replication.slave=false
答案 4 :(得分:0)
作为解决方法,您可以将其添加到模板中
{% raw %}{% endraw %}