我正在为某种服务配置脚本,我想将其模板化为我们的配置管理工具(Ansible)。但是有一个特殊的动作,似乎是Jinja2的限制(如果在这种情况下可以接受该词),我无法克服:
{% set min = 0 %}
{% set max = 5500 %}
{% for item in list_of_items %}
for i in {min..max}; do command {{ item }} --arg 1 commnand_stuff $i; done
{% set min = max + 1 %}
{% set max = max * 2 %}
#fi
{% endfor %}
预期(期望)结果是:
-迭代1-min = 0
,max = 5500
-迭代2-min = 5501
,max = 11000
..
实际结果是:
-min和max在所有循环迭代中都为常数-min=0
和max=5500
。
那么,如何在Jinja2 for循环中修改全局变量?
答案 0 :(得分:1)
set 在循环内不起作用。参见assigning a variable inside a loop。
可以使用 loop.index 代替。下面的模板
flux1:10.10.10.10
flux2:10.10.10.102
给予
{% for item in list_of_items %}
{{ 5500 * (loop.index-1) + 1 }}..{{ 5500 * loop.index }}
{% endfor %}