Die besten Tools für die Automatisierung der IT-Infrastruktur
Über 100 EC2-Instanzen auf Amazon AWS, darunter rund 25 Anwendungs- und zwölf hochperformante Datenbankserver, etwa 30 Millionen User und über 150 Millionen geteilte Bilder. Das war Instagram, als Facebook den Photo-Sharing-Dienst vor rund drei Jahren für eine Milliarde US-Dollar übernommen hat. Noch erstaunlicher als diese Zahlen ist jedoch die Zahl der Mitarbeiter, die für diese massive Infrastruktur damals zuständig waren: Nur drei. Und sie hatten auch noch genügend Zeit, um im eigenen Instagram-Engineering-Blog ausführlich über ihre Erfahrungen zu berichten.
Wie war das zu schaffen? Entscheidend für den Erfolg ist eine enge, reibungslose Zusammenarbeit zwischen den Systemadministratoren, die für Hardware, Netzwerke und Server zuständig sind, und den Anwendungsentwicklern, die die Software implementieren. Das ist allerdings leichter gesagt als getan. Denn die Beziehung zwischen Sysadmins und Programmierern war immer schon schwierig. Während Entwickler auf Agilität ausgerichtet sind und dafür bezahlt werden, das System ständig zu verändern – etwa durch neue Features, Fehlerbehebungen und Refactoring – müssen Systemadministratoren die Stabilität, Sicherheit und Verfügbarkeit des Systems garantieren. Jede Veränderung stellt für sie per se ein potenzielles Risiko dar. Wenn in der Praxis dann Probleme auftauchen, führt dieser Interessenkonflikt häufig zu Diskussionen und wechselseitigen Schuldzuweisungen.
DevOps verändert die IT
Hier kommt das Thema DevOps ins Spiel. Dieser Begriff setzt sich zusammen aus „Development“ und „Operations“ und beschreibt einen nicht nur technischen, sondern vor allem auch organisatorischen Ansatz, bei dem es darum geht, die Bruchstellen zwischen Anwendungsentwicklung und IT-Betrieb dauerhaft zu überwinden. Beide Seiten sollen, so die Theorie, eng zusammenarbeiten und an einem Strang ziehen. Das gemeinsame Ziel: IT-Systeme – egal ob im eigenen Rechenzentrum oder in der Public Cloud – schneller, effizienter und in besserer Qualität bereitzustellen.
Ein zentraler Gedanke der DevOps-Bewegung ist die Automatisierung von Vorgängen, die sonst manuell durchgeführt werden und daher in der Regel zeitaufwendig, wenig transparent und für eine professionelle Qualitätskontrolle kaum geeignet sind. Vor diesem Hintergrund haben sich in den letzten Jahren IT-Automation-Lösungen immer weiter etabliert – allen voran Puppet, Chef, SaltStack und Ansible. Unternehmen, die DevOps-Ansätze in der Praxis umsetzen wollen, versprechen sie die Bereitstellung und Instandhaltung von Infrastruktur und Software durch innovative Automatisierungstechnologien drastisch zu vereinfachen.
Infrastructure as Code
Hier spielt das neue Paradigma „Infrastructure as Code“ eine zentrale Rolle. Dabei handelt es sich um einen modernen Lösungsansatz, bei dem sämtliche benötigten Vorgänge zum Aufsetzen von Serverinfrastruktur und zum Durchführen von Software-Deployments im Quellcode hinterlegt werden. Das Motto lautet: „Infrastruktur programmieren statt konfigurieren“. Konfigurationsänderungen an Infrastruktur-Komponenten wie Servern, Betriebssystemen und Netzwerkdiensten werden nicht mehr direkt auf den jeweiligen Maschinen, sondern über spezielle Automation-Tools vorgenommen. Der entscheidende Vorteil liegt darin, dass sich so Systemkonfigurationen testen, versionieren und automatisiert replizieren lassen.
Automatisiertes Konfigurationsmanagement mit Puppet
Puppet gilt heute als der Platzhirsch unter den modernen IT-Automation-Tools. Die erste Version der Software kam bereits 2005 auf den Markt und präsentierte sich als eine leistungsfähigere und vor allem einfachere Alternative zu CFEngine, dem damaligen Marktführer. Seitdem hat sich Puppet kontinuierlich weiterentwickelt. Inzwischen umfasst es das gesamte Spektrum der Automatisierung, mit einer engen Systemintegration für die wichtigsten Betriebssysteme. Zudem bietet es eine umfassende Auswahl an Modulen, GUI-Oberflächen und Plugins, welche die Bedienung der Lösung erleichtern und deren Möglichkeiten erweitern.
Puppet basiert auf Ruby und arbeitet nach dem Client-Server-Prinzip. Auf dem Master-Server verwaltet ein zentraler Daemon sämtliche Konfigurationen der Infrastruktur-Komponenten. Auf den Clients läuft jeweils ein spezieller Puppet-Agent, der sich die Konfiguration vom Puppet-Master durch eine API holt und die entsprechenden Änderungen automatisch vornimmt. Konfigurationen werden in so genannten „Puppet-Manifesten“ deklariert. Dabei verwendet Puppet eine eigene domänenspezifische Sprache (DSL), die man zunächst erlernen muss.
Wie in diesem Marktsegment üblich, ist Puppet in zwei Versionen erhältlich. Die Community-Edition ist als Open-Source kostenlos erhältlich. Mit der kostenpflichtigen Enterprise-Edition bietet der Anbieter Puppet Labs weiterführende Features und Apps sowie professionellen Support für größere Organisationen.
Chef
Mit Chef präsentiert sich eine professionelle Puppet-Alternative, die ebenso in der Praxis weit verbreitet ist, vor allem im Enterprise-Sektor. Zwischen den beiden Lösungen gibt es einige Gemeinsamkeiten. So basiert auch Chef auf Ruby (und Erlang auf Serverseite) und steht in einer Community- und in einer Enterprise-Variante zur Verfügung. Letztere lässt sich bei Chef im Gegensatz zu Puppet nicht nur On-Premise, sondern auch On-Demand nutzen, was den Einstieg erleichtern soll. Chefs Web-Konsole ist allerdings nicht so umfangreich und fokussiert sich in erster Linie aufs Reporting und Monitoring. Die wichtigsten Features aus dem Bereich Konfigurationsmanagement sind nur in der Konsole verfügbar.
Zwischen den beiden Frameworks gibt es auch einige Unterschiede in der Art und Weise, wie sie ihre Dienste bereitstellen. So erfordert eine Chef-Installation für das Verwalten des Chef-Masters und der Clients zusätzlich zum Master-Server eine Workstation (Linux, Windows, Mac OS X). Zu diesem Zweck müssen Admins hier zunächst das Chef-Development-Kit einrichten, bevor sie die Chef-Agenten via SSH auf den Nodes installieren können. Die Chef-Agenten melden sich dann in regelmäßigen Zeitintervallen beim Master, um Aktualisierungen der Konfiguration „abzuholen“.
Konfigurationen heißen in diesem Fall „Recipes“, die sich in „Cookbooks“ gruppieren lassen. Dabei wird Ruby als DSL verwendet, sodass hier im Gegensatz zu Puppet keine zusätzliche Formatierungssprache auf dem Lehrplan steht.
Ein weiterer Pluspunkt: Im Chef-Supermarket befinden sich tausende „Kochbücher“, die von der Community beigesteuert wurden und die Installation und Konfiguration von populären Technologien wie MySQL, Java, Apache Web Server oder Nagios automatisieren.
SaltStack und Ansible
Neben Puppet und Chef zählen SaltStack und Ansible zu den weiteren führenden Automatisierungs- und Orchestrierungslösungen, die der Markt derzeit zu bieten hat. So wie die bereits beschriebenen Lösungen eignen sich diese beiden Tools dazu, sowohl lokale IT-Infrastrukturen als auch Private- und Public-Cloud-Umgebungen automatisiert zu verwalten. Sie sind in erster Linie als Kommandozeilen-Tools implementiert, basieren jedoch nicht auf Ruby, sondern auf Python. Beide Frameworks stellen eine ganze Reihe nützlicher Kommandos und Module zur Verfügung, um Software-Pakete zu installieren und zu konfigurieren, sowie beliebige Konfigurationsbefehle von einem zentralen Rechner aus auf einer Vielzahl verwalteter Server ausführen zu können. SaltStack setzt auf eine ähnliche Master-Client-Kommunikation wie Puppet und Chef. Um die Konfiguration der verwalteten Rechner festzulegen, kommen bei SaltStack SLS-Dateien („SaLt State”) zum Einsatz, die im YAML-Format (Yet Another Markup Language) verfasst werden.
Auch Ansible setzt zur Formulierung wiederverwendbarer Systembeschreibungen auf YAML, die hier „Playbooks“ genannt werden. Eine Besonderheit der im Jahr 2012 erschienenen Lösung besteht darin, dass sie auf das sonst übliche Client-Master-Modell verzichtet und Netzwerkcomputer über SSH verwaltet. Aus diesem Grund sind auf den zu verwaltenden Maschinen keine Clients zu installieren. Hier werden lediglich ein SSH-Server und eine Python-Installation benötigt. Das kann den Roll-Out der Software im Vergleich zu Puppet, Chef und SaltStack vereinfachen.
Generell will sich Ansible als eine leichtgewichtigere und einfachere Alternative zur Konkurrenz positionieren. Diese Strategie scheint zu funktionieren. So konnte es bereits namhafte Internet-Firmen wie Twitter, Spotify und Evernote als Kunde gewinnen. Für Enterprise-Kunden, die das volle Potenzial der Software ausschöpfen möchten, bietet das Unternehmen mit Ansible Tower [5] eine moderne Web-App für das bequeme Konfigurationsmanagement, die in puncto Funktionalität kaum Wünsche offen lässt.
Weiterführende Tools für Profis
Mit dem Siegeszug von Cloud Computing sind neben diesen „klassischen“ IT-Automation-Tools in den letzten Jahren zahlreiche Lösungen für DevOps auf dem Markt erschienen, welche die beschriebenen Produkte gut ergänzen und sie in einigen Fällen beziehungsweise Anwendungsszenarien sogar ersetzen können. Hierzu zählt zum Beispiel Vagrant, ein quelloffenes CLI-Tool (Command Line Interface) zum Erstellen und Verwalten von virtuellen Maschinen, das als eine Art Wrapper zwischen Virtualisierungssoftware wie VirtualBox und den in diesem Artikel aufgeführten Konfigurationsmanagement-Lösungen dient.
Ein weiteres interessantes Tool für Profis bietet sich mit dem SaaS-Dienst GuardRail der Softwareschmiede ScriptRock aus Mountain View. Mit dem Schwerpunkt auf „Configuration Monitoring“ versetzt er DevOps-Teams in die Lage, beliebige Systemkonfigurationen zentral zu monitoren und zu verwalten. GuardRail bietet nahtlose Integrationsmöglichkeiten mit Ansible, Puppet und der innovativen Container-Lösung Docker (Seite 130).
Fazit
Der Einstieg in die Welt der IT-Automatisierung ist sicherlich nicht leicht. Ganz im Gegenteil. Zum einen sind die in diesem Artikel aufgeführten Tools naturgemäß ziemlich komplex. Zum anderen müssen neue Technologien, Konzepte und Systeme erlernt werden, die Lernkurve ist steil. Der DevOps-Ansatz erfordert zudem ein grundlegendes Umdenken, was das Ganze noch schwieriger macht.
Doch der Aufwand lohnt sich. Denn moderne Lösungen zur Automatisierung von IT-Infrastrukturen und Anwendungen bringen enorme Potenziale mit sich und spielen im Cloud-Zeitalter eine immer wichtigere Rolle. Im Enterprise-Sektor sind Puppet, Chef, Ansible und Co. längst unverzichtbar. Von stabileren IT-Systemen, einfacheren Software-Deployments und automatisierten IT-Prozessen kann jedoch im Prinzip jedes noch so kleine Unternehmen profitieren. Je früher man sich mit diesen innovativen Lösungen auseinandersetzt, desto besser.
Danke für den Hinweis auf Ansible. Ich denke, dass wird meine Wahl werden.
Guter Artikel (wenn auch schon etwas in die Jahre gekommen). Wir in unserem Unternehmen verwenden „admins-buddy“ (admins-buddy.de) und automatisieren damit. Damit triggern wir auch zum Beispiel AWX an. Die Erstellung von virtuellen Maschinen macht admins-buddy direkt mit VMware PowerCli (VMware PowerShell SDK). Also euer Artikel trifft den Automatisierungsgrundsatz ganz gut.
Das Tool wurde ist in diesem Artikel noch nicht genannt.