/ / Možné šablóny s formátovaním Jinja - šablóny, ansible, jinja2

Možné šablóny s formátovaním Jinja - šablóny, ansible, jinja2

Mám playbook, ktorý spúšťa niekoľko príkazovSieťové zariadenia a vytiahne výsledky do samostatných zoznamov a potom pomocou šablóny + súboru .j2 ich odošle do samostatného súboru. Šablóna vyzerá takto:

{% for i in ips %}
IP: {{ i }}
{% endfor %}

{% for j in intf %}
Intf: {{ j }}

{% for k in br_list %}
BR: {{ k }}
{% endfor %}

Môj výstup vyzerá takto:

IP: 127.0.0.1
IP: 127.0.0.2
IP: 127.0.0.3
IP: 127.0.0.4

Intf: Vlan1
Intf: Vlan2
Intf: Vlan3
Intf: Vlan4

BR: False
BR: False
BR: False
BR: False

To, čo chcem, je, aby bol výstup uvedený v tabuľke takto:

IP            Intf            BR
127.0.0.1     Vlan1           False
127.0.0.2     Vlan2           False
127.0.0.3     Vlan3           False
127.0.0.4     Vlan4           False

Všetky vnorené slučky, ktoré som skúsil, vrátia duplikáty každého zoznamu. Je to možné s možným / Jinja?

odpovede:

4 pre odpoveď č. 1

použitie zips filter:

{% for i in ips | zip(intf, br_list) %}
{{ "%-10s" | format(i[0]) }}{{ "%-10s" | format(i[1]) }}{{ "%-10s" | format(i[2]) }}
{% endfor %}

"%-10s" | format(i[0]) je dostať 10 miest polstrovanie na pravej strane.

Môžete použiť aj vnorenú slučku:

{% for i in l1 | zip(l2,l3) %}
{% for j in i %}
{{ "%-10s" | format(j) }}
{%- endfor %}

{% endfor %}