Infrastructure as Code (IaC) bedeutet: Server, Netzwerke, Datenbanken und andere Infrastruktur werden als Code beschrieben und verwaltet — in Textdateien statt per Handklick im Verwaltungsportal. Dieselben Werkzeuge wie für Software (Versionierung, Review, Tests) kommen damit auch für Infrastruktur zum Einsatz. IaC ist ein Grundpfeiler moderner CI/CD-Prozesse und des Cloud-Computing-Modells.
Deklarativ vs. imperativ
Deklarativ (Terraform): „Es soll 3 Server geben, Typ t3.micro, mit Port 80 offen"
→ das Tool sorgt dafür (gewünschter Zustand)
Imperativ (Ansible): „Installiere nginx, kopiere die Config, starte den Dienst"
→ das Tool führt die Schritte aus (Befehlsfolge)
- Deklarativ: Man beschreibt den Zielzustand, das Werkzeug berechnet die nötigen Änderungen. Typische Vertreter: Terraform, AWS CloudFormation, Pulumi.
- Imperativ: Man beschreibt die Schritte, die ausgeführt werden sollen. Typische Vertreter: Ansible, Chef, Puppet — Ansible ist dabei idempotent: Mehrfaches Ausführen erzeugt dasselbe Ergebnis.
Warum IaC?
- Reproduzierbar: Aus demselben Code entsteht immer dieselbe Umgebung — Test, Staging und Produktion sind identisch. Kein „bei mir läuft es aber".
- Versionierbar: Der Code liegt in Git. Jede Änderung ist nachvollziehbar, kommentierbar und bei Problemen zurückrollbar (Rollback auf einen alten Stand).
- Automatisiert: Infrastruktur entsteht im Rahmen der Pipeline, ohne manuelle Klickarbeit — ein wichtiger Baustein der Automatisierung.
- Überprüfbar: Code wird reviewt, getestet und geprüft, bevor er angewendet wird. Fehler fallen vor der Ausführung auf, nicht erst im Betrieb.
- Dokumentation nebenbei: Der Code selbst ist die aktuelle Beschreibung der Infrastruktur — sie kann nicht „vergessen" werden zu pflegen.
Typischer Arbeitsablauf
1. Infrastruktur in .tf-/YAML-Dateien beschreiben
2. Änderung committen + Pull Request → Kollegen reviewen
3. Pipeline prüft Syntax und plant die Änderungen (Terraform plan)
4. Anwenden (Terraform apply / Ansible playbook) → Umgebung entsteht
5. Bei Fehler: zurücksetzen auf den letzten funktionierenden Stand
Praxis-Tipps
- Kleine Schritte: Infrastruktur in Module aufteilen und einzeln versionieren, statt alles in einer Riesen-Datei zu halten.
- Zustand sichern: Terraform speichert den Ist-Zustand (State) — dieser gehört geschützt (Backend/Sperre), damit nicht zwei Personen gleichzeitig arbeiten.
- Secrets nie in den Code: Zugangsdaten gehören in einen Secret-Manager, nicht in die IaC-Dateien.
- Vor dem Anwenden immer einen Snapshot oder ein Backup der betroffenen Systeme haben.
- IaC lohnt sich besonders bei wiederholten Umgebungen (Entwicklung, Test, Produktion) und langfristig gepflegten Systemen — für ein einzelnes Wegwerf-Experiment ist der Aufwand oft zu hoch.
Verwandte Grundlagen: CI/CD, Pipeline, Git, Automatisierung, Snapshots, Testing, Terraform, Ansible.