Terraformzustand, erklärt
Die Datei, die alles über Ihre Infrastruktur weiß und wie man sie schützt.
Die Datei, die alles über Ihre Infrastruktur weiß und wie man sie schützt.

Wenn man mit Terraform beginnt, konzentriert man sich auf die .tf - Die Akten. Die Ressourcen, die Module, die Variablen. Die Zustandsakte ist nur etwas, das nach dem ersten erscheint applyDie meisten denken nicht darüber nach, bis etwas schief geht.
Und irgendwann geht immer etwas schief. Eine verlorene Staatsakte, eine beschädigte, zwei Personen, die gleichzeitig beantragt haben, ein Geheimnis durch den Staat durchgesickert. Verständnis ist das, was Terraform von Vertrauen unterscheidet. (OpenTofu funktioniert auf dieselbe Weise.)
Terraforms Zustand ist eine JSON-Datei, die Ihren Code mit realen Ressourcen verknüpft.
Wenn du schreibst resource "aws_s3_bucket" "logs", Terraform muss sich daran erinnern , dass dieser bestimmte Block entspricht dem Eimer mit ID acme-logs-prod in Ihrem AWS-Konto. Diese Kartierung, plus die letzten bekannten Attribute jeder Ressource, ist der Zustand.
Terraform verwendet es:
Ohne Staat weiß Terraform nicht, welche Ressourcen sie verwaltet. Löschen Sie die Zustanddatei, und Terraform wird versuchen, alles neu zu erstellen, während die alten Ressourcen weiter laufen, unverwaltet.
Für alles, was über ein persönliches Experiment hinausgeht, halten Sie den Zustand in einem Remote-Backend mit Sperrung:
Das Sperren verhindert, dass zwei Personen (oder Pipelines) gleichzeitig anwendbar sind und den Zustand beschädigen. Versionen auf dem Eimer geben dir eine Geschichte, um dich von Fehlern zu erholen.
Ihre Staatsakte ist die Erinnerung Ihrer Infrastruktur. Verliert man ihn, wacht Terraform mit Gedächtnisverlust in einem Haus voller Fremde auf.
Die staatlichen Akten enthalten oft Geheimnisse in einfachem Text: Datenbankpasswörter, private Schlüssel, Token oder alles, was eine Ressource als Attribut zurückgibt. Selbst wenn Sie eine Variable als sensitive, ist es in der Plan-Ausgabe versteckt, nicht in der Zustanddatei.
Der Staat schützt wie Geheimnisse:
*.tfstate und *.tfstate.backup zu .gitignore.Die Umbenennung einer Ressource oder die Verlegung in ein Modul ändert ihre Adresse. Ohne Terraform zu informieren, würde es die alte Ressource zerstören und eine neue erzeugen. Für eine Datenbank ist das eine Katastrophe.
Modern Terraform verarbeitet das in Code mit moved Blöcke:
moved {
from = aws_s3_bucket.logs
to = module.logging.aws_s3_bucket.this
}
Der Plan zeigt einen Zug statt Zerstören und Erstellen. Weil es in Code ist, wird es überprüft und funktioniert in jeder Umgebung. Viel sicherer als die älteren terraform state mv Kommando.
Um eine manuell erstellte Ressource unter die Verwaltung von Terraform zu bringen, import Blöcke:
import {
to = aws_s3_bucket.legacy
id = "acme-legacy-bucket"
}
Lauf ! terraform plan -generate-config-out=generated.tf und Terraform schreibt sogar einen ersten Entwurf der Ressourcenkonfiguration. Reinigen, planen und bewerben.
Manchmal möchten Sie, dass Terraform die Verwaltung einer Ressource beendet, ohne sie zu löschen, zum Beispiel wenn sie an einen anderen Stapel übergeben wird. Verwenden Sie eine removed Einheit:
removed {
from = aws_s3_bucket.handover
lifecycle {
destroy = false
}
}
Die Ressource bleibt in der Cloud. Terraform vergisst es einfach.
Ein paar Situationen und was zu tun ist:
terraform force-unlock <lock-id>, aber erst, nachdem überprüft, dass nichts tatsächlich läuft.terraform plan -refresh-only zeigt die Unterschiede, und terraform apply -refresh-only Die Daten werden in einem neuen System aktualisiert, um der Realität zu entsprechen, ohne die Infrastruktur zu verändern.terraform state list und terraform state show <address> sind sichere, nur lesbare Möglichkeiten, nach innen zu schauen.Vermeiden Sie die manuelle Bearbeitung des JSON. Wenn du es wirklich musst, nimm erst eine Verstärkung und weißt, dass du alleine bist.
Ist jede State-Datei remote, gesperrt, versioniert und verschlüsselt? Wer hat Zugang zum Produktionsstand? Nehmen Sie noch state mv Kommandos statt moved - Die Blöcke? Diese drei Fragen decken den größten Teil des Risikos ab.
Meine Meinung: Behandeln Sie den Staat als die sensibelste Datei in Ihrer Infrastruktur. Schützen Sie es, verändern Sie es und lassen Sie es nie auf einem Laptop leben.
Desly