使用 jinja2 你怎么能在一个循环中循环,第二个循环递增计数以开始和停止 var 值?

Using jinja2 how can you do loop in a loop with the second loop an incrementing count to start and stop on var values?

使用 jinja2(从 ansible 模板函数调用)在循环中执行循环的最简单方法是什么,该循环将从第一个交换机端口开始并循环(计数)到最后一个交换机端口,然后继续下一个切换并进行相同的迭代?

如有任何提示,我们将不胜感激!

示例变量:

switches:
  - name: "switch1"
    first_port: "1"
    last_port: "52"
  - name: "switch2"
    first_port: "1"
    last_port: "48"
  - name: "switch3"
    first_port: "1"
    last_port: "24"

所需的 J2 模板输出:

switch1:
  port:1
  port:2
  ...
  port:52

switch2:
  port:1
  port:2
  ...
  port:48

switch3:
  port:1
  port:2
  ...
  port:24

我相信您正在寻找的东西是 range,但根据您提供的 yaml 片段,您需要将这些起始值和结束值强制为 int,以便它们可以与range:

- debug:
    msg: |
      {% for sw in switches %}
      {{ sw.name }}:
        {% for i in range(sw.first_port|int, sw.last_port|int) %}
        port:{{ i }}
        {% endfor %}
      {% endfor %}