1
Вот шаблон YAML:Jinja2 для цикла и сложных условий
static_routes:
- network: 1.1.1.0
mask: 255.255.255.0
next_hop: 19.19.3.10
- network: 7.7.32.0
mask: 255.255.255.0
next_hop: 7.7.2.1
- network: 172.16.110.0
mask: 255.255.255.248
intf: FastEthernet0/1.1
next_hop: 172.16.110.3
- network: 172.16.120.0
mask: 255.255.255.248
intf: FastEthernet0/1.2
next_hop: 172.16.120.3
- network: 150.1.7.4
mask: 255.255.255.255
intf: FastEthernet0/0.1
next_hop: 19.19.3.10
vrf: Site-1
glob: global
- network: 150.1.7.4
mask: 255.255.255.255
next_hop: 19.19.3.10
vrf: Site-1
- network: 150.1.7.4
mask: 255.255.255.255
next_hop: 19.19.3.10
intf: FastEthernet0/0.1
glob: global
vrf: Site-2
- network: 150.1.7.4
mask: 255.255.255.255
next_hop: 19.19.3.10
vrf: Site-2
Jinja2 шаблон (уведомление повторы, если заявление и интересно, если есть способ, чтобы объединить его в одном, чтобы получить желаемый результат ниже)
{% for r in item.static_routes %}
{% if r.intf is undefined and r.vrf is undefined and r.glob is undefined %}
ip route {{ r.network }} {{ r.mask }} {{ r.next_hop }}
{% endif %}
{% if r.intf is defined and r.glob is undefined %}
ip route {{ r.network }} {{ r.mask }} {{ r.intf }} {{ r.next_hop }}
{% endif %}
{% if r.intf is defined and r.glob is defined and r.vrf is defined and r.glob is defined %}
ip route {{ r.vrf }} {{ r.network }} {{ r.mask }} {{ r.intf }} {{ r.next_hop }} {{ r.glob }}
{% endif %}
{% if r.vrf is defined and r.intf is undefined and r.glob is undefined %}
ip route {{ r.vrf }} {{ r.network }} {{ r.mask }} {{ r.next_hop }}
{% endif %}
{% endfor %}
окончательный результат будет выглядеть следующим образом:
ip route 1.1.1.0 255.255.255.0 19.19.3.10
ip route 7.7.32.0 255.255.255.0 7.7.2.1
ip route 172.16.110.0 255.255.255.248 FastEthernet0/1.1 172.16.110.3
ip route 172.16.120.0 255.255.255.248 FastEthernet0/1.2 172.16.120.3
ip route vrf Site-1 150.1.7.4 255.255.255.255 FastEthernet0/0.1 19.19.3.10 global
ip route vrf Site-1 150.1.7.4 255.255.255.255 19.19.3.10
ip route vrf Site-2 150.1.7.4 255.255.255.255 FastEthernet0/0.1 19.19.3.10 global
ip route vrf Site-2 150.1.7.4 255.255.255.255 19.19.3.10
Этот кусок кода работает, но интересно если есть способ упростить условия Jinja2 для этого типа сценария?
Удивительный способ проще. В очередной раз благодарим за помощь! – netauto