Corso
L’Infrastructure as Code (IaC) è un processo che automatizza il provisioning e la gestione dell’infrastruttura tramite codice. Sebbene sia possibile effettuare il provisioning con configurazioni hardware fisiche e strumenti interattivi, l’IaC offre diversi vantaggi, come controllo di versione, ripetibilità e scalabilità. Tra i principali strumenti IaC c’è Terraform, una soluzione sviluppata da HashiCorp nel 2014 e utilizzata da oltre 500.000 organizzazioni in tutto il mondo. Vediamo come funziona Terraform e come usarlo per le moderne operazioni IT.
Prima di iniziare con Terraform, sappi che è richiesta una familiarità con almeno un grande cloud provider (AWS, Azure, Google Cloud, ecc.), perché Terraform serve a gestire l’infrastruttura cloud. Il nostro corso Understanding Cloud Computing offre basi solide se sei alle prime armi con il cloud computing.
Cos’è Terraform?
Terraform è uno strumento open-source che ti permette di definire i componenti dell’infrastruttura e le loro relazioni usando un linguaggio di configurazione di alto livello.
Nei file di configurazione leggibili da esseri umani di Terraform, puoi specificare lo stato desiderato della tua infrastruttura e Terraform calcola automaticamente come raggiungerlo. Questi file possono essere versionati, condivisi e riutilizzati per offrire un modo coerente di gestire la tua infrastruttura, dalle risorse di calcolo e storage a DNS e funzionalità SaaS.
Terraform può essere utilizzato con vari cloud provider, in infrastrutture multi-cloud e in ambienti on-premises.
Caratteristiche chiave di Terraform
Osserviamo più da vicino gli aspetti fondamentali che distinguono Terraform:
HashiCorp Configuration Language
Terraform usa un linguaggio di alto livello chiamato HashiCorp Configuration Language (HCL), progettato specificamente per definire l’infrastruttura come codice. I linguaggi di configurazione di alto livello implementano una sintassi dichiarativa, più astratta e semplice rispetto agli script di basso livello e alla configurazione manuale. Potresti aver già incontrato linguaggi di alto livello in file YAML o JSON.
HCL segue una struttura a blocchi, in cui ogni blocco annidato rappresenta risorse e relative configurazioni. Le risorse sono definite esplicitamente con nomi e attributi.
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Execution plan
Dopo aver definito lo stato desiderato della tua infrastruttura, Terraform genera un execution plan. Questo piano elenca i passaggi che Terraform deve eseguire per raggiungere quello stato, così puoi rivedere le modifiche prima di applicarle. Controllare il piano prima di applicarlo evita modifiche indesiderate, come l’eliminazione di risorse.
Gestione dello stato
Terraform mantiene un file di stato che traccia automaticamente lo stato attuale della tua infrastruttura e funge da fonte di verità per determinare le modifiche da apportare. Per impostazione predefinita, è archiviato localmente e si chiama terraform.tfstate.
Provider
I provider sono plugin che interagiscono con le API di piattaforme cloud e altri servizi e consentono a Terraform di gestire un’ampia varietà di risorse. I provider ufficiali sono sviluppati e mantenuti da HashiCorp e partner di fiducia come AWS, Azure, Google Cloud, GitHub, Datadog, ecc. Esistono anche plugin sviluppati dalla community, reperibili sul Terraform Registry o su GitHub.
Grafo delle risorse
Terraform costruisce un grafo delle risorse che mostra le risorse della tua infrastruttura e le relazioni tra di esse. Questo grafo permette a Terraform di generare piani in modo efficace, gestire le dipendenze tra le risorse e assicurare che le risorse vengano create, aggiornate ed eliminate nell’ordine corretto. È anche un ottimo modo per visualizzare la tua infrastruttura e comprendere l’impatto delle modifiche che intendi apportare.

