Stellt euch vor, ihr müsst ein riesiges Lego-Schloss bauen. Ohne Anleitung. Ihr sucht Steine, probiert herum, bis es endlich steht. Doch dann kommt jemand: „Super, jetzt bau bitte exakt das gleiche Schloss noch dreimal daneben.“ Panik. Habt ihr euch gemerkt, in welcher Reihenfolge ihr die Steine gesetzt habt?
Genau das passiert bei IT-Systemen andauernd und führt zu fatalen Problemen.
Die Lösung? Terraform!
Trügerische Sicherheit
In der IT-Welt ist das manuelle Zusammenklicken von Infrastrukturen und Konfigurationen, das sogenannte ClickOps, weit verbreitet. Hierbei erfolgt das Einloggen in Web-Oberflächen (wie AWS, Azure oder SaaS-Tools) und die Konfiguration durch Menüs, Checkboxen und Eingabefelder.
Dieser Prozess wirkt zunächst intuitiv und schnell, birgt jedoch langfristige Risiken. Zur Veranschaulichung dient die Konfiguration eines Online-Shops über ein Verwaltungs-Backend:
- Einstellungen > Währung: Auswahl von Euro.
- Versand > Zone: Hinzufügen von Deutschland.
- Sicherheit > Admin-Zugriff: Beschränkung auf eine spezifische IP-Adresse.
Dies funktioniert für das erste System. Soll jedoch Monate später im Zuge einer Expansion ein identischer Shop für einen anderen Markt (z. B. USA mit Dollar statt Euro) aufgesetzt werden, fehlt oft das Wissen über die exakten damaligen Schritte.
Die Risiken dieses Vorgehens sind immens:
- Menschliches Versagen: Ein einzelner vergessener Klick – beispielsweise bei der Firewall – kann dazu führen, dass das neue System unsicher ist.
- Fehlende Dokumentation: Ohne Aufzeichnungen ist die Konfiguration nur in den Köpfen einzelner Personen verankert. Bei Ausfall dieser Wissensträger steht der Betrieb still.
- Unterschiede: Durch spontane, undokumentierte Änderungen gleicht mit der Zeit keine Umgebung der anderen.
Die Lösung: Infrastructure as Code (IaC)
Mit Terraform wird ein Ansatz verfolgt, der sich Infrastructure as Code (IaC) nennt. Anstatt manuell zu konfigurieren, wird ein Bauplan in Code-Form erstellt.
Der entscheidende Unterschied liegt im deklarativen Ansatz. Während bei imperativen Methoden (wie Skripten) jeder Schritt einzeln vorgegeben werden muss, definiert der deklarative Ansatz von Terraform lediglich das gewünschte Endergebnis. Der Weg dorthin wird vom Tool übernommen.
Beispiel: Konfiguration eines Online-Shops
# Beispielhafte Darstellung der Konfiguration
resource "shop_config" "main" {
currency = "EUR"
shipping_zone = "DE"
admin_ip = "192.168.1.1"
firewall_active = true
}
Dieser Code repräsentiert den gesamten Zustand des Shops in einer Textdatei. – (Quelle: Beispiel Code Joshu Ricke)
Die Vorteile der Code-basierten Konfiguration
Wiederholbarkeit und Skalierbarkeit
Soll ein weiterer Shop für einen neuen Markt entstehen, genügt es, den bestehenden Code zu kopieren und lediglich die notwendigen Parameter (z. B. von currency = "EUR" zu currency = "USD") anzupassen. Die Ausführung von Terraform erstellt innerhalb von Sekunden eine neue Umgebung, die garantiert dieselben Sicherheitseinstellungen wie das Original aufweist.
Versionierung und Teamwork
Da die Konfiguration als Textdatei in einem Versionsverwaltungssystem (wie Git) gespeichert werden kann, ergeben sich folgende Vorteile:
- Nachvollziehbarkeit: Jede Änderung ist transparent.
- Rollbacks: Sollte eine Änderung Fehler verursachen, kann problemlos auf einen früheren, funktionierenden Zustand zurückgegangen werden.
- Qualitätssicherung: Änderungen können durch Kollegen geprüft werden, bevor sie aktiv geschaltet werden.
Automatische Korrektur von Abweichungen
Ein wesentlicher Vorteil ist die Sicherstellung der Konsistenz. Werden manuelle Änderungen an der Infrastruktur vorgenommen (z. B. das Deaktivieren einer Firewall zu Testzwecken), entsteht eine Diskrepanz zwischen Soll-Zustand (Code) und Ist-Zustand (Realität).
Terraform erkennt diese Abweichungen bei der nächsten Ausführung und meldet, dass die Realität nicht mehr dem Bauplan entspricht. Das Tool ist in der Lage, die unerwünschten Änderungen rückgängig zu machen und den definierten sicheren Zustand wiederherzustellen. ClickOps lässt Chaos zu, Terraform erzwingt Ordnung.
Fazit
Der Wechsel von ClickOps zu einem deklarativen Ansatz mit Terraform stellt einen fundamentalen Schritt zur Professionalisierung der IT-Infrastruktur dar. Zwar erfordert Terraform initial einen höheren Aufwand durch das Erlernen der Syntax und das Schreiben sauberer Module, doch dieser Investitionsaufwand wird durch den langfristigen Nutzen bei weitem übertroffen.
Terraform liefert die fehlende Bauanleitung für komplexe Systeme und ermöglicht im Fehlerfall einen automatisierten Wiederaufbau der Infrastruktur auf Knopfdruck.
Weiterführende Links
https://developer.hashicorp.com/terraform
Dieser Blog–Beitrag wurde mit Unterstützung von KI erstellt.
