Accueil Nos publications Blog OpenTofu, une alternative open-source à Terraform ?

OpenTofu, une alternative open-source à Terraform ?

Vignette logo Open Tofu Néosoft

Sommaire

  1. Introduction
  2. Caractéristiques d’OpenTofu
  3. Installation d’OpenTofu
  4. Migration de Terraform vers OpenTofu
  5. Intégration d’OpenTofu dans les workflow CI/CD
  6. 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 :

  1. Proposer un outil simple d’IaC
  2. Avoir une forte intéraction avec le registry
  3. 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 :

terraform plan

(puis éventuellement terraform apply si des changements sont à appliquer)

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.

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.

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.

Vous souhaitez en savoir plus ? Contactez-nous !

Aller au contenu principal