Skip to Content

Che cos'è Terraform Plan?

Terraform, sviluppato da HashiCorp, è uno strumento IaC (Infrastructure-as-Code) ampiamente utilizzato che consente agli utenti di definire e fornire l'infrastruttura software utilizzando un linguaggio di configurazione di alto livello. Man mano che le organizzazioni adottano sempre più infrastrutture basate su cloud, Terraform è diventato essenziale per la gestione e l'automazione del deployment delle risorse infrastrutturali. Uno dei comandi principali di Terraform è il piano terraform, un passaggio critico nel processo di deployment che garantisce la sicurezza, la prevedibilità e l'efficienza delle modifiche all'infrastruttura.

In questo articolo esamineremo più da vicino questo comando, cosa fa e come interpretarne l'output per le configurazioni Terraform.

Che cos'è Terraform Plan?

Il comando del piano terraform è una parte vitale del flusso di lavoro Terraform che funge da ciclo a secco o da anteprima delle modifiche che Terraform apporterà alla tua infrastruttura. Confronta lo stato corrente dell'infrastruttura con lo stato desiderato definito nei file di configurazione Terraform e mostra le azioni specifiche che Terraform intraprenderà per colmare il divario. Ciò include aggiunte, eliminazioni e modifiche delle risorse, come la creazione di nuove macchine virtuali, il dimensionamento dei database esistenti o la rimozione dei volumi di storage inutilizzati.

Vantaggi del piano Terraform

La possibilità di visualizzare in anteprima le modifiche apportate al codice di configurazione all'infrastruttura è vantaggiosa in molti modi, tra cui:

  • Trasparenza: Il piano Terraform fornisce una panoramica dettagliata dei cambiamenti futuri, offrendo un quadro chiaro di ciò che verrà creato, modificato o eliminato nell'infrastruttura. Questa trasparenza aiuta a ridurre al minimo gli errori e garantisce che tutti i soggetti coinvolti nel processo di deployment siano sulla stessa lunghezza d'onda.
  • Riduzione dei rischi: Visualizzando in anteprima le modifiche in anticipo, gli utenti possono identificare e risolvere potenziali problemi prima di interrompere i servizi. Il piano Terraform può aiutare a scoprire i conflitti di risorse (ad esempio, la creazione di una macchina virtuale con un nome duplicato), le dipendenze mancanti (ad esempio, un database che richiede un gruppo di sicurezza specifico non configurato) o le modifiche involontarie dovute a errori di battitura nei file di configurazione.
  • Collaborazione: Il piano Terraform si integra perfettamente con i sistemi di controllo delle versioni come Git, facilitando la collaborazione del team. La condivisione dell'output del piano con i membri del team consente di esaminare i cambiamenti nel contesto degli impegni di codice, promuovendo trasparenza e responsabilità prima che i cambiamenti vengano implementati.
  • Efficienza: Il piano Terraform aiuta gli utenti a pianificare ed eseguire i cambiamenti dell'infrastruttura in modo metodico. L'analisi del piano consente di identificare potenziali colli di bottiglia o inefficienze prima di applicare le modifiche.
  • Sicurezza: Il piano Terraform funge da rete di sicurezza consentendo di rivedere e convalidare le modifiche prima che vengano applicate all'infrastruttura di produzione. Questa protezione aiuta a prevenire le modifiche accidentali e garantisce la stabilità e l'affidabilità dell'ambiente cloud.

Come eseguire il piano Terraform

Per eseguire il piano terraform, assicurati innanzitutto di aver installato Terraform sulla tua macchina locale. È possibile scaricare e installare la versione appropriata dal sito Web ufficiale di HashiCorp .

Prima di eseguire il comando di pianificazione, è necessario creare un file di configurazione Terraform di base denominato main.tf nella directory di lavoro. Di seguito è riportato un esempio di configurazione semplice che crea una risorsa di macchina virtuale in un provider cloud:

