在Jinja2中访问循环变量外部循环

时间:2017-08-10 07:00:32

标签: for-loop jinja2 ansible-2.x

我们正在Jinja2中编写一个for循环,它将继续将list变量连接到一个字符串,直到列表的末尾。我们将字符串存储到变量中。循环完成后,我们要打印变量。

执行的代码如下

{% set HOSTLIST = groups['master'] | map('extract', hostvars, ['ansible_default_ipv4', 'address'])| list %}
{% set TEST = "spark://" %}
{% for host in HOSTLIST %}
     {% set sample = TEST + host  %}
     {% set TEST = sample+',' %}
{% endfor %}

{{ TEST }}

任何人都可以指出我,我们在做错了。

我们的输出如下:

 spark://

但预期的输出应该是:

 spark://192.168.49.111:7077,192.168.49.112:7077,

1 个答案:

答案 0 :(得分:1)

为什么不这样使用它?

spark://{{ groups['master'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace','$',':7077') | list | join(',') }}

您在循环中修改外部作用域变量的原始请求只能通过跳过一些箍来解决,请参阅Jinja2: Change the value of a variable inside a loop