2017-08-30 3 views
0

Ich versuche, zwei Hosts aus einer Liste von Hosts in ansible Igenerieren Paare aus der Liste mit jinja2 (ansible)

[webs] 
test 
test2 
test3 
test4 
test5 

folgende Inventar haben zu generieren Wie kann ich Paare von Hosts erzeugen, für z.B. Test und Test2, Test3 und Test4, Test5 und Test (Wiederholung von Anfang)

Ich habe Filter wie Batch, Slice und with_items versucht, aber scheint nicht zu funktionieren.

Gibt es eine einfache Möglichkeit, diese Paare in ansible zu generieren?

+0

Was ist der Anwendungsfall? Fügen Sie bitte einen Kontext hinzu. –

+0

Ich bin Connectivity/Bandbreite Tests zwischen Hosts, ich bevorzuge Paare mit Hosts zufällig ausgewählt, aber oben wird für jetzt ausreichen. – Overture

+0

Fügen Sie einen Code oder einen Pseudocode hinzu. Müssen Sie ein Spiel gegen Paare führen? oder nur eine Aufgabe? –

Antwort

1

Sie können dies weiter optimieren.

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}}" 

Ausgabe

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

Danke, das funktioniert für mich. – Overture

+0

kam ich mit diesem, aber beide funktioniert genauso gut 'hosts_shuffled: "{{Gruppen [ 'Bahnen'] | Shuffle}}"' '# Split-Rechner in zwei Gruppen, Server und clients' ' host_lists: "{{hosts_shuffled | slice (2, hosts_shuffled [0]) | list}}" 'servers:" {{host_listen [0]}} " clients:" {{host_listen [1]}} "' – Overture

Verwandte Themen