Was immer man mit Ansible anstellt: An irgendeinem Punkt kommt man mit den gelieferten Modulen nicht aus und muss z.B. eigene Skripte ausrollen. Diese Skripte benötigen vielleicht irgendeine Datenstruktur als Input und den Output muss man auch irgenwie sinnvoll verarbeiten. In der Praxis sieht man hier oft gut abgehangene Shell-Skripte, die auf die Zielsysteme verteilt werden. Davor und danach kann man zusehen, wie man den Input/Output mit entsprechenden Jinja2-Zaubereien verarbeitet bekommt. Wer einmal versucht hat, mit Ansible eine Liste von Dictionaries aus Rohdaten zusammenzubauen, fühlt sich sicher angesprochen.

In diesem Vortrag möchte ich aufzeigen, wie mit Hilfe von Python der Ansible-Code effizienter, übersichtlicher und performanter gestaltet werden kann. Insbesondere möchte ich auf die wenig dokumentierte filter_plugins-Schnittstelle eingehen. Ein weiteres Thema ist die Kommunikation zwischen Python-Skripten und Ansible. Als Beispiel wird eine Rolle vorgestellt, die ihre Konfiguration zur Laufzeit von einer zentralen Datenbank zieht um dann Zielsysteme individuell anzusteuern.