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 Terraform Infrastructure as Code-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 Terraform Infrastructure as Code-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Terraform Infrastructure as Code-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.
Lerne Terraform Infrastructure as Code mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 12
- Lektionen
- 48
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 Terraform Infrastructure as Code-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Terraform Infrastructure as Code-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 Terraform Infrastructure as Code 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 Terraform Infrastructure as Code zu starten?
Keine Vorkenntnisse erforderlich. Terraform Infrastructure as Code 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 Terraform Infrastructure as Code-Lektion Code schreiben und ausführen?
Ja. Jede Terraform Infrastructure as Code-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