清单:
[Test]
local ansible_host=localhost
[Test:vars]
my_clusters="A,B,C"
我正在尝试编写一个迭代my_clusters
var的jinja2模板。
在网上,我发现下面的迭代方式(也在这里For loop in Ansible Template):
{% for item in hostvars[groups['Test'][0]]['my_clusters'].split(',') %}
{{item}}
{% endfor %}
产生输出:
A
B
C
但是我的要求是打印字符串“Cluster”(逗号在同一行上分隔)和no一样多次。 my_clusters
var中的项目
预期产出:
Cluster,Cluster,Cluster
我尝试过类似下面的内容。但它不起作用。
{% set str="" %}
{% for cluster in hostvars[groups['Test'][0]]['my_clusters'].split(',') %}
{% str += "Cluster," %}
{% endfor %}
{{str}}
答案 0 :(得分:1)
这可以通过assignments introduced in Jinja2 2.10:
来实现{% set ns = namespace(str="") %}
{% for cluster in hostvars[groups['Test'][0]]['my_clusters'].split(',') %}
{% set ns.str = ns.str + "Cluster" %}
{%- if not loop.last %}{% set ns.str = ns.str + "," %}{% endif %}
{% endfor %}
以上回答了标题中的问题,但是您的代码存在一些语法问题:
set
+=
运算符,
。