Corso
La prima volta che ho usato Terraform ero scettico. Mi sembrava davvero strano aggiornare l'infrastruttura nell'editor di codice invece di cliccare nella console del cloud, e all'epoca non ne capivo i vantaggi. Ma dato che era una policy aziendale, mi sono adeguato. Poi, un giorno, mi chiesero di creare un nuovo ambiente di sviluppo da zero. Ricordo perfettamente di essere andato dal senior dev del team a chiedergli cosa mi fossi perso, perché ci avevo messo solo 10 minuti. Ha controllato il mio lavoro, ha riso e ha confermato che sì, era proprio così semplice.
Non c'è da stupirsi che Terraform sia così ampiamente adottato nel settore. Con l'evoluzione rapidissima del cloud computing, i team in tutto il mondo stanno passando all'Infrastructure as Code (IaC) per gestire infrastrutture sempre più complesse. La capacità di Terraform di offrire un approccio coerente, ripetibile e scalabile alla gestione dell'infrastruttura lo ha reso una scelta di punta per aziende di vari settori.
In un colloquio su Terraform, non verrà valutato solo quante command conosci, ma soprattutto la tua capacità di usare Terraform in modo efficace per integrarti nei flussi di lavoro DevOps moderni e risolvere problemi reali.
Qui la comunicazione è fondamentale. Come discusso in un recente podcast DataFramed sui ruoli tecnici, la vera padronanza è l'adattabilità:
Devi saper presentare qualsiasi tipo di insight in modo che lo capisca un bambino di sei anni e, allo stesso tempo, in modo da soddisfare me o persino qualcuno ancora più tecnico. Se conosci davvero la materia, sai semplificarla al massimo, ma puoi anche renderla così complessa che, onestamente, solo chi ha un livello davvero, davvero alto di competenza tecnica può capirla.
Mo Chen, Data & Analytics Manager at NatWest Group
Mantenere questo mindset è fondamentale mentre ti prepari. In questo articolo ti guiderò attraverso alcune delle domande più comuni nei colloqui su Terraform. Le ho raggruppate in tre categorie – Base, Intermedio e Avanzato – così, a prescindere da dove ti trovi nella carriera, troverai qualcosa di utile!
E prima di iniziare: se sei completamente nuovo al cloud computing, ti consiglio di seguire prima il nostro corso Introduzione al Cloud Computing. Questo corso scompone le basi del cloud, spiega termini chiave come scalabilità e latenza e illustra i vantaggi degli strumenti cloud di provider come AWS. Terraform serve proprio a gestire l'infrastruttura cloud, quindi assicurati di avere familiarità con questi concetti prima, sia in teoria che in pratica!
Domande di base su Terraform
Queste domande si concentrano su cosa è Terraform e come funziona. È molto probabile che tu le incontri se non hai mai lavorato con Terraform o se l'intervistatore non è certo del tuo livello di competenza e vuole partire dalle basi.
1. Che cos'è Terraform e qual è il suo scopo principale?
Terraform è uno strumento open-source di Infrastructure as Code (IaC) creato da HashiCorp. Ti permette di definire e gestire infrastrutture cloud e on-premises usando un linguaggio dichiarativo chiamato HCL (HashiCorp Configuration Language). Terraform automatizza il provisioning, l'aggiornamento e il versionamento dell'infrastruttura, per garantire coerenza e ridurre il lavoro manuale.
2. In cosa Terraform è diverso da altri tool IaC come CloudFormation o Ansible?
Terraform versus CloudFormation: Terraform è cloud-agnostico, cioè può gestire infrastrutture su più provider (AWS, Azure, GCP, ecc.), mentre AWS CloudFormation è specifico per AWS. Terraform offre anche una sintassi più flessibile e una gestione dello state più evoluta.
Terraform versus Ansible: Ansible è principalmente uno strumento di configuration management (gestione di software, pacchetti e configurazioni del sistema operativo), mentre Terraform si concentra sul provisioning e sulla gestione dichiarativa delle risorse infrastrutturali.
3. Quali sono i comandi chiave di Terraform e cosa fanno?
-
terraform init– Inizializza un progetto Terraform e scarica i plugin dei provider necessari. -
terraform plan– Crea un execution plan che mostra quali modifiche applicherà Terraform. -
terraform apply– Applica le modifiche pianificate ed effettua il provisioning delle risorse. -
terraform destroy– Elimina tutte le risorse gestite. -
terraform validate– Verifica la presenza di errori di sintassi nei file di configurazione di Terraform.
4. Che cos'è un file di state di Terraform?
Terraform mantiene un file di state (terraform.tfstate) per tracciare l'infrastruttura reale che gestisce. Lo state aiuta Terraform a capire lo stato attuale delle risorse, rilevare drift e applicare le modifiche in modo efficiente. È fondamentale per la collaborazione, ma poiché contiene dati sensibili, va archiviato in modo sicuro.
5. Cosa sono i provider di Terraform e perché sono importanti?
I provider in Terraform sono plugin che gli permettono di interagire con piattaforme cloud, servizi SaaS e altre API. Ogni provider (ad es. AWS, Azure, Kubernetes) definisce le risorse che Terraform può gestire. Senza provider, Terraform non saprebbe come creare o configurare le risorse dell'infrastruttura.
Se vuoi saperne di più su Terraform e su come funziona, dai un'occhiata a questa guida per principianti. In quell'articolo approfonisco i componenti chiave di Terraform e passo in rassegna pro e contro dello strumento. C'è anche un mini tutorial per iniziare con il provisioning dell'infrastruttura su AWS.
Domande intermedie su Terraform
Questa sezione approfondisce i workflow di Terraform, le pratiche di configurazione e le strategie per gestire state e risorse in progetti reali. Per rispondere a queste domande serve una buona dose di esperienza pratica con Terraform, soprattutto se ti chiedono di parlare di esempi specifici.
6. Cosa sono i moduli di Terraform?
I moduli di Terraform sono componenti riutilizzabili che aiutano a organizzare il codice dell'infrastruttura raggruppando risorse correlate. Migliorano la manutenibilità, consentono al tuo team di riutilizzare il codice tra progetti e semplificano i deployment.
Un modulo può essere semplice come una directory con file .tf e un eventuale file variables.tf!
7. Come gestisce Terraform lo state remoto?
Per impostazione predefinita, Terraform archivia lo state in locale, ma per la collaborazione supporta back-end remoti (S3 con DynamoDB per AWS, GCS per Google Cloud o Terraform Cloud). Lo state remoto consente:
- Accesso condiviso per più membri del team.
- Lock dello state per prevenire conflitti.
- Migliore sicurezza con crittografia e accessi controllati.
8. Cosa sono i workspace di Terraform e quando dovresti usarli?
I workspace di Terraform ti permettono di mantenere file di state separati all'interno della stessa configurazione. Sono utili per gestire più ambienti (come dev, staging, prod) senza duplicare il codice.
I workspace sono ottimi per una semplice separazione degli ambienti, ma possono diventare difficili da mantenere in setup multi-account complessi.

