Ansible Facts: Verwendung in Playbooks und Tasks

Ansible Facts sind ein mächtiges Werkzeug, das es Administratoren und Entwicklern ermöglicht, Informationen über entfernte Systeme effizient abzurufen und zu nutzen. In diesem Beitrag werden wir uns ansehen, wie du Ansible Facts in Playbooks und Tasks für fortgeschrittene Anwendungen verwenden kannst.
Was sind Ansible Facts?
Ansible Facts sind eine Sammlung von Systeminformationen, die Ansible automatisch von entfernten Hosts sammelt. Sie beinhalten Daten wie Betriebssystem, Netzwerkkonfiguration, verfügbare Speicherplatzkapazität und vieles mehr. Ansible verwendet diese Facts, um Entscheidungen bei der Ausführung von Playbooks und Tasks zu treffen.
Du kannst dir die Ansible Facts in einen Ordner exportieren lassen, indem du folgende Zeile in deine ansible.cfg einfügst:
|
|
Verwendung von Ansible Facts in Playbooks
Um Ansible Facts in Playbooks zu verwenden, musst du zuerst sicherstellen, dass das Modul setup in deinem Playbook aufgerufen wird. Dieses Modul sammelt die Facts über die Zielhosts. Du kannst es entweder explizit aufrufen oder implizit durch die Verwendung der gather_facts-Option in deinem Playbook:
|
|
Sobald die Facts gesammelt wurden, kannst du sie in deinen Playbooks verwenden, indem du die {{ ansible_facts }}
-Variable verwendest. Du kannst auf spezifische Facts zugreifen, indem du sie als Teil der Variable angibst, zum Beispiel {{ ansible_facts['os_family'] }}
.
Beispiel: Installation von Paketen basierend auf dem Betriebssystem
|
|
ansible -m setup localhost
anzeigen lassen.Verwendung von Ansible Facts in Tasks
Du kannst Ansible Facts auch in einzelnen Tasks verwenden, indem du sie direkt als Bedingungen oder in Jinja2-Templates einfügst.
Beispiel: Erstellen von Dateien basierend auf der Netzwerkkonfiguration
|
|
In diesem Beispiel wird eine Datei erstellt, die die primäre IP-Adresse des Hosts enthält. Die IP-Adresse wird aus den gesammelten Facts extrahiert und der ip_address-Variable zugewiesen, die dann im Jinja2-Template verwendet wird.
Eklärung der Notation
In Ansible kannst du auf einzelne Facts aus einem Dictionary zugreifen, indem du den Namen des Dictionarys und den Schlüssel des gewünschten Facts angibst. Du kannst dies entweder mit der Standardnotation dictionary['key']
oder der verkürzten Dot-Notation dictionary.key
tun.
Hier ist ein Beispiel, wie du auf einzelne Facts in einem Dictionary zugreifen kannst:
Angenommen, du hast ein Dictionary mit dem Namen server_info, das die folgenden Informationen enthält:
|
|
Um auf die einzelnen Facts in diesem Dictionary zuzugreifen, kannst du die folgenden Ansible-Variablen verwenden:
|
|
Alternativ kannst du die Dot-Notation verwenden, um auf die Facts zuzugreifen:
|
|
Beide Notationen führen zum gleichen Ergebnis und können je nach persönlicher Vorliebe verwendet werden. In ähnlicher Weise kannst du auf Ansible Facts aus einem Dictionary zugreifen, indem du die ansible_facts-Variable zusammen mit dem gewünschten Fact-Schlüssel verwendest:
|
|
Je nach Ansible Version, kannst du auch auf die Facts mit der folgenden Notation zugreifen:
|
|
Fazit
Ansible Facts bieten eine enorme Flexibilität und ermöglichen es dir, deine Playbooks und Tasks intelligent und systematisch auf entfernten Hosts auszuführen. Sie erlauben dir, auf spezifische Systeminformationen zuzugreifen ohne das du sie davor kennst.
Ich hoffe ich konnte dir das Thema verständlich näher bringen.
Viel Erfolg auf deiner Automatisierungsreise!
Hier kannst du dir auch mein Cheat-Sheet für Anfänger kaufen (1 €):
PS:
Schau auch gerne in meinem GitHub Repo vorbei.