Esempio di grafo delle risorse. Fonte: documentazione HashiCorp
Primi passi con Terraform
Facciamo insieme il nostro primo workflow Terraform. Se sei alle prime armi con DevOps o con il cloud in generale, ti consiglio di seguire i nostri corsi Understanding Cloud Computing e Introduction to DevOps prima di andare oltre.
Installazione e configurazione
In questo tutorial su Terraform, creeremo risorse su AWS. Se vuoi seguire passo passo e non hai un account, vai su AWS e registrati.
- Scarica Terraform dal sito ufficiale. Scegli il binario giusto per il tuo sistema operativo e segui le istruzioni di installazione.
- Una volta installato Terraform, apri una nuova finestra del Terminale ed esegui terraform -version per verificare che il software sia stato installato correttamente.
- Installa l’AWS CLI
- Configura l’AWS CLI eseguendo aws configure nel terminale. Ti verrà richiesto di inserire Access Key ID, Secret Access Key, regione predefinita e formato di output predefinito. Terraform dovrebbe riuscire ad accedervi automaticamente.
Prima configurazione Terraform
Crea una nuova directory e il tuo primo file di configurazione. Chiamiamolo main.tf e diciamo a Terraform che vogliamo creare un’istanza AWS EC2. Il codice, scritto in HCL, è il seguente:
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
Inizializzare il progetto
Ora inizializziamo il nostro progetto Terraform eseguendo il seguente comando:
$ terraform init
Questo comando si esegue una sola volta e scarica i plugin dei provider necessari. Non sarà necessario rieseguirlo per le modifiche successive.
Plan
Ora vogliamo generare il nostro execution plan. Ricorda: il piano evidenzierà le modifiche che Terraform dovrà apportare per raggiungere lo stato desiderato (in questo caso, un’istanza EC2 in esecuzione). Esegui:
$ terraform plan
Dovresti vedere qualcosa di simile:
Terraform will perform the following actions:
# aws_instance.example will be created
+ resource "aws_instance" "example" {
+ ami = "ami-0c55b159cbfafe1f0"
+ instance_type = "t2.micro"
...
}
Plan: 1 to add, 0 to change, 0 to destroy.
Apply
Abbiamo rivisto il piano e ora decidiamo di eseguirlo e effettuare il provisioning delle risorse. Nel terminale, esegui:
$ terraform apply
Ti verrà chiesto di confermare l’azione. Digita “yes” per procedere.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Dovresti vedere quanto segue:
aws_instance.example: Creating...
aws_instance.example: Still creating... [10s elapsed] aws_instance.example:
Creation complete after 15s [id=i-0abcdef1234567890]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Complimenti, hai effettuato il provisioning della tua prima istanza EC2 su AWS usando Terraform!
Vantaggi dell’uso di Terraform
Abbiamo già detto che usare Terraform offre molti vantaggi, come coerenza e ripetibilità, e un tasso ridotto di errori umani grazie agli execution plan.
Altri vantaggi includono:
- Provisioning rapido: Terraform può creare e aggiornare le risorse in parallelo, utile soprattutto per avviare rapidamente ambienti di sviluppo, test e staging.
- Maggiore collaborazione: Abbinato a un sistema di controllo versione come Git, Terraform è un ottimo modo per aumentare collaborazione e trasparenza sulla tua infrastruttura. Le modifiche possono essere revisionate, approvate e tracciate proprio come il codice applicativo.
- Disaster recovery efficiente: Se qualcosa va storto, Terraform può ricreare rapidamente l’intera infrastruttura da zero usando gli stessi file di configurazione.
- Supporto della community: Terraform incoraggia l’uso dei moduli, configurazioni riutilizzabili che possono essere condivise e promuovono le best practice nella gestione dell’infrastruttura. Terraform vanta anche una community attiva e un ampio ecosistema di provider e moduli, quindi è probabile che tu trovi qualcosa per il tuo stack tecnologico, per quanto di nicchia.
Casi d’uso comuni per Terraform
Che tu sia un Data Engineer che costruisce pipeline o un Data Scientist che vuole portare le proprie soluzioni in produzione, Terraform è un ottimo strumento per gestire le esigenze infrastrutturali. Ecco alcuni tra i casi d’uso più comuni:
Gestione multi-cloud
Gestire un’infrastruttura che si estende su più cloud provider non è sempre semplice. Terraform ti permette di farlo con un unico strumento. Inoltre, Terraform può gestire risorse on-premise, rendendolo una soluzione ideale per le organizzazioni che operano in ambienti ibridi.
Workflow CI/CD
Terraform si integra bene con i workflow CI/CD, il che significa che puoi distribuire l’infrastruttura come parte del tuo processo di rilascio software. Puoi anche creare ed eliminare automaticamente ambienti di anteprima, sviluppo, test o staging secondo necessità.
Cluster Kubernetes
Terraform può gestire cluster Kubernetes su diversi cloud provider come AWS (EKS), Azure (AKS) o GCP (GKE). Questo include la configurazione dell’infrastruttura necessaria, la gestione delle risorse Kubernetes all’interno del cluster e lo scaling dei cluster in base al carico di lavoro.
Terraform vs. altri strumenti IaC
Altri strumenti IaC popolari includono Ansible, Chef, Puppet e AWS CloudFormation. Ogni strumento ha punti di forza e limiti. Dai un’occhiata:
| Caratteristica | Terraform | Ansible | Chef | Puppet | CloudFormation |
|---|---|---|---|---|---|
| Open source | Sì | Sì | Sì | Sì | No |
| Sintassi dichiarativa | Sì | No | No | Sì | Sì |
| Supporto multi-cloud | Sì | Sì | Sì | Sì | No, solo AWS |
| Gestione dello stato | Sì | No | No | Sì | Sì |
| Execution plan | Sì | No | No | No | No |
| Gestione delle dipendenze | Sì | Limitata | Limitata | Sì | Sì |
Come si vede, pur essendo tutti strumenti potenti, Terraform spicca per la completezza delle funzionalità. Tuttavia, questa lista non è esaustiva e ogni strumento copre casi d’uso leggermente diversi a seconda dei requisiti. Per esempio, Ansible, con la sua natura procedurale, è ben adatto alla configuration management e ad attività ad hoc.
Conclusione
Negli ultimi 10 anni, Terraform ha aiutato migliaia di organizzazioni a gestire la propria infrastruttura IT. Con il suo approccio dichiarativo, le capacità di automazione e il supporto per ambienti multi-cloud, Terraform è diventato uno degli strumenti IaC più popolari e rimarrà senza dubbio un protagonista nella gestione dell’infrastruttura man mano che l’adozione del cloud continua a crescere.
Ora che conosci le basi di Terraform, puoi approfondire configurazioni avanzate e scenari reali. Dai un’occhiata ai tutorial di HashiCorp Terraform per imparare a usare Terraform per attività e casi d’uso comuni, oppure leggi il nostro articolo 14 strumenti essenziali per il Data Engineering da usare nel 2024 per capire come Terraform si inserisce nel toolkit di un Data Engineer.

