Überprüfung der Gesundheit vor dem Ausführen von Ansible Playbook - Hosts zählen

7

Ich habe ein Playbook, das einen Redis-Cluster und Nussknacker als Proxy einrichten wird. Welche Hosts welche Rollen spielen, wird pro Gruppe definiert. Ich möchte vor dem Ausführen der Aufgaben eine Plausibilitätsprüfung hinzufügen, das heißt:

  • Gibt es genau einen Proxy? (1 Gastgeber in Gruppe A)
  • Gibt es mindestens einen Redis-Knoten (& gt; = 1 Host in Gruppe B)

Ich habe schon eine Lösung, obwohl ich denke, dass es ziemlich hässlich ist und dachte, dass es etwas besseres geben muss, aber ich kann es einfach nicht finden. Ich führe derzeit eine lokale Aufgabe aus, die das Playbook mit dem Parameter --list-hosts erneut aufruft und die Ausgabe überprüft.

%Vor%

Das funktioniert, aber gibt es nicht einfach eine Möglichkeit, die Anzahl der Hosts in einer Gruppe ohne diesen zusätzlichen Anruf zu überprüfen?

    
udondan 07.07.2014, 08:20
quelle

2 Antworten

21

(Disclaimer: Ich fühlte, dass ich nach einem ähnlichen Problem und herauszufinden, dass ich die andere Antwort hier korrigieren sollte.)

Was Woodham über die Verwendung von Jinja2-Filtern erwähnte, ist korrekt, wurde aber falsch verwendet. Sie können in Playbooks verwendet werden, aber Sie sollten sie auf diese Weise verwenden:

%Vor%

Wie Sie sehen, können wir Filter auf diese Weise einfach verketten und später können wir diese Variable überprüfen:

%Vor%     
wazy 15.09.2014, 16:32
quelle
1

Sie sollten dies mit magischen Variablen tun können. (Siehe Ansible-Dokumentation hier: Ссылка )

Um die Anzahl der Hosts in einer Gruppe zu ermitteln, können Sie die Gruppe mit groups['group_name'] abrufen. Dann können Sie den Jinja2-Filer length ( Ссылка ) verwenden, um die Länge dieser Gruppe zu erhalten.

z. (in einem Spielbuch)

%Vor%     
Woodham 07.07.2014 09:27
quelle

Tags und Links