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ď č. 1použ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 %}