使用 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 %}
使用 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 %}