如何删除ansible模板中行末的逗号



你能告诉我如何删除行尾的逗号吗?

最终输出:

{名称:"名称1",我的国家="区域1a",我国="区域1b"},

{名称:"名称2",我的国家="区域2a",我国="区域2b"},

您只需要删除第二行末尾的一个(突出显示的(逗号。输出以这种方式生成

{% for country in AllСountry %}
{name: "{{ country }}",{% for count in lookup('vars', country) %} My country = "{{ count }}",{% if loop.last %} My country = "{{ count }}"{% endif %}{% endfor %}},
{% endfor %}

因此,我们需要这个输出

{name: "name1", My country = "region1a", My country = "region1b"},
{name: "name2", My country = "region2a", My country = "region2b"}

您可以使用loop.last,因此在条件测试中用逗号括起来,以测试是否循环最后一项。

你的模板最终会是:

{% for country in AllСountry %}
{name: "{{ country }}",{% for count in lookup('vars', country) %} My country = "{{ count }}",{% if loop.last %} My country = "{{ count }}"{% endif %}{% endfor %}}{% if not loop.last %},{% endif %}
{% endfor %}

正如你在另一个问题上提出的那样,我觉得你在让事情变得复杂,你到底想实现什么?您正在尝试构建JSON吗?(在这种情况下,请注意My country = "region2a"无效(。

如果您确实试图构建一个数据结构,那么您应该创建表示这些结构的列表和字典,然后使用简单的现有过滤器,如to_jsonto_yaml等。

否则,这一点仍然适用:如果你想创建一个逗号分隔的字符串列表,请在Ansible中创建一个字符串列表,然后只join它们。

例如:

- debug:
msg: "{{ some_list | join(', ') }}"
vars:
some_list:
- foo
- bar
- baz

会给你

foo, bar, baz

最新更新