0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Lezione

Gestire lo state di Terraform e i backend remoti

Comprenda lo state di Terraform, configuri backend remoti sicuri, gestisca il blocco dello state ed eviti la corruzione dello state nelle pipeline IaC collaborative.

Gestire lo state di Terraform e i backend remoti è una lezione CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CI/CD with GitHub Actions & DevOps Pipelines include 4 lezioni in totale.

Che cos'è lo state di Terraform

Terraform registra ciò che ha creato in un file di state (terraform.tfstate). Questo file associa la configurazione alle risorse cloud reali.

Senza lo state, Terraform non saprebbe quali risorse esistono già e potrebbe creare duplicati o non riuscire ad aggiornarle.

Perché lo state locale non funziona per i team

Per impostazione predefinita, lo state si trova sul disco locale. Questo crea problemi quando si lavora in team o in CI:

  • Gli altri non possono vedere il Suo state
  • Le esecuzioni simultanee possono danneggiare il file
  • Il file contiene segreti in testo semplice e potrebbe essere sottoposto al commit per errore

La soluzione è un backend remoto.

Backend remoti

Un backend remoto archivia lo state in una posizione condivisa e duratura, come un bucket S3, Azure Blob, GCS o Terraform Cloud.

In questo modo, ogni esecuzione della pipeline dispone di un'unica fonte attendibile per l'infrastruttura corrente.

terraform {
  backend "s3" {
    bucket = "my-tf-state"
    key    = "prod/terraform.tfstate"
    region = "us-east-1"
  }
}

Blocco dello state

Se due esecuzioni della pipeline applicano modifiche contemporaneamente, possono danneggiare lo state. Il blocco dello state lo impedisce consentendo una sola scrittura alla volta.

Con il backend S3, una tabella DynamoDB fornisce il blocco. Terraform Cloud applica automaticamente il blocco.

  backend "s3" {
    bucket         = "my-tf-state"
    key            = "prod/terraform.tfstate"
    dynamodb_table = "tf-locks"
  }

Crittografia dello state

I file di state contengono spesso valori sensibili come password e chiavi. Crittografi sempre lo state quando è archiviato.

Per il backend S3, abiliti la crittografia del bucket e imposti encrypt = true nella configurazione del backend.

  backend "s3" {
    bucket  = "my-tf-state"
    key     = "prod/terraform.tfstate"
    encrypt = true
  }

Workspace per gli ambienti

I workspace di Terraform consentono a una sola configurazione di gestire più file di state, uno per ambiente.

Passi da un workspace all'altro, così staging e produzione non condividono mai lo stesso state.

terraform workspace new staging
terraform workspace select production

Plan e apply in CI

In una pipeline, esegua terraform plan per visualizzare in anteprima le modifiche, spesso sulle PR, e terraform apply per applicarle, dopo il merge in main.

Salvi il plan in un file, così apply utilizzerà esattamente ciò che è stato sottoposto a revisione.

terraform plan -out=tfplan
terraform apply -auto-approve tfplan

Ispezione dello state

Può interrogare lo state per vedere quali risorse Terraform sta monitorando.

  • terraform state list — elenca le risorse gestite
  • terraform state show <addr> — mostra i dettagli di una risorsa

Eviti di modificare lo state manualmente; utilizzi invece i comandi.

terraform state list
terraform state show aws_instance.web

Importazione delle risorse esistenti

Se una risorsa è stata creata al di fuori di Terraform, la porti sotto gestione con terraform import invece di ricrearla.

In questo modo evita duplicazioni distruttive quando adotta IaC su un'infrastruttura esistente.

terraform import aws_s3_bucket.logs my-existing-bucket

Gestione del drift

Il drift si verifica quando qualcuno modifica manualmente l'infrastruttura, facendo sì che la realtà non corrisponda più allo state.

Esegua regolarmente terraform plan per rilevare il drift, quindi applichi nuovamente la configurazione per ripristinare lo stato precedente oppure aggiorni la configurazione affinché corrisponda alla realtà.

Non esegua mai il commit dello state

Anche con un backend remoto, si assicuri che lo state locale e i file plan siano esclusi da Git. Contengono segreti.

Un buon .gitignore protegge dalle fughe accidentali di dati.

# .gitignore
*.tfstate
*.tfstate.*
tfplan
.terraform/

Verifica rapida

Verifichi la Sua comprensione dello state di Terraform.

Riepilogo

Ha imparato a gestire in sicurezza lo state di Terraform.

  • Lo state associa la configurazione alle risorse reali; non lo modifichi mai manualmente
  • I backend remoti condividono lo state tra il team e la CI
  • Il blocco e la crittografia proteggono da danneggiamenti e fughe di dati
  • I workspace isolano gli ambienti; plan rileva il drift

Una gestione solida dello state è la base delle pipeline IaC affidabili.

Domande Frequenti

La lezione «Gestire lo state di Terraform e i backend remoti» è gratuita?

Sì — il testo completo di «Gestire lo state di Terraform e i backend remoti» è 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 CI/CD with GitHub Actions & DevOps Pipelines, passa a CoddyKit PRO. Il corso CI/CD with GitHub Actions & DevOps Pipelines include 4 lezioni in totale.

Cosa imparerò in «Gestire lo state di Terraform e i backend remoti»?

Comprenda lo state di Terraform, configuri backend remoti sicuri, gestisca il blocco dello state ed eviti la corruzione dello state nelle pipeline IaC collaborative. Eserciti CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines?

Non è richiesta alcuna esperienza precedente. CI/CD with GitHub Actions & DevOps Pipelines 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 «Gestire lo state di Terraform e i backend remoti»?

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 CI/CD with GitHub Actions & DevOps Pipelines?

Sì. Ogni lezione CI/CD with GitHub Actions & DevOps Pipelines 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. IaC con Terraform e GitHub Actions
  2. Gestire le risorse cloud
  3. Automatizzare gli aggiornamenti dell’infrastruttura
  4. Gestire lo state di Terraform e i backend remoti
← Torna a CI/CD with GitHub Actions & DevOps Pipelines