我正在尝试在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取一个字符串和一个定界符,然后返回列表。加入获取列表和一个字符串,将所有列表元素串联到一个字符串。