# Configure the cloud provider (replace with your provider details)
 provider "aws" {
   region = "us-east-1"
 }
 
 # Define a virtual machine resource
 resource "aws_instance" "my_vm" {
   ami           = "ami-0f78f7e824d9499e0"  # Replace with the desired AMI ID
   instance_type = "t2.micro"
 }

1. Inizializzazione della directory Terraform

Accedi alla directory di lavoro contenente il file main.tf ed esegui il seguente comando nel terminale:

$ terraform init

Questo comando inizializza la directory Terraform, scarica i plug-in o i moduli necessari menzionati nella configurazione e prepara l'ambiente per lavorare con Terraform.

2. Esegui il piano Terraform

Una volta completata l'inizializzazione, esegui il comando seguente per generare il piano di esecuzione:

$ terraform plan

Questo comando analizza la configurazione Terraform e la confronta con lo stato corrente dell'infrastruttura (se presente). Visualizza quindi un piano dettagliato che descrive le azioni che Terraform intraprenderà per raggiungere lo stato desiderato definito nella configurazione. Il piano mostra in genere le risorse che verranno create, modificate o eliminate

3. Salva l'output del piano

Se si desidera salvare il piano per riferimento futuro o condividerlo con i membri del team, è possibile utilizzare il flag -out con il comando del piano. Ad esempio, il comando seguente salva il piano in un file denominato plan.tfplan:

$ terraform plan -out=plan.tfplan

Il comando del piano terraform visualizza solo l'anteprima delle modifiche. Non apporta modifiche all'infrastruttura. Dopo aver rivisto e approvato il piano, puoi utilizzare il comando di applicazione terraform $ per eseguire le modifiche pianificate.

Comprensione e analisi dei risultati del piano Terraform

L'output del piano terraform è generalmente suddiviso in diverse sezioni, ciascuna delle quali offre preziose informazioni approfondite sulle azioni pianificate:

Azioni sulle risorse

In questa sezione sono elencate le azioni specifiche che Terraform intende eseguire sulle risorse dell'infrastruttura. Queste azioni sono suddivise in tre tipi principali:

  • Crea (+): Questo simbolo indica che Terraform creerà nuove risorse in base alla configurazione.
  • Leggi (~): Questo simbolo indica che Terraform leggerà lo stato delle risorse esistenti per determinare se sono necessarie modifiche. Questo simbolo è meno frequente nell'output del piano poiché Terraform determina in genere le azioni richieste durante la fase di pianificazione.
  • Elimina (-): Questo simbolo indica che Terraform eliminerà le risorse esistenti che non sono più definite nella configurazione.

Dettagli risorsa

Questa sezione fornisce informazioni approfondite su ciascuna risorsa interessata dal piano. Ecco una descrizione dettagliata dei dettagli che in genere si possono trovare:

  • Tipo di risorsa: Specifica il tipo di risorsa dell'infrastruttura gestita da Terraform (ad esempio, aws_instance, azurerm_resource_group).
  • Nome risorsa: identifica il nome univoco assegnato alla risorsa nella configurazione Terraform.

Cambiamenti pianificati

In questa sezione vengono descritte le modifiche specifiche che verranno applicate alla risorsa. Per le risorse create (contrassegnate da +), verranno elencati gli attributi e i valori corrispondenti che verranno definiti. Per le risorse modificate, verranno visualizzate le modifiche agli attributi esistenti.

Sintesi

L'output del piano spesso si conclude con una sezione di riepilogo che fornisce una panoramica generale delle azioni pianificate. In genere, questo riepilogo suddivide il numero totale di risorse nelle seguenti categorie:

  • Da aggiungere: Il numero di nuove risorse che verranno create

  • Da modificare: Il numero di risorse esistenti che verranno modificate

  • Da distruggere: Il numero di risorse esistenti che verranno eliminate

Quando esegui il piano terraform con la configurazione di esempio che abbiamo creato in precedenza, avrai risultati simili a quelli seguenti:

# $ terraform plan
 
 Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
   + create
 
 Terraform will perform the following actions:
 
   # aws_instance.my_vm will be created
   resource "aws_instance" "my_vm" {
     + ami           = "ami-0f78f7e824d9499e0"
     + instance_type = "t2.micro"
     + tags = {
       + Name = "sample-tag"
     }
   }

