Как использовать вложенные переменные в шаблонах jinja2 - PullRequest
0 голосов
/ 10 октября 2019

Как использовать вложенные переменные элемента в шаблонах jinja? Я запускаю ansible для создания конфигов для сетевых коммутаторов.

Попытка получить оператор if на основе bgp_peer_version,

У меня есть следующие переменные файлы

 ---
 switches:
   - ansible_hostname: Core1
     bgp_neighbors:
       - bgp_peer_version: both
         bgp_peer_ipv4: 10.1.1.1
         bgp_peer_ipv6: 2001::1
         bgp_vrf:
       - bgp_peer_version: v4
         bgp_peer_ipv4: 10.1.1.2
         bgp_peer_ipv6: 
         bgp_vrf:

   - ansible_hostname: Core2
     bgp_neighbors:
       - bgp_peer_version: 'both'
         bgp_peer_ipv4: 10.1.1.2
         bgp_peer_ipv6: 2001::1
         bgp_vrf:
       - bgp_peer_version: 'v4'
         bgp_peer_ipv4: 10.1.1.2
         bgp_peer_ipv6:
         bgp_vrf: 

и пока имеем следующий код

{% if item[bgp_peer_version] == "v4" %}
BGP Peer
IPv4 address {{ bgp_peer_ipv4 }}
{% else %}
BGP Peer
IPv4 address {{ bgp_peer_ipv64 }}
IPv6 address {{ bgp_peer_ipv6 }}
{% endif %}

Я пытаюсь создать шаблон, который использует переменные в соседних узлах bgp для каждого из коммутаторов. Я ищу выход с первым шаблоном. Вывод шаблона 1

Одноранговый адрес BGP IPv4 10.1.1.1 Адрес IPv6 2001 :: 1 Одноранговый адрес BGP IPv4 10.1.1.1

Вывод шаблона 2

Одноранговый адрес BGP 10.1. 1.2 IPv6-адрес 2001 :: 2 BGP Одноранговый IPv4-адрес 10.1.1.1

1 Ответ

0 голосов
/ 11 октября 2019

Q: "Как использовать вложенные переменные (элемента) в шаблонах дзиндзя?"

A: Возможно, это то, что выищу?

{% for item1 in switches %}
{% for item in item1 %}
{% if item[bgp_peer_version] == "v4" %}
result is V4
{% else %}
result if both
{% endif %}
{% endfor %}
{% endfor %}
...