2017-08-30 1 views
0

Je suis en train de créer une paire d'hôtes à partir d'une liste d'hôtes dans ansible je suit l'inventairepaires de la liste à l'aide jinja2 (ansible)

[webs] 
test 
test2 
test3 
test4 
test5 

Comment générer des paires d'hôtes, par exemple test et test2, test3 et test4, test5 et test (répété depuis le début)

J'ai essayé des filtres comme batch, slice et with_items, mais cela ne semble pas fonctionner.

Existe-t-il un moyen facile de générer ces paires en ansible?

+0

Quel est le cas d'utilisation? Ajoutez du contexte, s'il vous plaît. –

+0

J'exécute des tests de connectivité/bande passante entre les hôtes, je préfère les paires avec des hôtes sélectionnés aléatoirement, mais au-dessus suffira pour le moment. – Overture

+0

Ajouter un code ou un pseudo-code. Avez-vous besoin d'exécuter un jeu contre des paires? ou juste une seule tâche? –

Répondre

1

Vous pouvez optimiser cela davantage.

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

Sortie

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

Merci cela fonctionne pour moi. – Overture

+0

je suis venu avec celui-ci, mais les deux œuvres aussi bien 'hosts_shuffled: "{{groupes [ 'toiles'] | lecture aléatoire}}"' '# hôtes divisés en deux groupes, serveurs et clients culture ' host_lists: "{{hosts_shuffled | slice (2, hosts_shuffled [0]) | liste}}" ' ' serveurs: "{{host_lists [0]}}" clients: "{{host_lists [1]}} "' – Overture