在Jinja循环中打印空白

时间:2019-03-17 12:22:17

标签: loops ansible jinja2

我正在尝试在ansible任务中打印主机列表;

我想在其中留空格,但是以下循环无法达到目的:

{% for host in groups['all'] -%} {{ host }}:6379 {%- endfor %} 

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果您打算将它们全部放在一行上,并且不介意在开始时留有空格,则可以简单地执行以下操作:

{% for host in groups['all'] -%} {{ ' ' ~ host }}:6379 {%- endfor %}

您还可以在每个项目的末尾添加一个字符(例如空格或其他内容),而跳过最后一个。注意if和endif之间的空格:

{% for host in groups['all'] -%}
{{ host }}:6379
{%- if not loop.last %} {% endif %}
{%- endfor %} 

答案 1 :(得分:0)

作为jinia循环的替代方法,您可以使用ansibles join-filter,请参见https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#id8

在这种情况下:

{{ groups["all"] | join(":6379 ") }}

加入与拆分相反。 split使用字符串和定界符,然后返回列表。 join使用一个列表和一个字符串将所有列表元素连接为一个字符串。

相关问题