Mehrere 100 Systeme mit Ansible verwalten

Ansible ist als Orchestrierungs und Configuration Management Tool derzeit sehr populär. Dies rührt zum Einen daher, dass der Einstieg sehr einfach ist und zum Anderen, dass Ansible eine große Bandbreite an Geräten unterstützt. Neben Linux mit SSH, werden auch Windows und diverse Netzwerkkomponenten unterstützt.

Anexia, ein österreichischer Cloud-Provider, hat sich zum Ziel gesetzt seine Infrastruktur u.a. mit Ansible zu verwalten. Dieser Vortrag wird die dazugehörige Infrastruktur und die Erfahrungen bei der Entwicklung des Systems vorstellen.

Ein typisches Ansible Projekt besteht aus einem Playbook, einem Inventory und einigen Rollen. Für alle diese Dokumente ist Nachvollziehbarkeit von großer Wichtigkeit, daher werden diese Dokumente in einem Versionsverwaltungssystem abgelegt. Bei Anexia ist dies Gitlab. Gitlab stellt zudem die Umgebung für automatische Tests (CI) zur Verfügung. Für die Tests kommt in der Regel molecule zum Einsatz. Mit Hilfe von molecule werden in der CI-Umgegung Container oder virtuelle Maschinen erstellt, die dann als Zielsysteme für die zu testenden Rollen oder Playbooks verwendet werden können. Zudem bietet molecule Mechanismen, um das Resultat der Ausführung zu verifizieren.

Die Ausführung der Ansible Playbooks gegen die Produktionsumgebung übernimmt AWX. AWX stellt eine Web-basierte Benutzerschnittstelle und API für die Verwaltung und Ausführung von Ansible Projekten zur Verfügung. Ansible benötigt ein Inventory, dass die zu verwaltenden Systeme enthält. In kleinen Projekten wird dies oft in einer Textdatei gepflegt. Bei sich häufig ändernden oder größeren Umgebungen ist dies nicht praktikabel. Anexia hat sich daher entschieden, dass Inventory aus der Anexia Engine zu beziehen. Anexia Engine ist die Cloud Management Platform von Anexia. Neben Modulen für Compute, Storage und IPAM bietet es auch ein CMDB Modul. Über die zugehörige API kann ein Inventory dynamisch erzeugt werden. Zusätzlich hat es den Vorteil, dass das Inventory mit Meta-Informationen, wie z.B. Standort oder Kundennummer, angereichert werden kann.

Bei der Entwicklung von Rollen verwendet Anexia eine components/profiles/pattern Struktur. Für jede Anwendung werden generische components Rollen entwickelt (oder von Galaxy genutzt). Mit den richtigen Parametern oder zusätzlichen Hilfsrollen wird dann ein profile entwickelt. Also eine Rolle, die einen bestimmen Anwendungszweck erfüllt. In einem pattern wird daraus ein fertiges Produkt. Ein LAMP-Setup könnte z.B. als pattern realisiert werden und aus den Profiles/Rollen Apache, MySQL und PHP bestehen.

Die hier beschriebene Umgebung erlaubt die Verwaltung von mehreren hundert Systemen und ermöglicht gleichzeitig deren Weiterentwicklung und Pflege in einem Software-ähnlichem Entwicklungsmodell.

Referenzen:

Stefan Jakobs ist Teamlead System Automation und seit 2019 bei Anexia. Er benutzt und entwickelt seit 2011 verschiedene Automatisierungslösungen für Linux basierte IT Infrastrukturen und war tätig bei Daimler, Datacenter One und der Universität Stuttgart. Außerdem ist Stefan Dipl-Ing. in Elektro- und Informationstechnik.