1. Azioni delle risorse: La prima riga indica che Terraform eseguirà le azioni di creazione (+) durante questo piano.

2. Dettagli delle risorse: Nella sezione successiva vengono descritti i dettagli di una singola risorsa, aws_instance.my_vm . Ciò significa che Terraform creerà una nuova istanza AWS EC2 denominata my_vm nel tuo ambiente AWS. I dettagli specificano inoltre l'ID AMI (ami-0f78f7e824d9499e0), il tipo di istanza (t2.micro ) e un tag (Nome = " Sample-tag") che Terraform applicherà alla nuova istanza.

3. Sintesi (implicata): Sebbene non sia esplicitamente mostrato in questo esempio, alla fine di un output del piano più complesso potrebbe essere visualizzato un riepilogo, che indica il numero totale di risorse da creare.

Best practice per utilizzare Terraform Plan

Il comando del piano terraform è la rete di sicurezza prima di applicare le modifiche all'infrastruttura. Di seguito sono riportate alcune pratiche essenziali per massimizzarne i vantaggi:

Esamina le modifiche alle risorse:

  • Concentrati sulle risorse contrassegnate per la creazione (+) o l'eliminazione (-).
  • Verificare che i valori degli attributi per le nuove risorse siano in linea con le proprie intenzioni (ad esempio, ID AMI, dimensione dello storage).
  • Ricontrolla le modifiche alle risorse esistenti per verificarne l'accuratezza.

Individua i potenziali problemi:

  • Cerca conflitti di risorse (ad esempio nomi duplicati, dipendenze mancanti).
  • Assicurarsi che siano definite tutte le dipendenze richieste (ad es. gruppi di sicurezza).
  • Fai attenzione alle eliminazioni impreviste delle risorse che potrebbero interrompere i servizi.

Sfruttare l'output:

  • Verifica se le modifiche pianificate corrispondono agli obiettivi dell'infrastruttura.
  • Considerare le potenziali implicazioni sui costi associate alle modifiche delle risorse. Puoi anche condividere l'output del piano per la revisione e la comunicazione del team.

Conclusione

Il piano Terraform è uno strumento potente nel workflow Terraform. Offre un metodo sicuro e trasparente per visualizzare in anteprima e convalidare le modifiche all'infrastruttura prima di applicarle. Comprendendo e utilizzando efficacemente il piano Terraform, puoi assicurarti che i deployment siano efficienti, prevedibili e privi di conseguenze indesiderate.

Pure Storage offre le migliori soluzioni di block storage persistente per i deployment Terraform. Portworx® fornisce una data platform completa per tutti i workload di container e Kubernetes Terraform. Con Pure Cloud Block Store™, puoi eseguire qualsiasi workload di database o container nel cloud, proprio come puoi nell'infrastruttura on-premise.

03/2025
Rancher Kubernetes Engine 2 on VMware with Portworx
Gain consistent experience across public cloud, on- premises, hybrid cloud, or edge architecture with Rancher Kubernetes Engine (RKE2) on VMware with Portworx.
Reference architecture
33 pages
CONTATTACI
Contatta PureIcona Informazioni
Icona Chat
Domande?

Hai domande o commenti sui prodotti o sulle certificazioni di Pure?  Siamo qui per aiutarti.

Icona Chiave
Prenota una demo

Prenota una demo per vedere come puoi trasformare i tuoi dati in risultati concreti con Pure. 

Telefono: +39 02 9475 9422

Media: pr@purestorage.com

 

Pure Storage Italia

Spaces c/o Bastioni di Porta Nuova, 21

Milano, 20121

+39 02 9475 9422

italia@purestorage.com

CHIUDI
ChiudiIcona X Chiudi
Il browser che stai usando non è più supportato.

I browser non aggiornati spesso comportano rischi per la sicurezza. Per offrirti la migliore esperienza possibile sul nostro sito, ti invitiamo ad aggiornare il browser alla versione più recente.