Wo liegt es näher als in der IT, Prozesse zu automatisieren? Wir erklären Ihnen, wie Sie mithilfe von Configuration Management Tools Alltägliches auf wenige Klicks reduzieren – und so Raum für Wichtigeres schaffen.
In der IT kann’s schnell mal brennen. Nicht wortwörtlich, sondern im übertragenen Sinne. Denn oft prasseln mehrere Aufgaben gleichzeitig mit höchster Priorität ein: Hier ein dringender Firewall-Change, dort will ein Server nicht so richtig – und dann soll man nebenbei ein halbes Dutzend neuer Arbeitsplätze einrichten.
Zumindest letzteres sollte kein Problem sein, wenn man seine Infrastruktur ausreichend automatisiert hat. Nahezu jedes IT-Unternehmen nutzt selbstgeschriebene Skripte oder Templates für den Betrieb und die Konfiguration von Infrastruktur und Software. Sie ersparen mit wenig Aufwand viel Zeit. Der Spaß beginnt allerdings dann, wenn Sie mit der Zeit Features ergänzen oder das Skript für andere Umgebungen anpassen.
Denn so entsteht ganz schnell ein bunter Strauß von Tools, die in der Regel unter Zeitdruck geschrieben sind und schlecht gewartet werden können. Ein weiterer Nachteil: Die einzelnen Skripte sind meist Speziallösungen für kleine Teilbereiche der IT-Infrastruktur – der Blick auf das große Ganze fehlt.
Vier gewinnt
Ein Configuration Management Tool muss also her. Vier solche Automatisierungswerkzeuge sind derzeit en vogue: Chef, Puppet, Saltstack und Ansible. Alle Tools eignen sich für die automatisierte Konfiguration von Linux- und unixoiden Systemen, aber auch die Windows-Plattform wird teilweise unterstützt.
Chef und Puppet arbeiten nach dem Master-Agent-Prinzip: Auf einer zentralen Instanz werden die Konfigurationsanweisungen verwaltet. Auf den Clients läuft ein Agent, der regelmäßig den Master nach Änderungen fragt und diese bei Bedarf auf dem Client anwendet. Ansible verfolgt einen agent-less-Ansatz: Auf den Clients muss lediglich ein SSH-Server und Python installiert sein. Saltstack hingegen unterstützt sowohl den Master-Agent- als auch den agent-less-Modus.
Vor der Auswahl des geeigneten Tools braucht es eine kurze Bestandsaufnahme: Wie sieht meine IT-Landschaft aus, welche Ziele strebe ich mit meiner Infrastruktur-Planung an, welche Skills haben meine Mitarbeiter und nicht zuletzt: Welche Kosten bin ich bereit, für die Einführungsphase zu investieren?
Ich habe mir Ansible genauer angesehen – denn es ist leicht erlern- und konfigurierbar und besonders für die DevOps-Welt gut geeignet.
Entdecke die Möglichkeiten – der Slogan eines bekannten Möbelhauses lässt sich mühelos auch auf Ansible anwenden. Wer einmal damit gearbeitet hat, möchte es nicht mehr missen. Wie alle Configuration Management Tools folgt auch Ansible dem Prinzip „Infrastructure-as-Code“: Alle beteiligten Komponenten werden zu Code-Blöcken, den sogenannten Roles, abstrahiert. In Roles werden zum Beispiel alle Regeln zusammengefasst, die für die Installation und Konfiguration einer Softwarekomponente notwendig sind.
Diese Regeln werden Tasks genannt. Tasks enthalten Arbeitsanweisungen wie: Installiere ein Programmpaket, oder: Lege Benutzer an. Auch selbstgeschriebene Skripte lassen sich so integrieren.
Ansible unterstützt Variablen und Templates. Variablenwerte können fest definiert sein oder werden erst zur Laufzeit generiert und zugewiesen. Für die Strukturierung der Tasks stehen Elemente der Programmsteuerung zur Verfügung: Ansible unterstützt Schleifen, Bedingungen und Blöcke. In Playbooks werden die Roles nach dem Baukasten-Prinzip zusammengefasst: Für einen Web-Server nimmt man einfach die Roles: „Apache“, „PHP“, „MySQL“, „Monitoring“. Einmal geschriebene Roles sind über Include-Direktiven auch in anderen Playbooks einsetzbar.
Der zentrale Vorteil: Im Gegensatz zum manuellen Abarbeiten seitenlanger Installations- oder Updateanleitungen kann so kein Task übersehen werden.
Damit die Konfiguration auch auf die richtige Maschine kommt, verwendet Ansible ein zentrales Inventory, in dem alle relevanten Hosts aufgelistet sind. Dabei können Hosts zu Gruppen zusammengefasst werden. Im Playbook wird definiert, auf welchen Hosts bzw. Hostgruppen ausgerollt wird. So lassen sich Umgebungen sauber voneinander trennen.
Bisher habe ich Beispiele skizziert, für die ein bereits aufgesetzter Server vorausgesetzt wird. Was aber, wenn auch der komplette Server automatisiert ausgerollt werden soll?
There is one more thing …
Neben dem automatisiertem Configuration Management bietet Ansible auch die Möglichkeit zur Orchestrierung von virtuellen Umgebungen. Es arbeitet dabei mit VMware, Red Hat Enterprise Virtualization, Libvirt, Xenserver und Vagrant zusammen. Für VMware werden derzeit 20 Plugins bereitgestellt, die vom Management einzelner virtueller Maschinen bis hin zum kompletten Datacenter reichen.
Damit die Orchestrierung von komplexeren Infrastrukturen nicht zur Fingerübung an der Konsole auswächst, steht mit Ansible Tower ein grafisches Front-End zur Verfügung, das für Unternehmen konzipiert wurde. Es bietet ein rollenbasiertes Berechtigungskonzept, erleichtert das Zusammenstellen von Playbooks lässt sich via REST-API ansteuern. Somit kann es auch in bestehende Continuous-Integration-Strecken integriert werden.
Ergo: Configuration Management Tools erleichtern den Alltag in komplexen IT-Infrastrukturen ungemein. Ansible beispielsweise ist einfach zu lernendes und doch mächtiges Tool, mit dem schnell und effizient große Teile der täglichen Betriebsaufgaben automatisiert werden können. Welches Werkzeug letztendlich für Sie das passende ist, hängt von Ihrer ganz spezifischen Unternehmens-IT ab. Doch eines ist sicher: Einmal korrekt eingerichtet, schaffen sie Kapazitäten für wichtigere Aufgaben. Insbesondere, wenn es mal wieder brennt.