← Tous les articles
Ven. 26 juin 2026 · 4 min de lecture

đŸ§± OpenTofu : dĂ©crire son infrastructure en code (le fork libre de Terraform)

OpenTofu

📚 Introduction

Un homelab commence toujours de la mĂȘme façon : on clique dans une interface web, on ouvre trois SSH, on installe un paquet ici, on ajuste un fichier lĂ . Puis six mois passent, un disque lĂąche, et personne — pas mĂȘme moi — ne sait remonter la machine Ă  l’identique. C’est le problĂšme que rĂ©sout l’Infrastructure as Code (IaC) : dĂ©crire l’infrastructure dans des fichiers versionnĂ©s, au lieu de la construire Ă  la main.

L’outil de rĂ©fĂ©rence a longtemps Ă©tĂ© Terraform. Depuis 2023, il a un jumeau open source : OpenTofu, un fork sous licence MPL 2.0 gouvernĂ© par la Linux Foundation. La version 1.12.5 est sortie en juillet 2026. C’est celui que j’utilise pour piloter mon homelab Proxmox, et c’est le sujet du jour.

🔎 OpenTofu ou Terraform, quelle diffĂ©rence ?

OpenTofu est nĂ© d’une bascule de licence. En aoĂ»t 2023, HashiCorp a fait passer Terraform sous BSL (Business Source License) : une licence qui autorise beaucoup d’usages mais restreint le commercial et n’est plus open source. En rĂ©action, la communautĂ© a forkĂ© la derniĂšre version MPL de Terraform. Le projet a rejoint la Linux Foundation en septembre 2023 sous le nom d’OpenTofu, et sa premiĂšre version stable (1.6, janvier 2024) Ă©tait compatible avec Terraform 1.5.x.

ConcrĂštement, pour qui dĂ©bute, la diffĂ©rence est faible : mĂȘme langage HCL, mĂȘmes blocs terraform {}, mĂȘmes providers, mĂȘme ligne de commande — Ă  ceci prĂšs que la commande s’appelle tofu au lieu de terraform. La vraie diffĂ©rence est juridique et politique : OpenTofu reste open source, sous gouvernance ouverte. Pour un projet perso comme pour une boĂźte, c’est une garantie de pĂ©rennitĂ© qui compte.

🚀 Le cycle : write, plan, apply

L’installation tient en une ligne via Homebrew, ou via le script officiel :

# via Homebrew (macOS / Linux)
brew install opentofu
 
# ou le script d'installation officiel
curl --proto '=https' --tlsv1.2 -fsSL https://get.opentofu.org/install-opentofu.sh -o install-opentofu.sh
chmod +x install-opentofu.sh
./install-opentofu.sh --install-method standalone
rm -f install-opentofu.sh

Ensuite, tout tourne autour d’une boucle de trois commandes. On Ă©crit l’état souhaitĂ© dans un fichier .tf, on prĂ©voit les changements, on applique.

La boucle OpenTofu : écrire le code, tofu plan, tofu apply, puis l'état enregistré

Voici le plus petit exemple qui tourne vraiment — il crĂ©e un simple fichier local, mais la mĂ©canique est identique pour une VM ou un bucket :

terraform {
  required_providers {
    local = {
      source = "hashicorp/local"
    }
  }
}
 
resource "local_file" "hello" {
  content  = "Bonjour depuis OpenTofu\n"
  filename = "${path.module}/hello.txt"
}
tofu init      # télécharge le provider déclaré
tofu plan      # montre ce qui va changer, sans rien toucher
tofu apply     # applique, aprĂšs confirmation
tofu destroy   # supprime tout ce qui a été créé

Le plan est le cƓur du modĂšle : il te montre exactement ce qui va ĂȘtre créé, modifiĂ© ou dĂ©truit avant d’agir. Plus de mauvaise surprise, plus de « je croyais que
 ».

đŸ§± Providers et state

Deux notions Ă  comprendre pour aller plus loin.

Un provider est le plugin qui parle Ă  une plateforme donnĂ©e. Le fichier ci-dessus utilise hashicorp/local ; pour du concret, on branchera plutĂŽt kreuzwerker/docker pour des conteneurs, bpg/proxmox pour des VMs Proxmox, ou hashicorp/aws — Ă©ventuellement contre un LocalStack en local pour tester sans facture. Le code change Ă  peine : c’est toujours des blocs resource.

Le state est le fichier oĂč OpenTofu note ce qu’il a rĂ©ellement créé. C’est sa source de vĂ©ritĂ© : au prochain plan, il compare ton code au dernier Ă©tat connu pour calculer le diff. C’est aussi le fichier le plus sensible du projet.

⚠ Quelques prĂ©cautions

  • Le state contient des secrets en clair. Mots de passe, clĂ©s gĂ©nĂ©rĂ©es : ils atterrissent dans le fichier d’état. On ne le commite jamais tel quel dans Git. Pour un usage Ă  plusieurs, on passe Ă  un backend distant (S3, un stockage compatible, etc.) avec verrouillage, pour Ă©viter que deux apply se marchent dessus.
  • On ne modifie pas le state Ă  la main. Il se manipule via les commandes (tofu state 
), jamais Ă  l’éditeur.
  • Attention au drift. Si tu modifies une ressource Ă  la main aprĂšs l’avoir créée avec OpenTofu, le code et le rĂ©el divergent. La rĂšgle d’or : une fois qu’une ressource est gĂ©rĂ©e en IaC, on ne la touche plus que par le code.

🎉 Conclusion

OpenTofu, c’est la discipline de l’IaC sans le risque de licence : ton infrastructure dĂ©crite dans des fichiers versionnĂ©s, un plan qui te dit la vĂ©ritĂ© avant d’agir, et un Ă©cosystĂšme de providers immense hĂ©ritĂ© de Terraform. Pour un homelab, commence petit — un fichier local, puis une VM Proxmox — et laisse la boucle write/plan/apply devenir un rĂ©flexe. Le jour oĂč un disque lĂąchera, tu remonteras tout d’un tofu apply.

🔗 Liens utiles

/faq

Questions fréquentes

OpenTofu est-il compatible avec Terraform ?

+

Oui. OpenTofu est un fork de Terraform : il partage le langage HCL, les blocs « terraform {} », la ligne de commande et l'écosystÚme de providers. La premiÚre version stable, 1.6 (janvier 2024), est compatible avec Terraform 1.5.x, et beaucoup de projets migrent en changeant simplement la commande « terraform » par « tofu ».

OpenTofu est-il gratuit et open source ?

+

Oui, entiÚrement. OpenTofu est publié sous licence Mozilla Public License 2.0 (MPL 2.0), une vraie licence open source, et le projet est gouverné par la Linux Foundation. C'est précisément ce qui l'a distingué de Terraform, passé lui sous licence BSL (non open source) en août 2023.

Pourquoi OpenTofu existe-t-il ?

+

En août 2023, HashiCorp a fait passer Terraform sous licence BSL, qui restreint certains usages commerciaux et n'est plus open source. La communauté a forké la derniÚre version MPL de Terraform ; le projet a rejoint la Linux Foundation en septembre 2023 sous le nom d'OpenTofu.