Fonte: DevOps Mojo
9. Come gestisce Terraform l'import di infrastrutture esistenti e quali sono i limiti?
Terraform può importare risorse esistenti nel proprio state usando il comando terraform import. Tuttavia, non genera automaticamente i file di configurazione (i file .tf ) per quelle risorse, quindi dovrai scriverli manualmente.
Ci sono alcuni limiti a questa funzionalità di import:
- I setup complessi richiedono una riconciliazione manuale della configurazione.
- Alcuni tipi di risorse non sono supportati per l'import.
- C'è rischio di drift se la configurazione della risorsa importata non coincide con l'infrastruttura reale.
10. Cosa sono i provisioner di Terraform e quando dovresti usarli?
I provisioner eseguono script o comandi su una risorsa dopo che è stata creata. Spesso vengono usati per attività come configurare VM o installare software.
Esistono due tipi di provisioner:
- Local provisioner, che eseguono sul machine che lancia Terraform).
- Remote provisioner, che eseguono sulla risorsa target via SSH o WinRM.
Poiché i provisioner introducono dipendenze e riducono la natura dichiarativa di Terraform, andrebbero usati con parsimonia. Un'alternativa è usare strumenti di configuration management come Ansible o cloud-init.

Fonte: Opcito
11. Cos'è il drift detection in Terraform e come si può affrontare?
Il drift detection si riferisce alla situazione in cui lo stato reale dell'infrastruttura diverge da quello definito nella configurazione di Terraform. Può succedere quando vengono apportate modifiche manuali al di fuori di Terraform, ad esempio aggiornamenti nella console del provider cloud o tramite altri strumenti di automazione.
Terraform può rilevare il drift eseguendo terraform plan, che confronta lo stato corrente dal file di state con l'infrastruttura reale.
Se viene rilevato drift, dovresti annullare le modifiche manuali per riallinearti alla configurazione Terraform, aggiornare la configurazione per riflettere il nuovo stato desiderato ed eseguire terraform apply per riportare l'infrastruttura in linea con la configurazione.
12. Come implementeresti un rolling update con Terraform per un'applicazione distribuita su più istanze?
Un rolling update ti consente di aggiornare l'infrastruttura in modo incrementale per ridurre i tempi di inattività e fare in modo che un sottoinsieme delle istanze dell'applicazione resti disponibile durante l'aggiornamento. In uno scenario di rolling update, Terraform crea una nuova istanza della risorsa, attende che diventi healthy (tramite health check) e quindi sostituisce gradualmente le istanze vecchie.
In pratica, puoi implementare un rolling update definendo infrastruttura immutabile in Terraform e usando count o for_each nelle definizioni delle risorse (ad es. istanze EC2, load balancer).
13. Come gestisci le dipendenze tra risorse in Terraform e qual è il ruolo delle dipendenze implicite ed esplicite?
In Terraform, le dipendenze tra risorse sono gestite automaticamente tramite il suo meccanismo di costruzione del grafo. Le dipendenze implicite si creano quando una risorsa fa riferimento a un'altra nella configurazione (ad esempio, un riferimento a un aws_security_group in un aws_instance) e Terraform deduce automaticamente l'ordine di dipendenza.
Le dipendenze esplicite sono utili per gestire i casi limite in cui Terraform non riesce a dedurre automaticamente l'ordine. Si creano usando l'argomento depends_on, che forza Terraform a seguire un ordine di esecuzione specifico anche quando le risorse non si referenziano direttamente.

