Refaktorering af state med moved og removed
Omdøb og omstrukturer ressourcer sikkert uden at ødelægge infrastrukturen ved hjælp af kommandoer til state-manipulation og de deklarative moved- og removed-blokke.
Refaktorering af state med moved og removed er en gratis Terraform som infrastruktur som kode-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Terraform som infrastruktur som kode, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Terraform som infrastruktur som kode-kurset indeholder 4 lektioner i alt.
Problemet med omdøbning
Når du omdøber en ressource i din konfiguration, ser Terraform den gamle adresse som fjernet og en ny som tilføjet. Som standard vil den ødelægge og oprette ressourcen igen, hvilket kan medføre nedetid eller datatab.
Værktøjer til refaktorering af tilstanden lader dig fortælle Terraform, at en ressource blot er flyttet.
Inspektion af tilstanden
Start med at vise, hvad der spores i tilstanden. Kommandoen terraform state list viser adressen på hver administreret ressource.
terraform state listImperativ state mv
Den klassiske metode er terraform state mv, som omskriver en ressources adresse i tilstanden. Her omdøber vi en instans fra aws_instance.web til aws_instance.app.
terraform state mv aws_instance.web aws_instance.appUlempen ved state mv
state mv er en manuel CLI-handling, der kun udføres én gang. Den registreres ikke i koden, så teammedlemmer, der udfører den samme ændring på deres maskiner, skal gentage den. Det giver let fejl i samarbejdsbaserede arbejdsgange.
Deklarative moved-blokke
Blokken moved registrerer en omdøbning i din konfiguration. Terraform anvender den automatisk for alle under den næste plan, hvorefter du senere kan fjerne blokken.
moved {
from = aws_instance.web
to = aws_instance.app
}Flytning ind i et modul
moved-blokke håndterer også indpakning af ressourcer i et modul. Mål-adressen indeholder modulstien.
moved {
from = aws_instance.app
to = module.compute.aws_instance.app
}Kontrol med en plan
Efter tilføjelse af en moved-blok skal du køre terraform plan. En korrekt flytning viser ingen ødelæggelse eller oprettelse, kun en adresseændring. Hvis du stadig ser en udskiftning, er blokken forkert.
terraform planFjernelse fra tilstanden
Nogle gange vil du have Terraform til at holde op med at administrere en ressource uden at ødelægge den faktiske infrastruktur. Den imperative kommando er terraform state rm.
terraform state rm aws_instance.legacyDeklarative removed-blokke
Nyere versioner af Terraform understøtter en removed-blok. Med lifecycle { destroy = false } glemmer den ressourcen i tilstanden, men lader den faktiske infrastruktur være urørt.
removed {
from = aws_instance.legacy
lifecycle {
destroy = false
}
}Opdeling af tilstandsfiler
I store projekter kan terraform state mv -state-out flytte ressourcer mellem separate tilstandsfiler. Det er nyttigt, når en monolit opdeles i stacks, der kan anvendes uafhængigt.
terraform state mv -state-out=network.tfstate \
aws_vpc.main aws_vpc.mainSikkerhedskopier og sikkerhed
Terraform skriver en .backup-fil, før tilstanden ændres. Når du bruger remote backends, skal du dog altid kontrollere, at tilstanden ikke er låst af en kollega, før du udfører manuelle handlinger, så du undgår korruption.
Hurtigt tjek
Test din viden om refaktorering.
Opsummering: Sikker refaktorering af tilstanden
Du kan nu omstrukturere infrastruktur uden at ødelægge den:
state mv/state rmtil imperative ændringer.moved-blokke til deklarative omdøbninger.removed-blokke til at glemme ressourcer uden at ødelægge dem.- Kontrollér altid med en plan, der ikke viser nogen udskiftning.
Lær Terraform som infrastruktur som kode med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Refaktorering af state med moved og removed” gratis?
Ja — hele teksten til “Refaktorering af state med moved og removed” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Terraform som infrastruktur som kode-kurset, skal du opgradere til CoddyKit PRO. Terraform som infrastruktur som kode-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Refaktorering af state med moved og removed”?
Omdøb og omstrukturer ressourcer sikkert uden at ødelægge infrastrukturen ved hjælp af kommandoer til state-manipulation og de deklarative moved- og removed-blokke. Du øver dig i Terraform som infrastruktur som kode med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Terraform som infrastruktur som kode?
Der kræves ingen tidligere erfaring. Terraform som infrastruktur som kode på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Refaktorering af state med moved og removed”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Terraform som infrastruktur som kode-lektion?
Ja. Alle Terraform som infrastruktur som kode-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Fjernbaserede state-backends
- Låsning af tilstand og konsistens
- Import af eksisterende ressourcer
- Refaktorering af state med moved og removed