In breve
Terraform crea e gestisce l'infrastruttura cloud scrivendo codice invece di cliccare nelle console. Descrivi come deve essere, e lui la crea, la modifica o la elimina, sempre nello stesso modo.
Terraform è uno strumento gratuito che permette di creare e gestire infrastruttura cloud scrivendo codice, invece di cliccare nelle console di AWS, Azure o Google Cloud. Descrivi in un file come deve essere la tua infrastruttura, e Terraform la crea, la modifica o la elimina per te, sempre nello stesso modo.
È uno degli strumenti più richiesti negli annunci per cloud engineer e DevOps engineer. Questa è una guida a Terraform per principianti: lo trovi spiegato da zero, con cos'è, come funziona, i comandi principali, un esempio pratico su AWS e gli errori da evitare quando inizi.
Terraform: cos'è in breve
Terraform è sviluppato da HashiCorp ed è lo strumento più diffuso per l'Infrastructure as Code (IaC), cioè l'infrastruttura come codice. L'idea è semplice: server, reti, database e permessi non si creano più a mano, ma si descrivono in file di testo che possono essere salvati, controllati e riutilizzati.
Tre caratteristiche lo rendono così popolare:
È dichiarativo
Descrivi il risultato che vuoi ottenere, non i passaggi per arrivarci. Terraform calcola da solo cosa fare.
Funziona ovunque
AWS, Azure, Google Cloud e centinaia di altri servizi, tramite plugin chiamati provider.
Linguaggio leggibile
Si chiama HCL (HashiCorp Configuration Language), pensato per essere chiaro anche per chi non è uno sviluppatore.
Perché usare Terraform: il problema che risolve
Immagina di dover creare su AWS una rete, tre server, un database e le regole di sicurezza. Dalla console ci vuole un'ora di clic. Ora immagina di doverlo rifare identico per l'ambiente di test, poi per quello di produzione, poi in un'altra regione. Ogni volta rischi di dimenticare un'impostazione.
A mano, dalla console
Un'ora di clic ogni volta, e il rischio di dimenticare qualcosa a ogni ripetizione.
Con Terraform
Scrivi la configurazione una volta sola e la applichi quante volte vuoi.
I vantaggi:
- ripetibilità: stesso codice, stessa infrastruttura, sempre;
- versionamento: i file stanno su Git, quindi sai chi ha cambiato cosa e quando, e puoi tornare indietro;
- revisione: prima di applicare una modifica, il team può controllarla come si fa con il codice;
- documentazione automatica: il codice descrive esattamente com'è fatta l'infrastruttura;
- velocità: ambienti interi si creano e si distruggono in pochi minuti.
Come funziona Terraform: i concetti chiave
| Concetto | Cos'è |
|---|---|
| Provider | Il plugin che permette a Terraform di parlare con una piattaforma, per esempio AWS |
| Resource | Un elemento dell'infrastruttura da creare: un server, un bucket, una rete |
| Variable | Un valore configurabile, per riutilizzare lo stesso codice in contesti diversi |
| Output | Un valore restituito alla fine, per esempio l'indirizzo di un server |
| State | Il file in cui Terraform tiene traccia di cosa ha creato |
| Module | Un blocco di codice riutilizzabile, per esempio "una rete standard" |
Il flusso di lavoro: init, plan, apply, destroy
Terraform si usa quasi sempre con quattro comandi:
Passo 1
terraform init
Prepara la cartella di lavoro e scarica i provider necessari. Si esegue la prima volta e ogni volta che aggiungi un provider.
Passo 2
terraform plan
Mostra cosa farebbe Terraform, senza toccare niente. È il comando più importante: leggilo sempre con attenzione.
Passo 3
terraform apply
Esegue le modifiche, dopo averti chiesto conferma.
Passo 4
terraform destroy
Elimina tutto ciò che è stato creato con quella configurazione. Utilissimo per non lasciare risorse accese dopo un esercizio.
Due comandi di supporto da usare sempre: terraform fmt, che formatta il codice in modo ordinato, e terraform validate, che controlla che la sintassi sia corretta.
Un esempio pratico: creare un bucket S3 su AWS
Ecco un esempio minimo che crea un bucket Amazon S3 nella regione di Milano. Crea una cartella con un file chiamato main.tf:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 6.0"
}
}
}
provider "aws" {
region = "eu-south-1" # Milano
}
resource "aws_s3_bucket" "esempio" {
bucket = "il-mio-primo-bucket-terraform-12345" # deve essere unico al mondo
tags = {
Progetto = "guida-terraform"
Ambiente = "test"
}
}
output "nome_bucket" {
value = aws_s3_bucket.esempio.bucket
}Poi, dal terminale, con le credenziali AWS configurate:
terraform init
terraform plan
terraform applyTerraform ti mostra che creerà una risorsa, ti chiede conferma e crea il bucket. Quando hai finito, con terraform destroy lo elimini. Se non sai ancora cos'è S3, trovi tutto nella guida su Amazon S3.
Lo state file: cosa devi sapere
Lo state è il file (di solito terraform.tfstate) in cui Terraform memorizza cosa ha creato. Tre regole fondamentali:
Non modificarlo a mano
Se si corrompe, Terraform perde traccia dell'infrastruttura.
Non caricarlo su Git
Può contenere dati sensibili, come password o chiavi.
Nei team, tienilo in un backend remoto
Su AWS si usa di solito un bucket S3, con un meccanismo di blocco che impedisce a due persone di modificarlo contemporaneamente. Il modo esatto di configurare il blocco dipende dalla versione di Terraform che usi.
Terraform, CloudFormation e OpenTofu
| Terraform | AWS CloudFormation | OpenTofu | |
|---|---|---|---|
| Chi lo sviluppa | HashiCorp | AWS | Comunità, sotto la Linux Foundation |
| Piattaforme | Multi-cloud | Solo AWS | Multi-cloud |
| Linguaggio | HCL | YAML o JSON | HCL, compatibile con Terraform |
| Quando sceglierlo | Standard più diffuso nelle aziende | Aziende che usano solo AWS | Chi preferisce un'alternativa guidata dalla comunità |
OpenTofu è nato come alternativa a Terraform dopo il cambio di licenza deciso da HashiCorp nel 2023. I concetti e gran parte del codice sono gli stessi: se impari Terraform, sai usare anche OpenTofu.
Ti piacerebbe lavorare con Terraform e il cloud?
Fai il quiz gratuito di 2 minuti: 9 domande per capire se hai la predisposizione giusta per un lavoro nel cloud.
Fai il quiz gratuitoBest practice per chi inizia
- Fissa le versioni di Terraform e dei provider, per evitare che un aggiornamento cambi il comportamento del tuo codice.
- Leggi sempre il plan prima di fare apply, soprattutto le righe che indicano risorse da eliminare o sostituire.
- Usa le variabili invece di scrivere valori fissi nel codice.
- Organizza il codice in moduli appena ripeti la stessa struttura più volte.
- Non scrivere mai password o chiavi nel codice: usa servizi dedicati come AWS Secrets Manager o variabili d'ambiente.
- Aggiungi i tag a ogni risorsa: ti aiutano a capire cosa è stato creato e quanto costa.
- Imposta un budget su AWS prima di fare esperimenti, e usa destroy quando hai finito.
Gli errori più comuni con Terraform
Modificare a mano le risorse create da Terraform
Se cambi un'impostazione dalla console, il codice e la realtà non coincidono più. Al prossimo apply, Terraform proverà a riportare tutto com'era scritto nel codice, con risultati a volte inattesi. Le modifiche si fanno sempre nel codice.
Fare apply senza leggere il plan
Una piccola modifica, come il cambio di nome di una risorsa, può portare Terraform a eliminarla e ricrearla. Su un database significa perdere i dati. Il plan te lo dice chiaramente: basta leggerlo.
Mettere tutto in un unico file enorme
Funziona per un esercizio, non per un progetto vero. Dividi il codice in file per argomento (rete, calcolo, database) e usa i moduli per le parti ripetute.
Perdere lo state
Se lo state resta solo sul tuo computer e il computer si rompe, Terraform non sa più cosa ha creato. Per qualsiasi progetto che conta, usa un backend remoto fin dall'inizio.
Dimenticare risorse accese
Negli esercizi è facile lasciare in funzione risorse che costano. Chiudi sempre la sessione con terraform destroy e controlla la console dei costi.
Terraform e il lavoro nel cloud
Terraform è una competenza centrale per due ruoli molto richiesti: il cloud engineer e il DevOps engineer. Nei colloqui tecnici è comune che ti chiedano di spiegare come funziona lo state o come organizzeresti il codice di un progetto.
Per dimostrare questa competenza, un ottimo modo è creare un progetto su GitHub in cui costruisci un'infrastruttura completa con Terraform: rete, server e database. Esiste anche una certificazione dedicata, la HashiCorp Terraform Associate, utile dopo le prime certificazioni cloud.
Trovi il percorso completo nella guida su come diventare cloud engineer, e il confronto tra i due ruoli nella guida sul DevOps engineer.
Domande frequenti
Terraform è gratis?
Sì, lo strumento da riga di comando si può usare gratuitamente. HashiCorp offre anche servizi a pagamento per i team, ma per imparare e per molti progetti non servono.
Serve saper programmare per usare Terraform?
No. HCL è un linguaggio di configurazione, non di programmazione in senso stretto. Serve logica e attenzione, ma chi conosce le basi del cloud impara Terraform in poche settimane di pratica.
Terraform funziona solo con AWS?
No, funziona con moltissime piattaforme, tra cui Azure, Google Cloud, Kubernetes e servizi come GitHub. È uno dei motivi per cui è così diffuso.
Meglio Terraform o CloudFormation?
Se l'azienda usa solo AWS, entrambi vanno bene. Terraform è più diffuso negli annunci di lavoro e ti permette di lavorare anche con altre piattaforme, quindi per chi inizia è spesso la scelta più utile.
Quanto tempo serve per imparare Terraform?
Per le basi, poche settimane di pratica costante, se conosci già un po' di cloud. Per usarlo bene su progetti reali, con moduli, backend remoti e lavoro in team, servono alcuni mesi di esperienza.
Cos'è HCL?
È il linguaggio con cui si scrivono le configurazioni Terraform. È pensato per essere leggibile: blocchi, nomi e valori, senza la complessità di un linguaggio di programmazione.
In sintesi
- 1Terraform è lo strumento più diffuso per gestire l'infrastruttura come codice, su AWS e su molte altre piattaforme.
- 2Si basa su provider, risorse, variabili, output, moduli e sullo state, che tiene traccia di cosa è stato creato.
- 3Il flusso di lavoro è sempre lo stesso: init, plan, apply e, quando serve, destroy.
- 4È una competenza chiave per cloud engineer e DevOps engineer, e si dimostra bene con un progetto su GitHub.
Vuoi capire se lavorare con Terraform e il cloud fa per te?
Fai il quiz gratuito di 2 minuti prima di investire tempo o soldi.
Fai il quiz gratuitoContinua a esplorare
Vuoi capire se questo percorso fa per te?
Il quiz gratuito richiede due minuti e ti aiuta a capire se una carriera nel cloud è adatta al tuo punto di partenza.
Fai il quiz gratuito