Ansible Jinja2-for循环中的全局变量更新
我正在为某个服务编写一个配置脚本,我希望为我们的配置管理工具(Ansible)制作一个模板。然而,有一个特殊的动作,这似乎是一个Jinja2限制(如果这个词在这种情况下可以接受的话),我无法克服:Ansible Jinja2-for循环中的全局变量更新,ansible,jinja2,Ansible,Jinja2,我正在为某个服务编写一个配置脚本,我希望为我们的配置管理工具(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 = 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=0
和max=5500
那么,如何在for循环中修改Jinja2中的全局变量呢?set在循环中不起作用。看
可以改用loop.index。下面的模板
{% for item in list_of_items %}
{{ 5500 * (loop.index-1) + 1 }}..{{ 5500 * loop.index }}
{% endfor %}
给予
1..5500
5501..11000
11001..16500