Jinja2模板变量为一行

时间:2016-06-28 13:00:30

标签: ansible jinja2

是否可以创建一个将变量放在一行上的jinja2模板?这样的事情,但结果中没有两行,而是用逗号分隔。

模板:

{% for host in groups['tag_Function_logdb'] %}
elasticsearch_discovery_zen_ping_unicast_hosts = {{ host }}:9300
{% endfor %}

结果:

elasticsearch_discovery_zen_ping_unicast_hosts = 1.1.1.1:9300
elasticsearch_discovery_zen_ping_unicast_hosts = 2.2.2.2:9300

期望的结果:

elasticsearch_discovery_zen_ping_unicast_hosts = 1.1.1.1:9300,2.2.2.2:9300

编辑,这有效:

elasticsearch_discovery_zen_ping_unicast_hosts = {% for host in groups['tag_Function_logdb']  %}
{{ host }}:9300
{%- if loop.first %},{% endif %}
{% endfor %}

3 个答案:

答案 0 :(得分:4)

这是适用于我的解决方案。我发现tweeks200的解决方案仅适用于2个循环。无论循环次数如何,这都有效。感谢大家的帮助。

//float: left;

答案 1 :(得分:2)

我能够通过在循环之前放置我想要的指令然后使用loop.first-空格控件来正确地格式化逗号分隔列表来实现此功能。

elasticsearch_discovery_zen_ping_unicast_hosts = {% for host in groups['tag_Function_logdb']  %}
{{ host }}:9300
{%- if loop.first %},{% endif %}
{% endfor %}

答案 2 :(得分:1)

以下是您可以这样做的方法:

elasticsearch_discovery_zen_ping_unicast_hosts =  

 {% for host in groups['tag_Function_logdb']  %}

    {{ host }}:9300

    {% if not groups['tag_Function_logdb'].last %}
, 
    {% endif %}

{% endfor %}