0Pricing
DevOps Bootcamp · Lezione

Refactoring dello state con moved e removed

Rinomini e ristrutturi le risorse in sicurezza senza distruggere l'infrastruttura, usando i comandi di manipolazione dello state e i blocchi dichiarativi moved e removed.

Refactoring dello state con moved e removed è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.

Il problema della ridenominazione

Quando rinomina una risorsa nella configurazione, Terraform rileva che il vecchio indirizzo è scomparso e che ne è comparso uno nuovo. Per impostazione predefinita distrugge e ricrea la risorsa, causando potenzialmente downtime o perdita di dati.

Gli strumenti di refactoring dello state consentono di indicare a Terraform che una risorsa è stata semplicemente spostata.

Ispezione dello state

Inizi elencando gli elementi tracciati nello state. Il comando terraform state list mostra l'indirizzo di ogni risorsa gestita.

terraform state list

state mv imperativo

L'approccio classico consiste nell'usare terraform state mv, che riscrive l'indirizzo di una risorsa nello state. Qui rinominiamo un'istanza da aws_instance.web a aws_instance.app.

terraform state mv aws_instance.web aws_instance.app

Lo svantaggio di state mv

state mv è un'azione CLI manuale e una tantum. Non viene registrata nel codice, quindi i membri del team che eseguono la stessa modifica sui propri computer devono ripeterla. Questo approccio è soggetto a errori nei flussi di lavoro collaborativi.

Blocchi moved dichiarativi

Il blocco moved registra una ridenominazione nella configurazione. Terraform lo applica automaticamente per tutti durante il piano successivo; in seguito può rimuovere il blocco.

moved {
  from = aws_instance.web
  to   = aws_instance.app
}

Spostamento in un modulo

I blocchi moved gestiscono anche l'inserimento delle risorse in un modulo. L'indirizzo di destinazione include il percorso del modulo.

moved {
  from = aws_instance.app
  to   = module.compute.aws_instance.app
}

Verifica con un piano

Dopo aver aggiunto un blocco moved, esegua terraform plan. Uno spostamento corretto non mostra distruzioni o creazioni, ma solo una modifica dell'indirizzo. Se continua a vedere una sostituzione, il blocco non è corretto.

terraform plan

Rimozione dallo state

A volte desidera che Terraform smetta di gestire una risorsa senza distruggere l'infrastruttura reale. Il comando imperativo è terraform state rm.

terraform state rm aws_instance.legacy

Blocchi removed dichiarativi

Le versioni più recenti di Terraform supportano un blocco removed. Con lifecycle { destroy = false }, la risorsa viene rimossa dallo state, mentre l'infrastruttura reale rimane intatta.

removed {
  from = aws_instance.legacy

  lifecycle {
    destroy = false
  }
}

Suddivisione dei file di state

Nei progetti di grandi dimensioni, terraform state mv -state-out può spostare risorse tra file di state separati; è utile quando si suddivide un monolite in stack applicati indipendentemente.

terraform state mv -state-out=network.tfstate \
  aws_vpc.main aws_vpc.main

Backup e sicurezza

Terraform scrive un file .backup prima di modificare lo state. Tuttavia, quando usa backend remoti, verifichi sempre che lo state non sia bloccato da un membro del team prima di eseguire operazioni manuali, per evitare danneggiamenti.

Verifica rapida

Verifichi le Sue conoscenze sul refactoring.

Riepilogo: refactoring sicuro dello state

Ora può ristrutturare l'infrastruttura senza distruggerla:

  • state mv / state rm per le modifiche imperative.
  • Blocchi moved per le ridenominazioni dichiarative.
  • Blocchi removed per rimuovere una risorsa senza distruggerla.
  • Verifichi sempre con un piano che non mostri sostituzioni.

Domande Frequenti

La lezione «Refactoring dello state con moved e removed» è gratuita?

Sì — il testo completo di «Refactoring dello state con moved e removed» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.

Cosa imparerò in «Refactoring dello state con moved e removed»?

Rinomini e ristrutturi le risorse in sicurezza senza distruggere l'infrastruttura, usando i comandi di manipolazione dello state e i blocchi dichiarativi moved e removed. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare DevOps Bootcamp?

Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Refactoring dello state con moved e removed»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?

Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Backend dello stato remoto
  2. Blocco dello stato e coerenza
  3. Importazione di risorse esistenti
  4. Refactoring dello state con moved e removed
← Torna a DevOps Bootcamp