OpenTofu

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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 :

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_each au 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 :

  1. Installer le binaire tofu.
  2. Exécuter tofu init dans un projet Terraform existant (le state et les fichiers .tf sont réutilisés tels quels).
  3. Remplacer progressivement les appels terraform par tofu dans 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