Terraform su Ubuntu 20.04 LTS: installazione corretta, verifica e manutenzione
Su Ubuntu 20.04 LTS Terraform conviene installarlo dal repository ufficiale HashiCorp, non da pacchetti casuali o da una copia scaricata al volo. La differenza non è solo di comodità: con il repository corretto ottieni aggiornamenti gestibili, un flusso di verifica più pulito e meno sorprese quando devi riallineare versioni tra laptop, jump host e pipeline CI.
La procedura sotto è pensata per un sistema Linux recente con apt e privilegi amministrativi. Non assume Docker, non assume Snap, non assume un pannello grafico. Se il tuo obiettivo è usare Terraform per gestire infrastruttura cloud, questa è la base giusta: installazione minima, verifiche esplicite e un rollback semplice se devi rimuovere il pacchetto.
Prerequisiti reali prima di toccare il sistema
Prima di installare, controlla tre cose che in pratica fanno perdere più tempo dell’installazione stessa: connettività verso il repository, permessi sudo e architettura del sistema. Terraform viene distribuito per più architetture, ma su Ubuntu 20.04 in ambienti server la combinazione più comune resta amd64. Se sei su ARM o in una VM particolare, conviene verificarlo subito.
Per una lettura rapida dello stato del sistema usa questi comandi:
lsb_release -a
uname -m
sudo -v
Atteso: Ubuntu 20.04 LTS, architettura coerente con il pacchetto che installerai, sudo funzionante senza errori di policy. Se uname -m restituisce x86_64, il binario standard per amd64 è quello corretto. Se esce aarch64, devi usare il pacchetto per ARM64.
Aggiungere il repository HashiCorp in modo verificabile
Il punto importante non è “far funzionare apt”, ma evitare installazioni opache. Il repository ufficiale HashiCorp usa una chiave dedicata e una sorgente apt separata. Il flusso sotto usa il keyring moderno, così non appoggi la chiave in un sistema deprecato di trust globale.
Passo 1: aggiorna l’indice dei pacchetti e installa i prerequisiti minimi.
sudo apt update
sudo apt install -y gnupg software-properties-common curl
Passo 2: importa la chiave GPG di HashiCorp in un keyring dedicato.
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
Passo 3: aggiungi il repository per Ubuntu focal, cioè Ubuntu 20.04 LTS.
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com focal main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
Passo 4: ricarica l’indice e verifica che apt veda davvero il pacchetto Terraform dal repository corretto.
sudo apt update
apt-cache policy terraform
Atteso: nella sezione Candidate compare una versione proveniente da apt.releases.hashicorp.com. Se non compare, il problema non è Terraform ma la catena repository/chiave/rete. In quel caso controlla DNS, proxy aziendale e la presenza del file /etc/apt/sources.list.d/hashicorp.list.
Installazione del pacchetto Terraform
Quando il repository è a posto, l’installazione è banale. Il punto utile è fare anche una verifica della versione subito dopo, così eviti di scoprire giorni dopo di avere un binario vecchio o un PATH incoerente.
sudo apt install -y terraform
terraform version
Atteso: il comando terraform version restituisce la versione installata e l’architettura del binario. Se il terminale risponde con command not found, in genere hai uno di questi casi: installazione fallita, PATH alterato, oppure stai lavorando in una sessione non aggiornata. Verifica con dpkg -l terraform e con which terraform.
Un controllo utile è anche questo:
dpkg -l | grep terraform
which terraform
ls -l /usr/bin/terraform
Se il pacchetto risulta installato ma il binario non è raggiungibile, hai un problema di PATH locale o di shell non standard. Se invece /usr/bin/terraform esiste ma il comando non viene trovato, stai quasi certamente usando una shell con ambiente alterato o un wrapper che sovrascrive il PATH.
Verifica rapida con un progetto minimo
Dopo l’installazione non fermarti alla sola versione. Terraform va validato con un file minimo, perché l’obiettivo non è “vedere il banner”, ma accertarsi che il binario sia eseguibile e che il parser HCL funzioni correttamente sul tuo host.
Crea una directory di prova e un file main.tf minimale:
mkdir -p ~/terraform-test
cd ~/terraform-test
cat > main.tf <<'EOF'
terraform {
required_version = ">= 1.0.0"
}
output "hello" {
value = "terraform ok"
}
EOF
Ora inizializza e valida:
terraform init
terraform validate
terraform plan
Atteso: terraform init completa senza errori, terraform validate risponde con Success! The configuration is valid. e terraform plan mostra almeno l’output definito. Per un’installazione base, questo è il punto di controllo che vale davvero.
Versioni, aggiornamenti e compatibilità operativa
In ambiente reale il problema non è installare Terraform una volta, ma tenerlo allineato con provider, moduli e pipeline. Alcuni team bloccano la versione per progetto, altri usano una versione condivisa su workstation e runner. La scelta dipende dalla disciplina operativa, ma il principio resta uguale: non aggiornare alla cieca.
Per vedere la versione disponibile e quella installata usa:
apt-cache policy terraform
terraform version
Se devi aggiornare, il flusso corretto è quello standard di apt:
sudo apt update
sudo apt install --only-upgrade terraform
Prima di cambiare versione in produzione o su una workstation condivisa, annota la release corrente con terraform version e verifica che i moduli usati non richiedano una versione più vecchia o più nuova. In pratica, il rischio maggiore non è il binario in sé ma la compatibilità con il codice già presente nel repository.
Autocompletamento shell e uso quotidiano
Terraform include il supporto per l’autocompletamento, e su una macchina usata spesso conviene abilitarlo. Non è un dettaglio estetico: riduce errori di digitazione nei comandi più frequenti, soprattutto quando lavori con più subcommand e flag lunghi.
Per Bash puoi generare il completion file e caricarlo nella sessione corrente:
terraform -install-autocomplete
Dopo il comando, apri una nuova shell o fai un reload della sessione. Se usi Zsh, il percorso cambia e conviene verificare dove il tuo ambiente carica i file di completion. In contesti misti, meglio documentare il metodo nel profilo utente o nello standard di onboarding del team.
Un’abitudine utile è associare subito un repository Git al directory di lavoro Terraform, così distingui chiaramente configurazione, stato locale e moduli. Anche se il file di stato remoto verrà poi gestito con backend dedicati, la struttura della directory resta importante per evitare confusione operativa.
Disinstallazione pulita e rollback
Se devi rimuovere Terraform, fallo in modo pulito e controllato. La disinstallazione del pacchetto è semplice, ma il rollback completo include anche il repository aggiunto e, se vuoi, il keyring. Questo è utile quando stai testando una versione e vuoi tornare allo stato precedente senza lasciare sorgenti apt inutili.
Rimozione del pacchetto:
sudo apt remove -y terraform
Se vuoi eliminare anche i file di configurazione del repository HashiCorp:
sudo rm -f /etc/apt/sources.list.d/hashicorp.list
sudo rm -f /usr/share/keyrings/hashicorp-archive-keyring.gpg
sudo apt update
Atteso: apt-cache policy terraform non mostra più il repository HashiCorp e terraform non è più disponibile nel PATH. Se vuoi verificare il risultato in modo brutale ma efficace, usa command -v terraform: non deve restituire nulla.
Errori comuni che vale la pena riconoscere subito
Il primo errore tipico è usare un repository sbagliato per la release Ubuntu. Su 20.04 il codename è focal; usare una voce diversa può produrre un pacchetto non trovato o dipendenze incoerenti. Il secondo errore è fidarsi di un binario scaricato manualmente senza tracciabilità. Funziona, ma poi gestire aggiornamenti e rollback diventa più fragile.
Un altro caso frequente è confondere l’installazione del client Terraform con quella dei provider. Terraform è il motore; i provider vengono scaricati al primo terraform init nel progetto. Se una configurazione non inizializza, il problema spesso non è l’installazione del binario ma la rete verso i registry, i vincoli di versione nel file di configurazione o i permessi sulla directory del progetto.
Se terraform init fallisce con errori di download, controlla proxy, DNS e certificati CA del sistema. Se invece fallisce durante validate, il problema è quasi sempre nel file HCL o nella versione richiesta dal blocco required_version. Non è raro che un ambiente abbia Terraform installato correttamente ma un progetto richieda una versione differente da quella disponibile localmente.
Controllo finale da fare prima di usarlo in un progetto vero
Prima di considerare conclusa l’installazione, esegui una checklist breve ma utile: versione corretta, repository verificato, init valido e comando disponibile senza privilegi speciali oltre a quelli richiesti dal sistema. Questo evita di scoprire il problema quando sei già dentro una finestra di change o una sessione di troubleshooting su infrastruttura remota.
Checklist minima:
terraform versionrestituisce la release attesa.apt-cache policy terraformmostra il repository HashiCorp come sorgente.terraform initeterraform validatefunzionano su un file di test.command -v terraformpunta a un binario coerente, in genere/usr/bin/terraform.
Se questi quattro punti sono a posto, hai una base pulita. Da lì puoi passare alla parte che conta davvero: definire backend remoti, locking dello state, layout dei moduli e gestione delle credenziali con variabili d’ambiente o secret manager, non con file lasciati in giro sulla macchina.
Assunzione operativa: il sistema è Ubuntu 20.04 LTS aggiornato, con accesso a Internet o a un proxy autorizzato, e l’obiettivo è installare Terraform via repository ufficiale HashiCorp per uso amministrativo o DevOps.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.