Ansible 需要for循环的帮助吗

Ansible 需要for循环的帮助吗,ansible,jinja2,Ansible,Jinja2,我想知道是否有一种方法可以让下面的代码在每次列出{{routemapnumber}}值时增加5。所以第一个{{routemapnumber}}值是5,然后另一个是10,等等。我认为for循环可以工作,但是我在语法方面有问题 route-map RDS_FILTER permit {{routemapnumber}} match ip address {{item.aclnumber}} set ip next-hop verify-availability 10.4.21.157 1 tra

我想知道是否有一种方法可以让下面的代码在每次列出{{routemapnumber}}值时增加5。所以第一个{{routemapnumber}}值是5,然后另一个是10,等等。我认为for循环可以工作,但是我在语法方面有问题

route-map RDS_FILTER permit {{routemapnumber}}
 match ip address {{item.aclnumber}}
 set ip next-hop verify-availability 10.4.21.157 1 track {{item.slanumber}}
 set ip next-hop 192.168.2.58
route-map RDS_FILTER permit {{routemapnumber}}
 match ip address 109
 set ip next-hop verify-availability 10.4.21.157 1 track 1
 set ip next-hop 192.168.2.58
route-map RDS_FILTER permit {{routemapnumber}}
 match ip address 108
route-map RDS_FILTER permit {{routemapnumber}}
match ip address 107
 set ip next-hop 192.168.0.2
route-map RDS_FILTER permit {{routemapnumber}

如果行数不多,我会使用硬编码增量,例如:

route-map RDS_FILTER permit {{routemapnumber}}
 match ip address
 set ip next-hop verify-availability 10.4.21.157 1 track
 set ip next-hop 192.168.2.58
route-map RDS_FILTER permit {{routemapnumber + 10}}
 match ip address 109
 set ip next-hop verify-availability 10.4.21.157 1 track 1
 set ip next-hop 192.168.2.58
route-map RDS_FILTER permit {{routemapnumber + 15}}
 match ip address 108
route-map RDS_FILTER permit {{routemapnumber + 20}}
match ip address 107
 set ip next-hop 192.168.0.2
route-map RDS_FILTER permit {{routemapnumber + 25}}
如果这对您来说不是一个好选项,您可以在打印变量之前,通过使用
set
语句增加变量,在模板中添加一些数学逻辑:

{%set routemapnumber=routemapnumber+5%}

完整示例:

route-map RDS_FILTER permit {{routemapnumber}}
 match ip address
 set ip next-hop verify-availability 10.4.21.157 1 track
 set ip next-hop 192.168.2.58
route-map RDS_FILTER permit {% set routemapnumber = routemapnumber + 5 %}{{routemapnumber}}
 match ip address 109
 set ip next-hop verify-availability 10.4.21.157 1 track 1
 set ip next-hop 192.168.2.58
route-map RDS_FILTER permit {% set routemapnumber = routemapnumber + 5 %}{{routemapnumber}}
 match ip address 108
route-map RDS_FILTER permit {% set routemapnumber = routemapnumber + 5 %}{{routemapnumber}}
match ip address 107
 set ip next-hop 192.168.0.2
route-map RDS_FILTER permit {% set routemapnumber = routemapnumber + 5 %}{{routemapnumber}}

我不确定您是否可以使用for循环,文件中的其余文本没有重复。尝试硬编码增量,即使用:
{{{routemapnumber+5}}
,在下一个位置:
{{{routemapnumber+10}}
等等这就是我一直遇到的问题。我注意到for循环不适用于下面的其他文本。硬编码是我的选择,但变量的数量是动态的,使该选项低于标准。