Sono una tech lead orientata al prodotto, specializzata nel far crescere startup nelle fasi iniziali, dal primo prototipo al product-market fit e oltre. Sono instancabilmente curiosa di come le persone usano la tecnologia e adoro lavorare a stretto contatto con founder e team cross‑funzionali per dare vita a idee ambiziose. Quando non costruisco prodotti, inseguo l’ispirazione in angoli nuovi del mondo o scarico le tensioni in una sala yoga.
Frequently Asked Questions
Terraform è adatto a progetti di piccole dimensioni o è pensato principalmente per l’uso enterprise?
Terraform è uno strumento utile, a prescindere dalle dimensioni del progetto! Che tu abbia 5 risorse da gestire o 1000, noterai sicuramente i benefici.
Quanto costa Terraform?
Terraform è open-source e gratuito da usare, ma ricorda che il tuo cloud provider ti addebiterà i costi per le risorse fornite e gestite tramite Terraform.
Terraform può gestire database e altri servizi stateful?
Sì, Terraform può gestire database e altri servizi stateful. Puoi definire istanze, cluster e configurazioni nei tuoi file IaC.
Come gestisce Terraform segreti e informazioni sensibili nei file di configurazione?
Terraform promuove le best practice per la gestione dei segreti supportando variabili d’ambiente, variabili crittografate e integrazioni con servizi di secret management come HashiCorp Vault o AWS Secrets Manager.

