DEV Community

Sergey Shinder
Sergey Shinder

Posted on

Wie ich gelernt habe, meinem Terraform-State mehr zu misstrauen als meinem Gedächtnis

Der teuerste Fehler meiner Laufbahn war eine Handbewegung in der Cloud-Konsole. Eine kleine Änderung, „nur schnell", ein Sicherheitsgruppen-Eintrag angepasst, um ein Problem zu lösen. Zwei Wochen später zerstörte ein terraform apply genau diesen Eintrag wieder, weil der Code nichts davon wusste. Der Ausfall dauerte vierzig Minuten, und die Ursache war nicht das Werkzeug, sondern meine Bequemlichkeit.

Seitdem habe ich eine feste Regel: Die Konsole ist zum Lesen da, nicht zum Schreiben. Jede Änderung an der Infrastruktur geht durch Code, durch einen Merge Request, durch einen Plan, den jemand anschaut. Das fühlt sich im ersten Moment umständlich an. Warum drei Minuten in einen Plan investieren, wenn ein Klick reicht? Weil der Klick nicht dokumentiert ist, nicht reviewbar ist und nicht reproduzierbar ist. Der Klick existiert nur in meinem Kopf, und mein Kopf ist ein unzuverlässiges System.

Der State ist dabei der wunde Punkt. Ich behandle ihn wie eine Datenbank in Produktion, nicht wie eine Textdatei. Er liegt in einem entfernten Backend mit Locking, damit nicht zwei Leute gleichzeitig applyen. Ich fasse ihn niemals von Hand an, außer in einem sauberen, dokumentierten state-Kommando, und selbst dann mit einem Backup. Ein manuell verbogener State ist eine Zeitbombe, die irgendwann bei einem Kollegen hochgeht, der nichts davon ahnt.

Was mich diese Erfahrung wirklich gelehrt hat, ist eine Frage der Ehrlichkeit. Infrastructure as Code funktioniert nur, wenn der Code die Wahrheit sagt. Sobald es eine zweite Wahrheit gibt, nämlich die Realität in der Cloud, die vom Code abweicht, ist das ganze Versprechen gebrochen. Dann verwalte ich keine Infrastruktur mehr, ich rate nur noch.

Deshalb laufe ich regelmäßig plan gegen Produktion, ohne etwas ändern zu wollen. Nur um zu sehen, ob jemand danebengegriffen hat. Ein Plan, der Änderungen zeigt, obwohl niemand etwas eingecheckt hat, ist eine Warnung. Er sagt mir, dass die Disziplin irgendwo gebrochen wurde, und je früher ich das sehe, desto günstiger ist die Reparatur.

Infrastruktur ordentlich zu machen heißt nicht, alles zu automatisieren. Es heißt, keine zweite Wahrheit zuzulassen.

– Sergey Shinder

Top comments (0)