2017-08-30 10 views
0

私は例えばのために、ホストのペアを生成するにはどうすればよい私は在庫(ansible)

[webs] 
test 
test2 
test3 
test4 
test5 

次いるansible 内のホストのリストからホストのペアを生成しようとしていますJinja2のを使用して、リストからペアを生成しますtest2とtest3とtest4、test5とtest(最初から繰り返す)

私はバッチ、スライス、with_itemsのようなフィルタを試しましたが、うまくいかないようです。

これらのペアを簡単に生成する方法はありますか?

+0

ユースケースは何ですか?コンテキストを追加してください。 –

+0

私はホスト間の接続性/帯域幅テストを実行していますが、ランダムに選択されたホストとのペアが好きですが、これで十分です。 – Overture

+0

コードまたは擬似コードを追加します。ペアと対戦する必要がありますか?または単一のタスクですか? –

答えて

1

これをさらに最適化することができます。

tasks: 
    - set_fact: total_hosts={{groups['webs'] | length }} 
    - debug: msg={{groups['webs'] | slice(total_hosts | int // 2) | list}} 
    when: "{{total_hosts |int is divisibleby 2}}" 
    - debug: msg={{groups['webs'] | slice(total_hosts | int // 2 + 1, fill_with=groups['webs'][0]) | list}} 
    when: "{{total_hosts |int is not divisibleby 2}}" 

出力

TASK [debug] ******************************************************************* 
ok: [localhost] => { 
    "msg": [ 
     [ 
      "test", 
      "test2" 
     ], 
     [ 
      "test3", 
      "test4" 
     ], 
     [ 
      "test5", 
      "test" 
     ] 
    ] 
} 
+0

ありがとう、これは私のために働く。 ' '#分割ホスト二つのグループ、サーバへ 'と をclients' | "{シャッフル} {グループ[ 'ウェブ']}": – Overture

+0

は、私はこの1つを思い付いたが、両方が同じようにうまく ' hosts_shuffled作品"{{host_lists [0]}}" クライアント: "{{host_lists [1]}}"、 "{{host_shuffled | slice(2)、hosts_shuffled [0] " – Overture