我正在尝试在ansible任务中打印主机列表;
我想在它们之间有空格,但是以下循环不能达到目的:
{%for groups in groups [‘all’] - %} {{host}}:6379 …
作为jinia循环的替代,您可以使用ansibles join-filter,请参阅 https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#id8
在这种情况下 :
{{ groups["all"] | join(":6379 ") }}
分裂是相反的。 split接受一个字符串和一个分隔符,然后返回一个列表。 join接受一个列表和一个字符串,将所有列表元素连接成一个字符串。
如果你的目标是让他们全部在一条线上并且不介意在开始时有空间你可以简单地做:
{% for host in groups['all'] -%} {{ ' ' ~ host }}:6379 {%- endfor %}
您还可以在每个项目的末尾添加一个字符(例如空格或其他内容),同时跳过最后一个。注意if和endif之间的空格:
{% for host in groups['all'] -%} {{ host }}:6379 {%- if not loop.last %} {% endif %} {%- endfor %}