Jinja2 - обновление глобальной переменной в цикле for

Я работаю над сценарием конфигурации для определенной службы и хочу, чтобы он был шаблоном для наших инструментов управления конфигурацией (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?

Введение в Ansible Roles
Введение в Ansible Roles
Ansible - это отличный инструмент управления конфигурацией, который можно использовать для автоматизации настройки или развертывания на большом...
0
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

задавать не работает внутри цикла. См. присваивание переменной внутри цикла.

Вместо этого можно использовать петля.индекс. Шаблон ниже

{% for item in list_of_items %}
     {{ 5500 * (loop.index-1) + 1 }}..{{ 5500 * loop.index }}
{% endfor %}

дает

 1..5500
 5501..11000
 11001..16500

Другие вопросы по теме