Anwenden der Ansible When-Bedingung
Nachdem Sie nun die Grundlagen der Ansible when
-Bedingung verstanden haben, tauchen wir tiefer in die Anwendung in Ihren Ansible-Playbooks ein.
Bedingte Ausdrücke
Die when
-Bedingung unterstützt verschiedene Ausdrücke, darunter:
- Vergleichsoperatoren (==, !=, >, <, >=, <=)
- Boolesche Operatoren (and, or, not)
- Mitgliedschaftsprüfungen (in, not in)
- Regex-Matching (match)
Hier ist ein Beispiel mit mehreren Bedingungen:
- name: Paket installieren
apt:
name: nginx
state: present
when:
- ansible_distribution == 'Ubuntu'
- ansible_distribution_version is version('20.04', '>=')
In diesem Beispiel wird die Aufgabe nur ausgeführt, wenn das System Ubuntu ausführt und die Version 20.04 oder höher ist.
Zugriff auf Variablen und Fakten
Sie können Variablen und Fakten in Ihren when
-Bedingungen verwenden, um diese dynamischer und flexibler zu gestalten. Beispiel:
- name: Paket installieren
apt:
name: "{{ package_name }}"
state: present
when: package_name is defined
In diesem Beispiel wird die Aufgabe nur ausgeführt, wenn die Variable package_name
definiert ist.
Kombinieren von Bedingungen
Sie können auch mehrere Bedingungen mit den Operatoren and
, or
und not
kombinieren. Beispiel:
- name: Dienst neu starten
systemd:
name: nginx
state: restarted
when:
- ansible_service_mgr == 'systemd'
- nginx_config_changed | default(false)
In diesem Beispiel wird die Aufgabe nur ausgeführt, wenn das System systemd verwendet und die Variable nginx_config_changed
wahr ist (oder wenn die Variable nicht definiert ist).
Durch die Nutzung der Leistungsfähigkeit der Ansible when
-Bedingung können Sie robustere und anpassungsfähigere Playbooks erstellen, die eine Vielzahl von Szenarien bewältigen können.