OpenTofu
| Fiche express | |
|---|---|
| Type | Infrastructure as Code déclarative — fork libre de Terraform |
| Gouvernance | Linux Foundation |
| Licence | Mozilla Public License 2.0 (MPL-2.0) |
| Langage | HCL (compatible Terraform) |
| Origine | Fork communautaire suite au passage de Terraform en BUSL (août 2023) |
| Voir aussi | Terraform — Concepts fondamentaux · Terraform — Modules et variables · Terraform — Providers on-prem |
OpenTofu est un fork open source de Terraform, hébergé sous l'égide de la Linux Foundation et distribué sous licence MPL 2.0 (permissive, approuvée OSI). Il reprend le code de Terraform jusqu'à la dernière version publiée sous licence MPL et poursuit son développement de façon indépendante. Le langage (HCL), le modèle de state, le cycle de vie init/plan/apply/destroy et l'écosystème de providers sont ceux décrits dans la fiche Terraform — cette page se concentre sur ce qui distingue OpenTofu : son origine, sa gouvernance et ses écarts fonctionnels.
Origine : le changement de licence de 2023
En août 2023, HashiCorp a annoncé le passage de Terraform (et de plusieurs autres produits) de la licence MPL 2.0 à la BUSL 1.1 (Business Source License) — une licence source-available mais non reconnue OSI, qui restreint l'usage commercial concurrentiel du logiciel (par exemple, interdiction de proposer un service managé concurrent basé sur le même code) (détails précis des clauses à vérifier, elles ont évolué depuis l'annonce initiale).
Cette annonce a déclenché la création d'un fork communautaire, initié par plusieurs entreprises de l'écosystème Terraform (parmi lesquelles Spacelift, Env0, Gruntwork, Harness — liste à vérifier) et rapidement placé sous l'ombrelle de la Linux Foundation pour en garantir une gouvernance neutre et pérenne, indépendante d'un éditeur unique. Le projet a pris le nom OpenTofu.
Gouvernance
Point de différenciation central par rapport à Terraform :
| Terraform | OpenTofu | |
|---|---|---|
| Éditeur / gouvernance | HashiCorp (entreprise unique, rachetée par IBM — à vérifier selon la période) | Linux Foundation (fondation à but non lucratif, gouvernance communautaire) |
| Licence | BUSL 1.1 (source-available, non-OSI) | MPL 2.0 (open source, approuvée OSI) |
| Décisions techniques | Internes à HashiCorp | Comité technique ouvert (TSC), RFC publiques |
| Modèle économique | Terraform Cloud/Enterprise (HashiCorp) | Pas d'offre cloud officielle unique ; plusieurs éditeurs tiers proposent des offres managées compatibles |
Cette gouvernance ouverte est l'argument principal en faveur d'OpenTofu dans un contexte de souveraineté ou de pérennité à long terme : aucune entreprise ne peut à elle seule changer à nouveau les conditions de licence du projet.
Compatibilité avec Terraform
OpenTofu vise une compatibilité drop-in avec Terraform :
- Même langage HCL, mêmes concepts (resource, data, provider, module — voir aussi Terraform — Modules et variables).
- Les providers du registre Terraform restent utilisables (le registre OpenTofu référence également les providers existants).
- Le format de state est compatible ; une migration depuis Terraform se fait en général sans conversion de state (les considérations de state et de secrets s'appliquent à l'identique).
- La commande CLI s'appelle
tofu(au lieu deterraform), avec des sous-commandes identiques :
tofu init
tofu plan
tofu apply
tofu destroy
Différences fonctionnelles
Depuis le fork, les deux projets évoluent indépendamment et ont chacun introduit des fonctionnalités propres (l'écart précis dépend de la version de chaque outil, à vérifier au moment de l'usage) :
- State encryption native (chiffrement du fichier de state intégré à OpenTofu sans dépendre uniquement du chiffrement du backend) — fonctionnalité mise en avant assez tôt côté OpenTofu.
- Fonctions pour boucles / itérations sur providers (ex.
for_eachau niveau des blocs provider) — introduites côté OpenTofu avant ou différemment de Terraform selon les versions. - HashiCorp continue de développer des fonctionnalités propriétaires côté Terraform Cloud/Enterprise, hors du périmètre du fork.
Dans la pratique courante (resource, module, provider, state), les deux outils restent interchangeables pour l'essentiel des usages décrits dans Terraform — Concepts fondamentaux et Terraform — Modules et variables.
Migrer un projet Terraform existant
Migration généralement peu intrusive :
- Installer le binaire
tofu. - Exécuter
tofu initdans un projet Terraform existant (le state et les fichiers.tfsont réutilisés tels quels). - Remplacer progressivement les appels
terraformpartofudans les scripts de CI.
Aucune conversion du HCL n'est nécessaire dans le cas général ; les points d'attention concernent surtout les providers ou modules qui référenceraient explicitement des fonctionnalités propriétaires HashiCorp (Terraform Cloud, Sentinel).
Voir aussi
- Terraform — Concepts fondamentaux
- Terraform — Modules et variables
- Terraform — Providers on-prem
- Pulumi — alternative IaC en langage de programmation généraliste plutôt qu'HCL
- Frontière IaC — Terraform, Ansible, GitOps