Der imperative Ansatz, den Ansible zur Formulierung der zu automatisierenden Aufgaben verwendet, ist aus unserer Sicht eingängiger und hält auch in komplexen Setups weniger Überraschungen bereit als die eher deklarative Herangehensweise von beispielsweise Puppet. Grob gesagt stellt Ansible das "Wie" in den Vordergrund, während Puppet darauf setzt, mit dem gewünschten Zielzustand eines Systems das "Was" zu beschreiben und darauf zu bauen, dass dieser Zustand von den Agenten – ausgehend vom aktuellen Systemzustand – hergestellt werden kann. Treten unerwartete Effekte und Probleme auf, ist durch den höheren Abstraktionsgrad das Debugging mitunter aufwändig und schwer nachvollziehbar.
Als Mindestanforderung setzt Ansible lediglich ein installiertes Betriebssystem (hier Ubuntu-Linux) voraus, das einen SSH-Zugang für einen administrativen Nutzer bereitstellt. Weil bereits ein Betriebssystem und SSH-Zugang erforderlich sind, ist Ansible explizit nicht als Baremetal Provisioning-Tool geeignet. In unserem Fall starten alle neu aufgesetzten Maschinen mit einem schlanken Basis-Image, das diese Voraussetzungen erfüllt. Sobald ein Login per SSH möglich ist, kann Ansible übernehmen. Zur Laufzeit werden dann alle erforderlichen Komponenten via SSH auf das Zielsystem übertragen, dort ausgeführt und anschließend wieder entfernt – keine Sorge, das ist keineswegs so langsam, wie es sich im ersten Moment anhört. Während dedizierte Agenten die Komplexität des Gesamtsystems erhöhen und nach der Installation gewartet und aktuell gehalten werden müssen, entfällt dieser Aufwand bei Ansible. Updates für Ansible beschränken sich auf die lokale Installation.
Um Maschinen provisionieren zu können, muss Ansible wissen, wie sie zu erreichen sind. Diese Informationen sind in sogenannten Inventorys gespeichert. Ein Inventory ist eine Textdatei im
...Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.