Einführung in Bedingungen
Bedingungen in Ansible ermöglichen es Ihnen, die Ausführung von Aufgaben basierend auf bestimmten Bedingungen zu steuern. Dies ist äußerst nützlich, wenn Sie je nach dem Zustand Ihres Systems oder dem Wert bestimmter Variablen unterschiedliche Aktionen ausführen müssen.
Erstellen wir ein einfaches Playbook, das die Verwendung von Bedingungen demonstriert:
nano conditional_example.yml
Dieser Befehl öffnet den nano-Texteditor, um eine neue Datei mit dem Namen conditional_example.yml
zu erstellen. Fügen Sie nun den folgenden Inhalt hinzu:
---
- name: Conditional Example
hosts: localhost
gather_facts: yes
tasks:
- name: Check OS family
debug:
msg: "This is a Debian-based system"
when: ansible_os_family == "Debian"
- name: Check OS family (alternative)
debug:
msg: "This is not a Debian-based system"
when: ansible_os_family!= "Debian"
Lassen Sie uns dies analysieren:
---
am Anfang der Datei markiert den Beginn eines YAML-Dokuments.
name: Conditional Example
gibt unserem Playbook einen Namen.
hosts: localhost
gibt an, dass dieses Playbook auf dem lokalen Rechner ausgeführt wird.
gather_facts: yes
teilt Ansible mit, Informationen über das System zu sammeln, bevor die Aufgaben ausgeführt werden. Dies ist wichtig, da wir diese Fakten in unseren Bedingungen verwenden werden.
tasks:
beginnt die Liste der auszuführenden Aufgaben.
Jede Aufgabe verwendet das debug
-Modul, um eine Nachricht auszugeben, aber die Ausführung wird durch die when
-Klausel gesteuert:
- Die erste Aufgabe wird nur ausgeführt, wenn das System auf Debian basiert (
ansible_os_family == "Debian"
).
- Die zweite Aufgabe wird nur ausgeführt, wenn das System nicht auf Debian basiert (
ansible_os_family!= "Debian"
).
ansible_os_family
ist eine von Ansible über das Zielsystem gesammelte Information. Sie wird hier verwendet, um zu demonstrieren, wie Bedingungen funktionieren.
Speichern Sie die Datei und verlassen Sie den nano-Editor (Ctrl+X, dann Y, dann Enter).
Jetzt führen wir das Playbook aus:
ansible-playbook -i../inventory.ini conditional_example.yml
Dieser Befehl teilt Ansible mit, unser Playbook auszuführen. Die Option -i../inventory.ini
gibt die Inventar-Datei an, die wir zuvor erstellt haben.
Sie sollten eine Ausgabe sehen, die angibt, ob Ihr System auf Debian basiert oder nicht. Je nach der Betriebssystemfamilie Ihres Systems wird nur eine der Debug-Nachrichten angezeigt.
Dieses Beispiel zeigt, wie Bedingungen verwendet werden können, um Ihre Playbooks an verschiedene Umgebungen anzupassen. In der Praxis könnten Sie Bedingungen verwenden, um unterschiedliche Pakete auf verschiedenen Betriebssystemtypen zu installieren oder bestimmte Aufgaben zu überspringen, wenn eine Datei bereits existiert.
Denken Sie daran, dass die Stärke von Bedingungen darin liegt, dass sie Ihre Playbooks flexibel machen und verschiedene Szenarien behandeln können, ohne dass für jeden Fall separate Playbooks erforderlich sind.