Fonte: HashiCorp
Domande avanzate su Terraform
A livello avanzato, gli intervistatori vorranno vedere la tua competenza nella gestione di infrastrutture su larga scala con Terraform. Le domande potrebbero includere argomenti come deployment multi-cloud, collaborazione in team e sfide di automazione. Qui puoi davvero mettere in luce la tua esperienza e le tue abilità, quindi non esitare a parlare dei progetti su cui hai lavorato e a fornire esempi pratici!
14. Come gestisci deployment multi-cloud complessi con Terraform?
La gestione di ambienti multi-cloud richiede l'uso di più provider in un'unica configurazione. Terraform ti consente di configurare risorse di diversi provider cloud (ad es. AWS, Azure, Google Cloud) nello stesso main.tf specificando provider diversi e usando risorse specifiche del provider.
Puoi usare alias dei provider per gestire più istanze dello stesso provider (ad es. AWS in region diverse) e sfruttare i moduli per astrarre le configurazioni comuni ed evitare duplicazioni. Fai però molta attenzione a gestire le dipendenze cross-cloud, perché le risorse in cloud diversi potrebbero non avere relazioni dirette.
15. Cosa sono i comandi taint e untaint in Terraform? Come li useresti in uno scenario reale?
terraform taint contrassegna una risorsa per la ricreazione al prossimo terraform apply, anche se non ci sono modifiche alla configurazione. È utile quando una risorsa è diventata problematica o si trova in uno stato indesiderato.
Per esempio, se un'istanza EC2 fallisce e deve essere ricreata, puoi applicare taint per forzarne la distruzione e la ricreazione durante il successivo apply.terraform untaint annulla il comando taint e impedisce che la risorsa venga ricreata.
16. Che cosa sono Terraform Cloud e Terraform Enterprise e quali sono le principali differenze?
Terraform Cloud è un'offerta SaaS di HashiCorp che fornisce funzionalità di collaborazione, come gestione dello state remoto, gestione dei workspace, integrazione con il version control e policy enforcement. È ideale per team piccoli e medi.
Terraform Enterprise è la versione self-hosted che aggiunge funzionalità più avanzate come registry privati dei moduli, controlli di accesso più granulari e funzionalità di sicurezza avanzate, incluse le distribuzioni on-premise.
In breve: Terraform Cloud è ospitato e gestito da HashiCorp, mentre Terraform Enterprise è self-hosted e dà alle organizzazioni il pieno controllo sulla propria infrastruttura.

