State mit moved und removed umstrukturieren
Benennen Sie Ressourcen sicher um und strukturieren Sie sie neu, ohne Infrastruktur zu zerstören – mit State-Manipulationsbefehlen sowie den deklarativen Blöcken moved und removed.
State mit moved und removed umstrukturieren ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Das Problem beim Umbenennen
Wenn Sie eine Ressource in Ihrer Konfiguration umbenennen, sieht Terraform die alte Adresse als entfernt und eine neue als hinzugefügt. Standardmäßig wird die Ressource zerstört und neu erstellt, was zu Ausfallzeiten oder Datenverlust führen kann.
Tools zur Zustandsrefaktorierung ermöglichen es Ihnen, Terraform mitzuteilen, dass eine Ressource lediglich verschoben wurde.
Zustand untersuchen
Beginnen Sie mit einer Liste der im Zustand erfassten Elemente. Der Befehl terraform state list zeigt die Adresse jeder verwalteten Ressource.
terraform state listImperatives state mv
Der klassische Ansatz ist terraform state mv. Damit wird die Adresse einer Ressource im Zustand neu geschrieben. Hier benennen wir eine Instanz von aws_instance.web in aws_instance.app um.
terraform state mv aws_instance.web aws_instance.appDer Nachteil von state mv
state mv ist eine manuelle, einmalige CLI-Aktion. Sie wird nicht im Code festgehalten, sodass Teammitglieder, die dieselbe Änderung auf ihren Rechnern ausführen, sie wiederholen müssen. Das ist in kollaborativen Arbeitsabläufen fehleranfällig.
Deklarative moved-Blöcke
Der moved-Block hält eine Umbenennung in Ihrer Konfiguration fest. Terraform wendet sie beim nächsten Plan automatisch für alle an; anschließend können Sie den Block entfernen.
moved {
from = aws_instance.web
to = aws_instance.app
}In ein Modul verschieben
moved-Blöcke unterstützen auch das Verschachteln von Ressourcen in einem Modul. Die Zieladresse enthält den Modulpfad.
moved {
from = aws_instance.app
to = module.compute.aws_instance.app
}Mit einem Plan überprüfen
Führen Sie nach dem Hinzufügen eines moved-Blocks terraform plan aus. Bei einer korrekten Verschiebung werden weder Zerstörung noch Erstellung angezeigt, sondern nur eine Adressänderung. Wenn weiterhin ein Ersetzen angezeigt wird, ist der Block falsch.
terraform planAus dem Zustand entfernen
Manchmal soll Terraform eine Ressource nicht mehr verwalten, ohne die tatsächliche Infrastruktur zu zerstören. Der imperative Befehl dafür ist terraform state rm.
terraform state rm aws_instance.legacyDeklarative removed-Blöcke
Neuere Terraform-Versionen unterstützen einen removed-Block. Mit lifecycle { destroy = false } wird die Ressource aus dem Zustand entfernt, während die tatsächliche Infrastruktur unverändert bleibt.
removed {
from = aws_instance.legacy
lifecycle {
destroy = false
}
}Zustandsdateien aufteilen
Bei großen Projekten kann terraform state mv -state-out Ressourcen zwischen separaten Zustandsdateien verschieben. Das ist nützlich, wenn ein Monolith in unabhängig angewendete Stacks aufgeteilt wird.
terraform state mv -state-out=network.tfstate \
aws_vpc.main aws_vpc.mainBackups und Sicherheit
Terraform schreibt vor einer Änderung des Zustands eine .backup-Datei. Bei Remote-Backends sollten Sie dennoch immer prüfen, dass der Zustand nicht von einem Teammitglied gesperrt ist, bevor Sie manuelle Vorgänge ausführen, um Beschädigungen zu vermeiden.
Kurzer Check
Testen Sie Ihr Wissen zur Refaktorierung des Zustands.
Zusammenfassung: Sichere Zustandsrefaktorierung
Sie können Ihre Infrastruktur nun umstrukturieren, ohne sie zu zerstören:
state mv/state rmfür imperative Änderungen.moved-Blöcke für deklarative Umbenennungen.removed-Blöcke zum Vergessen von Ressourcen ohne deren Zerstörung.- Überprüfen Sie stets mit einem Plan, der kein Ersetzen anzeigt.
Häufig gestellte Fragen
Ist die Lektion „State mit moved und removed umstrukturieren“ kostenlos?
Ja — der vollständige Text von „State mit moved und removed umstrukturieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „State mit moved und removed umstrukturieren“?
Benennen Sie Ressourcen sicher um und strukturieren Sie sie neu, ohne Infrastruktur zu zerstören – mit State-Manipulationsbefehlen sowie den deklarativen Blöcken moved und removed. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um DevOps Bootcamp zu starten?
Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „State mit moved und removed umstrukturieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?
Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Remote-State-Backends
- State-Sperren und Konsistenz
- Vorhandene Ressourcen importieren
- State mit moved und removed umstrukturieren