𧱠OpenTofu : décrire son infrastructure en code (le fork libre de Terraform)
đ 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.shEnsuite, 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.
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
applyse 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.