Fonte: Google Cloud
17. Come gestisci il lock dello state e i problemi di concorrenza in Terraform quando lavori con team numerosi?
Il lock dello state in Terraform serve a impedire che due utenti modifichino lo stesso state contemporaneamente, perché ciò può portare a file di state corrotti.
Terraform Cloud ed Enterprise gestiscono automaticamente il lock dello state usando un back-end.
Per back-end remoti come S3 con DynamoDB, Terraform usa DynamoDB per il lock dello state e per prevenire problemi di concorrenza.
18. Cosa sono i deployment a zero downtime e come può Terraform ottenerli?
I deployment a zero downtime avvengono quando si applicano modifiche all'infrastruttura senza interrompere la disponibilità dei servizi. Terraform può raggiungerli tramite strategie come:
- Blue-Green deployment: uso di due ambienti identici (Blue e Green), tra i quali si instrada il traffico per distribuire le modifiche senza downtime.
- Rolling update: applicazione graduale delle modifiche a un piccolo sottoinsieme di istanze alla volta, consentendo alle restanti di rimanere attive durante gli aggiornamenti.
Sono strategie comuni nell'architettura cloud e Terraform offre funzionalità che aiutano a implementarle. Tuttavia, per una piena implementazione di queste strategie a zero downtime servono spesso strumenti aggiuntivi, come i load balancer.
19. Come gestisci i secret in Terraform e quali sono le best practice?
Terraform in sé non gestisce i secret ma può integrarsi con strumenti esterni di secret management. Per esempio, puoi usare:
- HashiCorp Vault: Terraform supporta nativamente Vault per recuperare secret come API key o password a runtime, evitando di inserirli hardcoded nei file di configurazione.
- Variabili d'ambiente: per valori sensibili, puoi impostarli come variabili d'ambiente.
- Back-end remoti con crittografia: archivia i file di state in back-end remoti con crittografia attivata per prevenire accessi non autorizzati ai dati sensibili.
- Uso dell'argomento sensitive: contrassegna output e variabili come sensitive per evitare che compaiano nei log di Terraform plan/apply.
20. Come implementi provider personalizzati di Terraform e quando ne avresti bisogno?
I provider personalizzati di Terraform si usano quando devi gestire risorse o servizi che Terraform non supporta nativamente. Sono implementati in Go e prevedono la creazione di funzioni personalizzate che interagiscono con API o servizi non coperti dai provider esistenti, come un'API interna, un servizio cloud di nicchia o una tecnologia proprietaria.
Terraform fornisce il Terraform Plugin SDK per aiutarti a creare provider, ma dovrai occuparti di autenticazione, operazioni CRUD (Create, Read, Update, Delete) ed eventuali configurazioni speciali specifiche dell'API con cui interagisci.
Conclusione
Spero che questo articolo ti abbia dato la conoscenza e la sicurezza per affrontare al meglio il tuo colloquio su Terraform!
Se hai bisogno di esercitarti ancora, dai un'occhiata ai tutorial di HashiCorp Terraform per imparare a usare Terraform per attività e casi d'uso comuni, oppure leggi il nostro post 14 strumenti essenziali di 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.
Domande frequenti su Terraform
Quanto a fondo dovrei conoscere Terraform per un colloquio?
Dipende dal ruolo. Per una posizione junior, è sufficiente comprendere concetti di base come provider, gestione dello state e risorse. I ruoli mid-level richiedono conoscenza di moduli, workspace e state remoto. Per i ruoli senior ci si aspetta competenza in state locking, integrazioni CI/CD e debug di problemi complessi.
Dovrei memorizzare i comandi di Terraform per il colloquio?
Sebbene conoscere comandi chiave come terraform init, plan e apply sia utile, agli intervistatori interessa di più come applichi i concetti di Terraform. Potrebbero chiederti di descrivere come struttureresti Terraform per uno scenario reale piuttosto che limitarti a elencare i comandi.
Quanto è importante la certificazione Terraform per trovare lavoro?
Una certificazione Terraform (come HashiCorp Certified: Terraform Associate) può aiutare a convalidare le tue conoscenze, ma non è obbligatoria per la maggior parte dei ruoli. L'esperienza pratica con Terraform in progetti reali pesa più di una certificazione da sola. Tuttavia, se sei alle prime armi con Terraform, ottenere la certificazione può essere un buon modo per imparare.

