在Jinja循环中打印空格



我正在尝试在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 Loop的替代方案,您可以使用Ansibles Join-Filter,请参见https://docs.ansible.com/ansible/latest/latest/latest/user_guide/playblebooks_filters.html#id88

在这种情况下:

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

连接是分裂的相反。Split取一个字符串和一个定界符,然后返回列表。加入获取列表和一个字符串,将所有列表元素串联到一个字符串。

最新更新