2017-10-31 8 views
1

네트워크 장치에서 몇 가지 명령을 실행하고 결과를 별도의 목록으로 가져온 플레이 북이 있으며 템플릿 + .j2 파일을 사용하면이 파일이 모두 별도의 파일로 출력됩니다.Jinja 형식의 가능한 템플릿

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

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

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

내 출력은 다음과 같습니다 : 같은 템플릿은 보이는

출력은 다음과 같이 표로하는
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 

내가 원하는 것은 : 내가 시도

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 

중첩 된 루프를 각 목록의 중복을 반환합니다. Ansible/Jinja와이 작업이 가능합니까?

답변

4

사용 zip 필터 :

{% 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]) 오른쪽에 패딩 10 대를 얻는 것입니다.

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

{% endfor %} 
:

당신은 중첩 루프를 사용할 수 있습니다