Infrastructure as Code ist das Beschreiben von Servern und Diensten in Dateien, die versioniert und wiederholt ausgeführt werden. Was sonst durch Klicken in einer Oberfläche entsteht, steht dann als Text im Repository.
- Infrastructure as Code
Das Beschreiben von Servern und Diensten in Dateien, die versioniert und wiederholt ausgeführt werden.
Beispiel: „Mit Infrastructure as Code stand die zweite Umgebung in zwanzig Minuten, ohne dass jemand etwas vergaß.“Kurz IaC. Verbreitete Werkzeuge sind Terraform und OpenTofu für Server bei Anbietern, Ansible für die Einrichtung darauf und die Dateien von Docker Compose und Kubernetes für Container.
Abgrenzung zum Deploy-Skript: Dieses bringt eine Anwendung auf einen vorhandenen Server. Infrastructure as Code beschreibt den Server selbst.
Was Infrastructure as Code ändert
Die Antwort auf die Frage, warum etwas so eingestellt ist. In einer Oberfläche ist sie verloren, in einer Datei steht sie in der Geschichte des Repositories, mit Datum, Urheber und Begründung im Commit.
Daraus folgt die zweite Änderung: Eine Umgebung lässt sich wiederherstellen. Nach einem Ausfall oder bei einem Umzug entsteht dieselbe Einrichtung aus denselben Dateien, statt aus Erinnerung und Notizen.
Welche Werkzeuge dazugehören
Zwei Ebenen. Die eine legt Dinge beim Anbieter an, also Server, Netze, Datenbanken und Zertifikate; die andere richtet das Betriebssystem darauf ein, installiert Pakete und schreibt Konfigurationsdateien.
Beide arbeiten beschreibend: In der Datei steht der Zielzustand, und das Werkzeug ermittelt die Schritte dorthin. Ein zweiter Lauf ändert deshalb nichts, wenn schon alles stimmt.
Wo die Grenze von Infrastructure as Code liegt
Bei den Geheimnissen und bei den Daten. Zugangsdaten gehören in einen Tresor, auf den die Dateien allein verweisen; Datenbanken lassen sich anlegen, ihr Inhalt kommt aus der Sicherung.
Dazu kommt der Einstieg. Für einen Server bei einem Hoster ist der Aufwand höher als der Nutzen; ab der zweiten gleichartigen Umgebung dreht sich das, siehe Secrets-Verwaltung.