OpenTofu, une alternative open-source à Terraform ?
Sommaire
- Introduction
- Caractéristiques d’OpenTofu
- Installation d’OpenTofu
- Migration de Terraform vers OpenTofu
- Intégration d’OpenTofu dans les workflow CI/CD
- Conclusion
Introduction
Parmi les nombreuses innovations présentées à la CloudNativeCon 2024 à Paris, OpenTofu s’est distingué comme un sujet de discussion incontournable. En réponse à la décision de HashiCorp de passer d’une licence open-source à la Business Source License, l’initiative de créer un fork à Terraform a rallié de nombreux soutiens.
Reconnu pour sa capacité à gérer l’infrastructure as code (IaC), cet outil représente ainsi une alternative open-source à Terraform. L’OSS (open-source software) conserve une compatibilité étroite avec Terraform, permettant ainsi aux utilisateurs de Terraform de migrer facilement vers OpenTofu et de continuer à utiliser les plugins existants. Ce projet est désormais sous l’égide de la Linux Foundation, témoignant de son importance et de son engagement dans la communauté open-source.
Caractéristiques d’OpenTofu
OpenTofu brille par sa flexibilité et son adaptabilité. Construit pour fonctionner harmonieusement avec Kubernetes, il supporte une grande variété de fournisseurs de services cloud et s’intègre naturellement aux écosystèmes de conteneurisation. Sa syntaxe, à la fois intuitive et puissante, permet aux développeurs de définir de manière précise les ressources cloud nécessaires, tout en facilitant la maintenance et l’évolution des infrastructures. Le support de la communauté et l’ouverture du projet encouragent l’innovation et la collaboration entre les utilisateurs.
Par ailleurs, ce service ne peut pas fonctionner sans un registry, contenant le catalogue des providers ainsi que des modules :
https://github.com/opentofu/registry
Le retour d’expérience de la version Alpha commentée par les intervenants a porté sur 3 axes principaux :
- Proposer un outil simple d’IaC
- Avoir une forte intéraction avec le registry
- Avoir un faible niveau de maintenance
C’est ainsi qu’est née la première release stable d’OpenTofu.
Installation d’OpenTofu
L’installation d’OpenTofu se veut simple et accessible. La démo d’installation lors de la présentation à la CloudNativeCon 2024 portait sur un exemple d’installation sur MacOs avec le gestionnaire de dépôt Homebrew.
Les étapes d’installation pour les différents OS se trouvent sur cette page : https://opentofu.org/docs/intro/install
Vérifier la version d’OpenTofu avec la commande suivante :
tofu --version
Migration de Terraform vers OpenTofu
Une session particulièrement attendue du salon a été celle consacrée à la migration de Terraform vers OpenTofu. Les intervenants ont mis en lumière les outils et méthodologies facilitant cette transition, tout en soulignant les avantages immédiats en termes de performance, de facilité de maintenance, et d’intégration dans les flux de travail existants. Des études de cas concrètes ont illustré comment différentes entreprises ont réussi cette migration.
Plus concrètement, si vous souhaitez migrer un projet existant de Terraform vers OpenTofu, les opérations sont très simples.
Il suffit de suivre les étapes suivantes :
1. Mettre à jour son projet via terraform
terraform plan
(puis éventuellement terraform apply
si des changements sont à appliquer)
2. Sauvegarder le state file Terraform
Que votre state file se trouve en local ou en centralisé (par exemple sur Terraform Cloud, AWS S3, un blob storage Azure ou autre), il faut en faire une copie.
Sur un environnement local, il faudra simplement copier le fichier terraform.tfstate
Sur un stockage de type AWS S3, une solution pourrait être d’activer le versionning du bucket afin d’être en mesure de faire un retour arrière rapide en cas de besoin.
3. Initialiser OpenTofu dans le projet
Lancer simplement la commande tofu init
Vérifier ensuite le plan avec la commande suivante :
$ tofu plan
...
No changes. Your infrastructure matches the configuration.
OpenTofu has compared your real infrastructure against your
configuration and found no differences, so no changes are needed.
4. Utiliser OpenTofu
Il suffit ensuite de réaliser un changement et l’appliquer après avoir fait un plan.
tofu plan
puis tofu apply
Intégration de OpenTofu dans les workflow CI/CD
OpenTofu, à l’instar de Terraform, excelle dans son intégration dans les workflows CI/CD. Il permet de faciliter l’automatisation et la répétabilité accrues des déploiements de briques d’infrastructures. La conférence OpenTofu lors de cette édition de la CloudNativeCon 2024 a dévoilé des stratégies d’intégration avancées. Nous avons notamment découvert comment OpenTofu peut s’insérer dans les pipelines existants afin d’améliorer la qualité et la fiabilité des déploiements. Les exemples pratiques, couvrant divers outils de CI/CD, ont offert aux participants des insights précieux pour optimiser leurs propres processus.
La logique est la même que pour l’intégration d’une stage de déploiement avec Terraform. Voici un exemple d’utilisation d’OpenTofu au sein du pipeline CI/CD GitLab (fichier .gitlab-ci.yml) :
stages:
- build
- test
- deploy_infra
- deploy_app
variables:
TOFU_PLAN: "${CI_PROJECT_DIR}/plan.out"
build_job:
stage: build
script:
# Commandes pour compiler votre projet / Dépend de la technologie utilisée dans l'application
opentofu_validate:
stage: test
script:
- tofu validate
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
opentofu_plan:
stage: test
script:
- tofu plan -out=${TOFU_PLAN}
artifacts:
paths:
- ${TOFU_PLAN}
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
opentofu_apply:
stage: deploy_infra
script:
- tofu apply -input=false ${TOFU_PLAN}
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
deploy_app:
stage: deploy_app
script:
# Commandes pour déployer votre application sur l'infrastructure nouvellement créée
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
Conclusion
La migration d’un projet Terraform existant vers OpenTofu peut offrir de nombreux avantages, notamment des fonctionnalités améliorées et une intégration facilitée avec d’autres outils.
Cette conférence a marqué un tournant pour les professionnels de l’IT cherchant à innover dans la gestion de l’Infrastructure as Code (IaC). Son approche flexible, sa facilité d’intégration et le soutien de sa communauté en font une solution d’avenir pour les équipes souhaitant accélérer leur transformation digitale. Les échanges et les retours d’expérience recueillis lors de cet événement témoignent de l’enthousiasme autour d’OpenTofu, et présagent de son adoption croissante dans les années à venir.