Terraform cheatsheet - comandi utili ed esempi
L'elenco di tutti i comandi Terraform
Ecco un riepilogo completo di Terraform con comandi essenziali, elementi di configurazione, gestione delle risorse, moduli, variabili, gestione dello stato e migliori pratiche.
Terraform è uno strumento open-source per l’infrastruttura come codice (IaC) sviluppato da HashiCorp, che consente agli utenti di definire e provisionare infrastrutture su più provider cloud (ad esempio, AWS, Azure, GCP) utilizzando file di configurazione dichiarativi. Il suo scopo principale è automatizzare il provisioning dell’infrastruttura, garantire la coerenza e ridurre gli errori manuali. Terraform supporta flussi di lavoro multi-cloud, modulari e basati sullo stato, rendendolo un pilastro delle moderne pratiche DevOps.
Per ulteriori strumenti e flussi di lavoro per sviluppatori, consulta Strumenti per Sviluppatori: La Guida Completa ai Flussi di Lavoro Moderni.

Vantaggi Chiave di Terraform:
- Sintassi Dichiarativa: Definisce lo stato desiderato dell’infrastruttura nel codice.
- Agnosticismo del Provider: Funziona con AWS, Azure, GCP, Kubernetes e altro.
- Gestione dello Stato: Traccia le modifiche all’infrastruttura per evitare conflitti.
Guida all’Installazione e alla Configurazione
https://developer.hashicorp.com/terraform/tutorials#get-started
Il processo di installazione di Terraform è piuttosto semplice.
-
Linux (Ubuntu/Debian):
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install terraform -
Windows (WSL):
wget -O terraform.zip https://releases.hashicorp.com/terraform/1.5.5/terraform_1.5.5_windows_amd64.zip unzip terraform.zip -
macOS (Homebrew):
brew install terraform
Per migliorare la produttività terminale durante il lavoro con Terraform, consulta Scorciatoie da Tastiera per Ubuntu: Riepilogo Completo.
Verifica
terraform --version
Comandi CLI di Terraform
Ecco l’elenco di tutti i comandi di Terraform:
| Comando | Descrizione |
|---|---|
terraform init |
Inizializza una directory di configurazione Terraform nuova o esistente |
terraform validate |
Controlla se la configurazione è valida |
terraform plan |
Mostra il piano di esecuzione senza apportare modifiche |
terraform apply |
Applica le modifiche necessarie per raggiungere lo stato desiderato |
terraform destroy |
Distrugge l’infrastruttura gestita da Terraform |
terraform fmt |
Reformatta i file di configurazione nello stile standard |
terraform show |
Mostra lo stato corrente o il piano |
terraform refresh |
Aggiorna lo stato con l’infrastruttura reale |
terraform providers |
Visualizza i provider utilizzati nella configurazione |
terraform graph |
Visualizza le dipendenze delle risorse come un grafico |
terraform workspace list |
Elenca tutti gli spazi di lavoro disponibili |
terraform workspace new |
Crea un nuovo spazio di lavoro |
terraform workspace select |
Passa a uno spazio di lavoro specificato |
terraform workspace show |
Mostra il nome dello spazio di lavoro corrente |
terraform workspace delete |
Elimina uno spazio di lavoro specificato |
terraform output |
Mostra i valori di output dal file di stato |
terraform import |
Importa risorse esistenti in Terraform |
terraform taint |
Segna una risorsa per la ricreazione al prossimo apply |
terraform untaint |
Rimuove la marcatura “tainted” da una risorsa |
terraform state list |
Elenca le risorse nel file di stato |
terraform state show |
Mostra gli attributi di una singola risorsa nello stato |
Elementi Essenziali della Configurazione
Estensioni dei File
.tf: File di configurazione principali (sintassi HCL).tfvars: Valori delle variabili
Tipi di Blocchi Terraform
- Esempio di Provider
provider "aws" { region = "us-east-1" } - Esempio di Risorsa
resource "aws_instance" "web" { ami = "ami-0abcdef" instance_type = "t2.micro" } - Esempio di Variabile
variable "instance_count" { type = number default = 2 } - Esempio di Output
output "instance_ip" { value = aws_instance.web.public_ip } - Esempio di Modulo
module "vpc" { source = "./modules/vpc" cidr_block = var.vpc_cidr }
Lavoro con le Variabili
- Dichiarazione delle variabili
variable "region" { description = "Regione AWS" default = "us-east-1" } - Assegnazione dei valori
- CLI:
terraform apply -var="region=us-west-2" - File tfvars:
terraform apply -var-file="prod.tfvars"
- CLI:
- Tipi:
string,number,bool,list,map,object
Gestione dello Stato
- File di stato:
terraform.tfstate - Stato remoto (Esempio S3)
backend "s3" { bucket = "my-tf-state" key = "state.tfstate" region = "us-east-1" } - Visualizza stato:
terraform show
terraform state list
Cicli e Condizionali
- Count
resource "aws_instance" "web" { count = 3 ... } - For_each
resource "aws_s3_bucket" "b" { for_each = var.bucket_names bucket = each.value } - Condizionali
instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
Funzioni
- Interpolazione di stringhe:
resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" } - Esempi di List e Map:
locals { my_map = { a = 1, b = 2 } }
Provisioner
Utilizzati per il bootstrapping delle risorse. Esempio:
resource "aws_instance" "web" {
...
provisioner "local-exec" {
command = "echo Risorsa creata"
}
}
Migliori Pratiche
- Versionare tutti i file
.tf - Bloccare le versioni dei provider per garantire deployment consistenti
- Backend remoto per la gestione dello stato (S3, Azure Blob, ecc.)
- Crittografare i file di stato nei backend remoti
- Modularizzare l’infrastruttura utilizzando moduli riutilizzabili
- Documentare le proprie configurazioni
- Testare in staging prima della produzione
Riferimenti Aggiuntivi
- Aiuto:
terraform --helpo[comando] --helpper l’aiuto specifico del comando - Debugging: Imposta
TF_LOG=INFOoTF_LOG=DEBUGper log verbosi - Formattazione:
terraform fmt - Codifica: Per le operazioni di codifica/decodifica Base64, consulta Codifica - Decodifica Base64 su Windows, Linux e Mac
Questo riepilogo fornisce un riferimento rapido ai lati più comuni e avanzati dell’utilizzo di Terraform - dai comandi alle migliori pratiche - rendendolo pratico sia per i principianti che per gli utenti avanzati. Buon lavoro!
Link Utili
- https://developer.hashicorp.com/terraform
- Riepilogo di Docker
- Riepilogo di Docker Compose - Comandi più utili con esempi
- Riepilogo di Kubernetes
- Distribuzione di un progetto Flutter con backend su AWS Amplify
- Distribuzione di un sito web generato da Hugo su AWS S3
- Prestazioni AWS Lambda: JavaScript vs Python vs Golang
- Lambda a Strati con AWS SAM e Python
- AWS SAM + AWS SQS + Python PowerTools
- Minio come alternativa ad Aws S3. Panoramica e installazione di Minio