Da Terraform a OpenTofu
Nel mio post precedente avevo raccontato la nascita turbolenta di OpenTofu, il fork comunitario che ha preso il posto di Terraform dopo il cambio di licenza da parte di HashiCorp.
A distanza di oltre un anno, è tempo di parlare di qualcosa di concreto: come si migra davvero da Terraform a OpenTofu, senza rischiare notti insonni, ambienti rotti o CI/CD nel panico.
1. Capire da dove si parte
Non tutti usano Terraform allo stesso modo. Prima di migrare, mappa il tuo utilizzo reale:
- Versione in uso (Terraform 1.5.x è il confine dorato)
- Backend (S3? GCS? Terraform Cloud?)
- Feature avanzate (test, moduli dinamici, encode_tfvars, Sentinel)
- Tool integrati (Atlantis? Spacelift? GitHub Actions?)
Se sei fermo alla 1.5.x, sei fortunato: OpenTofu è compatibile quasi al 100%. Se invece sei passato a 1.6+, ci saranno alcune frizioni (soprattutto con funzioni nuove introdotte ad hoc da HashiCorp per “rompere” la compatibilità).
2. Strategia “Low Risk”: migrazione incrementale
Il metodo che consiglio è non cambiare tutto subito. Ecco come procedere in sicurezza:
- Scegli un ambiente pilota: un modulo isolato o uno stack di sviluppo.
- Installa OpenTofu (via asdf, brew, apt, ecc).
- Esegui:
tofu init
tofu plan
- Se tutto fila liscio, continui con il deploy (tofu apply).
- Aggiorna il tuo CI/CD per usare tofu al posto di terraform.
Tip: puoi anche tenere entrambi installati in parallelo per testare senza rischi.
3. Cosa può andare storto?
- Funzioni non supportate (encode_expr, decode_tfvars): cerca nel codice e rimuovile o sostituiscile.
- Testing: se usi framework di test, occhio alle divergenze (OpenTofu usa mock diversi).
- Terraform Cloud: qui la migrazione è più delicata. Valuta alternative open come Atlantis, Spacelift, env0 o ControlMonkey.
4. Bonus: strumenti utili per la migrazione
- tfsec o per analisi statiche pre-migrazione;
- ControlMonkey – automatizza la generazione di codice da infrastruttura esistente;
- terrascan per policy enforcement post-migrazione.
5. E per i nuovi progetti?
Se stai partendo da zero: usa OpenTofu e basta. È compatibile, sicuro, e libero. Eviti futuri lock-in e hai feature che Terraform non ha mai voluto implementare (crittografia dello state lato client, provider for_each, ecc).
Conclusione
Migrare a OpenTofu oggi non è un atto di ribellione, ma una scelta pragmatica. L’ecosistema si è evoluto, la community è viva, e le alternative (anche multi-language come Pulumi o cloud-native come Crossplane) stanno guadagnando terreno.
Ma se sei affezionato alla sintassi HCL e vuoi continuare a lavorare “come prima”, OpenTofu è la via più sicura, libera e sostenibile.
Le opinioni in quanto tali sono opinabili e nulla ti vieta di approfondire l’argomento.
Risorse: