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.