Was ist Infrastructure as Code (IaC)?
Infrastructure as Code beschreibt IT-Infrastruktur in lesbaren Textdateien statt per Handarbeit. Wir erklären verständlich, wie IaC funktioniert und warum es DevOps-Teams unverzichtbar geworden ist.
Wer früher einen Server einrichten wollte, klickte sich durch Menüs, installierte Software von Hand und notierte sich die Schritte irgendwo in einer Textdatei. Bei einem einzigen Server funktioniert das noch. Doch sobald Dutzende oder Hunderte Server, Netzwerke und Cloud-Dienste im Spiel sind, wird diese manuelle Arbeit fehleranfällig und kaum noch nachvollziehbar. Genau hier setzt Infrastructure as Code an: Die gesamte IT-Infrastruktur wird in Form von Code beschrieben und automatisch aufgebaut. Dieser Ratgeber erklärt, was dahintersteckt und warum der Ansatz heute zum Standard moderner IT geworden ist.
Was bedeutet Infrastructure as Code?
Infrastructure as Code, kurz IaC, ist ein Verfahren, bei dem IT-Infrastruktur nicht mehr von Hand eingerichtet, sondern über maschinenlesbare Konfigurationsdateien definiert wird. Statt also einen virtuellen Server manuell in einer Cloud-Oberfläche anzulegen, schreibt man eine Datei, in der genau festgelegt ist, wie dieser Server aussehen soll: wie viel Arbeitsspeicher, welches Betriebssystem, welche Netzwerkregeln und so weiter.
Ein Programm liest diese Datei und sorgt dafür, dass die beschriebene Infrastruktur entsteht. Der entscheidende Gedanke dabei: Die Infrastruktur wird wie Software behandelt. Sie kann versioniert, getestet, geteilt und automatisiert ausgerollt werden. Damit verschwindet der Unterschied zwischen dem Verwalten von Programmcode und dem Verwalten von Servern weitgehend.
Wie funktioniert IaC in der Praxis?
Im Kern beschreibt man in einer oder mehreren Dateien den gewünschten Zustand der Infrastruktur. Ein IaC-Werkzeug vergleicht diesen Soll-Zustand anschließend mit dem tatsächlichen Ist-Zustand und führt genau die Schritte aus, die nötig sind, um beide in Einklang zu bringen.
Man unterscheidet dabei zwei grundlegende Herangehensweisen:
- Deklarativ: Hier beschreibt man, was am Ende vorhanden sein soll, etwa drei Webserver hinter einem Lastverteiler. Das Werkzeug ermittelt selbst, welche Schritte dafür nötig sind. Dieser Ansatz ist heute am weitesten verbreitet.
- Imperativ: Hier legt man fest, wie etwas erreicht werden soll, also die einzelnen Befehle Schritt für Schritt. Das gibt mehr Kontrolle, ist aber aufwendiger zu pflegen.
Ein wichtiges Konzept ist die sogenannte Idempotenz. Sie bedeutet, dass man dieselbe Konfiguration mehrfach anwenden kann, ohne dass dabei jedes Mal neue oder doppelte Ressourcen entstehen. Ist der gewünschte Zustand bereits erreicht, passiert schlicht nichts. Das macht IaC verlässlich und wiederholbar.
Welche Werkzeuge werden verwendet?
Für Infrastructure as Code gibt es eine ganze Reihe etablierter Werkzeuge, die sich in ihrem Schwerpunkt unterscheiden:
- Terraform: Ein weit verbreitetes, anbieterunabhängiges Werkzeug, mit dem sich Ressourcen bei vielen verschiedenen Cloud-Anbietern verwalten lassen. Es arbeitet deklarativ.
- Ansible: Beliebt für die Konfiguration von Servern und das Installieren von Software. Es benötigt auf den Zielsystemen keinen zusätzlichen Dienst.
- AWS CloudFormation: Das hauseigene Werkzeug von Amazon Web Services, speziell für deren Cloud-Dienste.
- Pulumi: Erlaubt es, Infrastruktur in gängigen Programmiersprachen wie Python oder TypeScript zu beschreiben, statt in einer speziellen Konfigurationssprache.
Welches Werkzeug das richtige ist, hängt stark vom Einsatzzweck und der vorhandenen Cloud-Umgebung ab. Häufig kommen auch mehrere Werkzeuge gemeinsam zum Einsatz.
Welche Vorteile bringt Infrastructure as Code?
Der Umstieg auf IaC lohnt sich vor allem aus diesen Gründen:
- Wiederholbarkeit: Eine einmal beschriebene Umgebung lässt sich beliebig oft identisch aufbauen, etwa für Test, Vorschau und produktiven Betrieb.
- Nachvollziehbarkeit: Da die Konfiguration als Text vorliegt, kann sie in einer Versionsverwaltung wie Git gespeichert werden. Jede Änderung ist dokumentiert und bei Bedarf rückgängig zu machen.
- Geschwindigkeit: Komplette Umgebungen entstehen in Minuten statt in Stunden oder Tagen manueller Arbeit.
- Weniger Fehler: Manuelle Klickarbeit ist fehleranfällig. Automatisierte Abläufe liefern stets dasselbe Ergebnis.
- Teamarbeit: Mehrere Personen können dieselben Dateien einsehen, prüfen und gemeinsam weiterentwickeln.
Wo liegen die Herausforderungen?
So nützlich IaC ist, ganz ohne Aufwand kommt der Ansatz nicht aus. Teams müssen die jeweiligen Werkzeuge erlernen und ihre Denkweise anpassen. Besonders wichtig ist der Umgang mit dem sogenannten State, also dem gespeicherten Zustand der verwalteten Infrastruktur. Geht diese Information verloren oder wird sie inkonsistent, kann das zu Problemen führen.
Außerdem sollten Konfigurationsdateien sorgfältig behandelt werden, da sie unter Umständen sensible Informationen enthalten. Zugangsdaten und Schlüssel gehören niemals im Klartext in eine Datei, die womöglich öffentlich einsehbar ist. Für solche Geheimnisse gibt es eigene, abgesicherte Speichermechanismen.
Für wen ist IaC relevant?
Infrastructure as Code ist vor allem in Unternehmen und Projekten verbreitet, die mit Cloud-Diensten arbeiten oder viele Server betreuen. Es bildet einen wichtigen Baustein des sogenannten DevOps-Ansatzes, bei dem Softwareentwicklung und Betrieb eng zusammenarbeiten. Auch für kleinere Teams kann sich IaC lohnen, sobald wiederkehrende Aufgaben automatisiert werden sollen.
Fazit
Infrastructure as Code verwandelt das mühsame Einrichten von IT-Infrastruktur in einen automatisierten, nachvollziehbaren und wiederholbaren Vorgang. Statt sich durch Menüs zu klicken, beschreibt man den gewünschten Zustand einmal in lesbarem Code, der jederzeit angepasst und erneut ausgerollt werden kann. Das spart Zeit, reduziert Fehler und macht die Zusammenarbeit im Team deutlich einfacher. Für moderne Cloud-Umgebungen ist IaC daher kaum noch wegzudenken.
Mehr zum Thema findest du in unserer Übersicht: Cloud & DevOps: Alle Artikel im Überblick.