OpenTofu - Une Alternative Open-Source à Terraform
Qu’est-ce que l’IaC ?
Avant l’IaC, le personnel informatique devait changer manuellement les configurations pour gérer leur infrastructure. Avec l’IaC, la configuration de l’infrastructure prend la forme d’un fichier de code, ce qui facilite son édition, sa copie et sa distribution. Les outils notables de l’IaC comprennent Terraform, AWS Cloud Formation, Azure Resource Manager et Puppet. Les avantages de l’IaC comprennent une plus grande cohérence et précision, un risque réduit, une sécurité renforcée, l’élimination de la dérive de configuration, des environnements stables et évolutifs, la vitesse et l’efficacité, et des économies de coûts. Les outils de l’IaC automatisent le processus de configuration, de modification et de maintenance de l’infrastructure informatique, permettant aux entreprises de fournir rapidement des environnements stables à grande échelle.
L’émergence d’OpenTofu comme alternative à Terraform
OpenTofu est apparu comme une alternative viable à Terraform en raison du passage soudain de Terraform à une licence non open-source, ce qui a suscité de vives réactions de la part de la communauté open-source. Cela a conduit à la création du Manifeste OpenTF, qui appelait au retour de la licence de Terraform à une licence open-source MPL largement acceptée. Le manifeste a réuni plus de 35 000 étoiles sur GitHub, et le 25 août 2023, l’initiative OpenTF a été publiquement annoncée comme un fork open-source de Terraform, conduisant à la naissance d’OpenTofu.
OpenTofu : Aperçu et Principaux Composants
OpenTofu est un outil open-source d’infrastructure en tant que code qui permet aux utilisateurs de définir à la fois des ressources cloud et sur site dans des fichiers de configuration lisibles par l’homme qui peuvent être versionnés, réutilisés et partagés. Il s’agit d’un fork de Terraform version 1.5.6 et est écrit dans le langage de programmation Go. OpenTofu utilise une approche déclarative, ce qui signifie qu’il décrit l’état souhaité de l’infrastructure, et c’est à l’outil de déterminer comment atteindre cet état. Voici quelques-uns des principaux composants d’OpenTofu :
Plan d’Exécution : OpenTofu génère un plan d’exécution qui décrit les actions qu’il entreprendra et demande la confirmation de l’utilisateur avant d’exécuter des opérations telles que la création, la modification ou la suppression de composants d’infrastructure. Gestion de l’État : OpenTofu garde une trace de l’état de l’infrastructure gérée, garantissant que les modifications sont appliquées de manière incrémentielle et cohérente. Il maintient également un fichier d’état, servant de source de vérité pour l’environnement. Fournisseurs : OpenTofu est compatible avec différents fournisseurs, y compris les fournisseurs de services cloud comme Microsoft Azure, AWS et Google Cloud Platform (GCP). Il y accède via leurs API (interfaces de programmation d’application). Configuration Déclarative : Les fichiers de configuration d’OpenTofu sont déclaratifs, décrivant l’état final de l’infrastructure. Cette approche permet une provision efficace des ressources en établissant des dépendances entre les ressources et en créant ou en modifiant simultanément des ressources non dépendantes.
Qu’est-ce qui différencie OpenTofu de Terraform ?
Les différences entre OpenTofu et Terraform sont principalement liées à leurs licences, à leur gouvernance et à leur développement piloté par la communauté. Voici les principales différences :
- Licence : OpenTofu est publié sous la licence publique Mozilla (MPL), une licence open-source permissive, tandis que Terraform est publié sous la licence Business Source License (BSL), qui impose certaines restrictions sur son utilisation commerciale.
- Gouvernance : OpenTofu est géré sous une fondation Linux, garantissant sa nature open-source et son modèle de gouvernance neutre. En revanche, Terraform est géré par HashiCorp.
- Développement Piloté par la Communauté : OpenTofu est développé en collaboration, aucune entreprise ne pouvant dicter son avenir. Il vise à maintenir la parité des fonctionnalités avec Terraform pour les futures versions et est piloté par la communauté. En revanche, le développement de Terraform est dirigé par HashiCorp.
- Compatibilité et Perspectives d’Avenir : OpenTofu est un remplacement direct pour Terraform et est compatible avec les versions Terraform 1.5.x et la plupart des versions 1.6.x. Il convient à un usage personnel et de production. La feuille de route d’OpenTofu comprend des fonctionnalités prévues et des améliorations pilotées par la communauté. En revanche, Terraform continue d’évoluer, HashiCorp annonçant de nouvelles versions et mises à jour de fonctionnalités.
- Registre OpenTofu : OpenTofu possède son propre registre, qui fournit un emplacement centralisé pour découvrir et utiliser des fournisseurs et des modules, facilitant la gestion de l’infrastructure. Cela a contribué à l’adoption croissante et au soutien d’OpenTofu au sein de la communauté open-source.
Comment passer de Terraform à OpenTofu ?
Pour passer de Terraform à OpenTofu dans un projet existant, les étapes suivantes doivent être appliquées :
1. Préparation : Appliquez tous les changements avec Terraform avant de passer pour assurer une transition en douceur.
2. Installation : Il peut être installé en tant que binaire autonome, consultez la documentation https://opentofu.org/docs/intro/install/ ou il peut être installé avec Homebrew sur macOS :
brew updatebrew install opentofu3. Initialisation:: Exécutez la commande suivante dans le répertoire où se trouve votre code Terraform. OpenTofu téléchargera tous les fournisseurs et modules référencés dans votre configuration depuis le registre OpenTofu.
tofu init4. Inspection du Plan: Inspectez le plan généré par OpenTofu pour confirmer qu’il correspond à vos attentes.
tofu plan5. Implémentation: Appliquez les modifications avec OpenTofu.
tofu applyEn conclusion, OpenTofu représente une évolution substantielle dans le domaine de l’Infrastructure as Code (IaC). Son engagement envers les idéologies open-source, le développement piloté par la communauté, et son équivalence de fonctionnalités avec Terraform en font un instrument prometteur pour la gestion de l’infrastructure informatique. Alors que l’outil continue de mûrir et de progresser, il est destiné à jouer un rôle vital dans la définition de l’avenir de l’Infrastructure as Code.