如何在Jinja2中添加分隔符

时间:2018-09-10 08:23:03

标签: ansible jinja2

我需要获得一个这样的IP列表(引号中的值,逗号分隔,没有空格)。

['172.16.1.67','172.16.1.68','172.16.1.69']

为此,我试图在我的剧本中调用jinja2模板。模板的内容是:

[{% for servidor in groups['servidores'] %}{{ hostvars[servidor].ansible_host}}{% endfor %}]

此模板正在生成以下字符串:

[172.16.1.67172.16.1.68172.16.1.69]

我尝试使用发现的过滤器和内容,但是无论如何尝试,最终都会出错(因为我发现的大多数答案都假定读者知道如何应用所提供的解决方案,而这并不是我的情况)。我的猜测是我应该应用“联接”过滤器,但我不知道该怎么做。

能请你帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用引号对IP进行格式化,然后在输出中将它们与','结合使用之前,先将它们附加到列表中:

{%- set ips = [] -%}
{%- for servidor in groups['servidores'] %}
    {% do ips.append("'%s'" | format(hostvars[servidor].ansible_host)) %}
{% endfor -%}
[{{ ips | join(',') }}]