OpenTofu : Le grand saut vers l'Open Source
Reprendre le contrôle de son infrastructure : Guide d'installation et de migration vers le successeur libre de Terraform.

Ingénieur DevOps passionné par le Cloud, j'aime construire des solutions robustes tout autant que les raconter. Nexus DevOps, c'est mon espace de partage : j'y documente mes Labs avec simplicité et bonne humeur pour que l'on puisse tous progresser ensemble. Adepte de l'entraide et du 'Learning by doing', je suis toujours partant pour échanger sur une techno ou un nouveau défi !
"Passer à OpenTofu, c'est un peu comme si un manchot apprenait à voler : au début tout le monde est sceptique, et à la fin, on trouve ça tellement plus classe."
Nexus, 2026
Hello friend,
Si tu es sorti de ta grotte il y a bien des lunes, tu as vu que Terraform a changé de licence (passage à la BUSL), ce qui a poussé la communauté à créer un "fork" totalement open-source soutenu par la Linux Foundation : OpenTofu.
Aujourd'hui, je te montre comment l'installer, le faire cohabiter avec Terraform, et surtout, comment ne pas te prendre les pieds dans ton parachute lors de tes premiers tofu apply.
1. OpenTofu vs Terraform : On peut avoir les deux ?
La réponse est OUI. OpenTofu est conçu pour être un remplacement "drop-in" (interchangeable). Le binaire s'appelle tofu au lieu de terraform, ce qui permet de les garder tous les deux sur ton système sans aucun conflit.
C'est idéal pour tester la migration sur tes projets personnels avant de le proposer au taf.
2. Installation (Debian/Ubuntu & Fedora)
Pour installer proprement OpenTofu, le plus simple est d'utiliser les dépôts officiels. Choisis la méthode qui correspond à ton système.
Sur Debian / Ubuntu (et dérivés)
# Installation des dépendances
sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
# Ajout de la clé GPG d'OpenTofu
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://get.opentofu.org/opentofu.gpg | sudo tee /etc/apt/keyrings/opentofu.gpg >/dev/null
sudo chmod a+r /etc/apt/keyrings/opentofu.gpg
# Ajout du dépôt
echo "deb [signed-by=/etc/apt/keyrings/opentofu.gpg] https://packages.opentofu.org/opentofu/opentofu/any/ any main" | sudo tee /etc/apt/sources.list.d/opentofu.list
# Installation finale
sudo apt-get update
sudo apt-get install -y tofu
Sur Fedora (et distributions RHEL-like)
Puisque j'utilise Fedora pour ce test, voici la procédure spécifique avec dnf. Elle est encore plus rapide grâce au script d'installation automatique du dépôt :
# Ajout du dépôt et configuration automatique
curl -sS https://get.opentofu.org/install.sh | sudo bash -s -- --install-repo
# 2. Installation du paquet tofu
sudo dnf install -y tofu
Vérification (Valable pour tous)
Une fois l'installation terminée, vérifie que le binaire est bien reconnu en tapant :
tofu --version
Astuce de Nexus : Si tu as déjà Terraform d'installé, pas de panique ! Comme tu peux le voir, la commande tofu est distincte de terraform. Tu peux donc garder tes anciens scripts tout en expérimentant le futur de l'IaC avec OpenTofu.
3. Ta première ressource : Le provider Docker
Pour éviter de sortir la carte bleue chez un fournisseur Cloud, on va tester OpenTofu avec Docker. On va demander à Tofu de créer un conteneur Nginx pour nous.
Créer le fichier main.tf
Crée un dossier mon-premier-tofu et ajoutes-y ce fichier main.tf:
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "4.2.0"
}
}
}
provider "docker" {}
resource "docker_image" "nginx" {
name = "nginx:latest"
keep_locally = false
}
resource "docker_container" "nginx" {
image = docker_image.nginx.image_id
name = "tuto-opentofu"
ports {
internal = 80
external = 8080
}
}
4. Le cycle de vie : The Tofu Way
Les commandes sont identiques à celles que tu connais avec Terraform, mais avec le préfixe tofu.
1.Initialisation : Télécharge le provider
tofu init
2. Planification : Regarde ce que Tofu s'apprête à faire.
tofu plan
3.Application : Déploie le conteneur.
tofu apply
- Tape
yesquand il te le demande :
Félicitations ! Si tu vas sur http://localhost:8080, ton serveur Nginx tourne, géré entièrement par OpenTofu.
4.Destruction : Le repli stratégique
Une mission réussie, c'est aussi savoir effacer ses traces. Si tu as besoin de tout démonter proprement (ou si tu veux simplement éviter que ta facture Cloud ne s'envole plus haut que ton parachute), OpenTofu a la commande qu'il te faut.
Lance la commande tofu destroy :
tofu destroy
- Tape
yesquand il te le demande
Nexus regarde les ressources disparaître une à une de son écran. Pas de restes, pas de coûts inutiles, juste une infrastructure propre et bien gérée.
5. Migration : Passer de Terraform à OpenTofu
Si tu as déjà un projet Terraform, la migration est ridiculeusement simple :
- Fais un backup de ton fichier
terraform.tfstate:
cp terraform.tfstate terraform.tfstate.backup
Lance
tofu init.OpenTofu va détecter l'état Terraform et te proposer de le reprendre. Dis
yes.
⚠️ Le conseil "Système" : Maîtrise tes Alias
Si tu es comme moi et que tu as personnalisé ton .bashrc ou .zshrc avec des raccourcis type alias tf='terraform', fais attention.
La mémoire musculaire peut te trahir et te faire lancer un apply avec le mauvais binaire. Je te conseille de mettre à jour tes alias via .bashrc ou .zshrc avec la commande nano ~/.bashrc ou la commande nano ~/.zshrc :
# Rediriger ton raccourci vers OpenTofu au lieu de Terraform
alias tf='tofu'
# Optionnel : Un rappel si tu tapes encore "terraform" par erreur
alias terraform='echo "⚠️ Utilise la commande tofu !"; terraform'
Astuce : Utilise type tf pour vérifier quel binaire ton terminal appelle réellement.
Troubleshooting : Quand le parachute s'emmêle
Même pour un remplacement "drop-in", on peut tomber sur quelques turbulences. Voici les cas concrets que j'ai rencontrés lors de la rédaction de ce guide :
1. L'erreur de signature (Failed to install provider)
Lors de mon premier tofu init, j'ai eu une erreur m'indiquant que le provider Docker n'était pas signé avec une clé valide.
Le problème : Un conflit de versions ou une signature mal reconnue dans le fichier de verrouillage existant.
La solution "Brute Force" (et efficace) :
1. Modifier la version dans le
main.tf(passer à la 4.2.0).2. Supprimer le fichier de verrouillage :
rm .terraform.lock.hcl.3. Forcer la mise à jour :
tofu init -upgrade.Résultat : Tofu repart de zéro, télécharge la version stable et génère un nouveau lock tout propre.
2. Erreur de syntaxe lors de l'installation (Fedora)
Si en installant le dépôt tu vois apparaître du code HTML (<!doctype html>) dans ton terminal :
- Le problème :
curla récupéré une page d'erreur web au lieu du script d'installation.
- La solution : Utiliser l'URL officielle simplifiée qui gère mieux les redirections :
curl -sS https://get.opentofu.org/install.sh | sudo bash -s -- --install-repo
Une fois ces petits réglages effectués, tu devrais avoir un environnement stable et prêt à l'emploi. Ce qu'il faut retenir, c'est qu'OpenTofu n'est pas juste un clone : c'est un outil qui remet la sécurité et la transparence au centre, tout en restant familier pour ceux qui viennent de Terraform.
🔗 Ressources
Plutôt que de copier-coller des lignes de commande, j'ai préparé un Kit Nexus pour automatiser l'installation sur Fedora.
install_opentofu.sh: Pour configurer le repo et installer le Tux en un clin d'œil.main.tf: Notre configuration Docker prête à l'emploi.uninstall_opentofu.sh: Parce que Nexus sait aussi faire le ménage.
📂 Code Source : Retrouve ces scripts sur GitHub Gist.
Comment utiliser les scripts
sh:
Copie le contenu du script de ton choix (exemple
install_opentofu.sh).Crée un fichier avec le même nom sur ta machine et colle y le contenu copié :
nano install_opentofu.shDonne-lui les droits d'exécution :
chmod +x install_opentofu.shLance le :
sudo ./install_opentofu.sh
Le mot de la fin
Et voilà, c'est fait. La mission est réussie. Tux a atterri en douceur sur la banquise Toulousaine.
Ce n'était pas si difficile, n'est-ce pas ? La transition est fluide, le code est libre, et l'avenir est radieux (enfin, aussi radieux que le soleil de Toulouse, ce qui est quand même pas mal). Alors, n'hésite pas, saute le pas !






