Loops 在jinja循环中打印空白

Loops 在jinja循环中打印空白,loops,ansible,jinja2,Loops,Ansible,Jinja2,我正在尝试打印ansible任务中的主机列表 我希望在它们之间留有空格,但以下循环无法达到目的: {% for host in groups['all'] -%} {{ host }}:6379 {%- endfor %} 有什么建议吗?如果您希望将所有建议都放在一行中,并且不介意在开始时留出空间,您可以简单地执行以下操作: {% for host in groups['all'] -%} {{ ' ' ~ host }}:6379 {%- endfor %} 您还可以在跳过最后一个项目的

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

我希望在它们之间留有空格,但以下循环无法达到目的:

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

有什么建议吗?

如果您希望将所有建议都放在一行中,并且不介意在开始时留出空间,您可以简单地执行以下操作:

{% for host in groups['all'] -%} {{ ' ' ~ host }}:6379 {%- endfor %}
您还可以在跳过最后一个项目的同时,在每个项目的末尾添加一个字符(例如空格或其他内容)。注意if和endif之间的间距:

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

作为jinia循环的替代方法,您可以使用ansibles联接筛选器,请参见中的

在这种情况下:

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

Join与split相反。split接受一个字符串和一个分隔符,然后返回一个列表。join使用一个列表和一个字符串将所有列表元素连接到一个字符串。

感谢这两个选项;使用第二个,看起来更优雅;