Ansible bei Bedingung

Ansible bei Bedingung
Ansible unterstützt bedingte Bewertungen, bevor eine bestimmte Aufgabe auf den Zielhosts ausgeführt wird. Wenn die festgelegte Bedingung wahr ist, wird Ansible die Aufgabe durchführen. Wenn die Bedingung nicht wahr ist (nicht erfüllt), überspringt Ansible die angegebene Aufgabe.

Um Bedingungen in ansible umzusetzen, verwenden wir die Wenn Keyword. Das Schlüsselwort nimmt boolesche Ausdrücke auf der Grundlage eines Wertes oder einer Variablen aus früheren Aufgaben oder Fakten, die aus den Remote -Hosts gesammelt wurden.

In diesem Leitfaden werden Sie unterrichtet, wie Sie Bedingungen in ansiblen Playbooks mit dem WOLL -Keyword implementieren können.

Ansible bei Bedingungen: Grundnutzung

Das WO -Keyword erfordert eine einfache Syntax:

Wann: (boolescher Zustand)

Stellen Sie sicher, dass Sie eine Bedingung übergeben, die entweder an True oder False bewertet wird.

Zum Beispiel:

Wann: Ansible_pkg_mgr == "yum"
Wann: ansible_user_shell "=="/bin/bash "

Wenn Sie mehrere Bedingungen kombinieren möchten, können Sie logische Operatoren wie und, oder und nicht verwenden.

Wann: (Bedingung1) und (Bedingung2)
Wann: (Bedingung1) oder (Bedingung2)

Um zu verstehen, wie Sie das Ansible bei Keyword verwenden, verwenden wir praktische Beispiele.

Beispiel 1

Das erste Beispiel erstellt einen Benutzer, wenn der angegebene Benutzer auf dem Remote -Host nicht vorhanden ist.

---
- Hosts: Alles
sammle_facts: nein
wahr werden
Aufgaben:
- Name: CheckifDirectoryExist
Stat:
Pfad: /home /ubuntu
Register: Dir
- Name: CreateFileifDirectoryExisten
Datei:
Pfad:/Home/Ubuntu/Datei.txt
Zustand: Berührung
Wann: Dir.Stat.existiert

Das obige Beispiel beginnt mit der Überprüfung, ob das Home -Verzeichnis des Ubuntu -Benutzers verfügbar ist. Anschließend verwenden wir die Bedingung, um eine Textdatei zu erstellen, wenn das Verzeichnis verfügbar ist.

Beispiel 2

Das nächste Beispiel schaltet alle Ubuntu -Remote -Hosts aus, die ein When -Zustand verwenden.

---
- Hosts: Alles
sammeln_facts: Ja
wahr werden
Aufgaben:
- Name: ShortdownubuntUservers
Befehl: /sbin /stilldown-tnow
Wann: ansible_facts ['os_family'] == "Ubuntu"

Im obigen Beispiel verwenden wir gesammelte Fakten, um zu bewerten, ob die Server aus der Familie Ubuntu stammen. Wenn wahr, schalten Sie die Server aus.

Beispiel 3

Im folgenden Beispiel kombinieren wir zwei Bedingungen, die einen und einen Operator verwenden.

---
- Hosts: Alles
sammeln_facts: Ja
wahr werden
Aufgaben:
- Name: InstallapacheServer
Ansible.gebaut.Paket:
Name: httpd
Staat: Neueste
Wann: (ansible_facts ['os_family'] == "debian") und
(ansible_facts ['Ansible_distribution_major_version'] == 10)

Das obige Beispiel überprüft, ob es sich bei den Hosts um Debian -Hosts handelt und ob die Verteilungsversion Debian 10 entspricht.

Beispiel 4

Wir installieren den Apache -Webserver im Spielbuch unten, wenn die Host -Familie entweder ein Debian- oder Ubuntu -Host ist.

Das Spielbuch verwendet einen logischen oder Bediener.

---
- Hosts: Alles
sammeln_facts: Ja
wahr werden
Aufgaben:
- Name: InstallapacheServer
Ansible.gebaut.Paket:
Name: httpd
Staat: Neueste
Wann: (ansible_facts ['os_family'] == "debian") oder
(ansible_facts ['os_family'] == "Ubuntu")

Beispiel 5

Betrachten Sie das Spielbuch unten, das den Nginx -Server auf die neueste Version aktualisiert, indem Sie den Notbindungsbetreiber verwenden.

---
- Hosts: Alles
- Shell: /sbin /nginx-v2> & 1
Register: Version
sammeln_facts: Ja
wahr werden

Aufgaben:
- Name: InstallapacheServer
Ansible.gebaut.Paket:
Name: Nginx
Staat: Neueste
Wann: ('"nginx/1.19.0 "NotInversion.stdout ')

Wenn die Ausgabe aus dem Nginx -Server nicht die aktuelle Version ist, installieren Sie die aktuelle Version des Pakets.

Abschluss

In diesem Leitfaden haben wir besprochen, wie man mit Bedingungen in Ansible mit dem WOLL -Keyword arbeitet.

Vielen Dank für das Lesen!