2017-10-31 7 views
1

ネットワークデバイスでいくつかのコマンドを実行し、結果を別のリストにプッシュして、Template + a .j2ファイルを使用してすべてを別々のファイルに出力するプレイブックを持っています。Jinjaフォーマットの可能性のあるテンプレート

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 

私が試したいずれのネストされたループ:出力は次のように集計されるために、私が欲しい

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 

がある:私の出力は次のようになります

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

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

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

:のようにテンプレートが見えます各リストの重複を返します。これは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 %} 
関連する問題