Sortie d'OpenTofu 1.6
La sortie de la première version d’OpenTofu, la 1.6.0, marque un jalon important dans le paysage des outils de gestion d’infrastructure en tant que code (IaC). Avec sa compatibilité avec Terraform 1.6, OpenTofu offre une porte de sortie pour ceux qui cherchent une alternative open-source robuste et fiable. Avec son intégration au sein de la Linux Foundation, OpenTofu se positionne de suite comme un acteur majeur, bénéficiant d’un support communautaire important et d’une base solide pour les développements futurs.
L’Histoire d’OpenTofu
Le parcours d’OpenTofu est illustre parfaitement l’évolution rapide et les réactions de la communauté open-source face aux changements de l’écosystème logiciel. Le déclencheur initial de ce projet a été la décision d’HashiCorp, en août 2023, de modifier la licence de plusieurs de ses projets open-source, y compris Terraform, en adoptant la licence source-available BUSL. Cette décision, bien que compréhensible dans un contexte commercial, a soulevé des inquiétudes au sein de la communauté quant à l’avenir de l’accès et de la contribution à ces outils.
En réponse, une équipe de développeurs, soutenue par une communauté de passionnée, a lancé le projet OpenTofu. L’objectif était clair : maintenir un fork de Terraform qui reste fidèle à l’esprit de l’open-source. Leur engagement a porté ses fruits, car OpenTofu a rapidement été accepté au sein de la Linux Foundation. Cette intégration a non seulement légitimé OpenTofu en tant que projet open-source sérieux, mais a également assuré sa pérennité et son développement continu.
Fonctionnalités d’OpenTofu 1.6.0
Travailler sur un fork d’un projet existant est loin d’être une tâche aisée. L’équipe d’OpenTofu a dû relever de nombreux défis, notamment la mise en place d’une infrastructure solide et la garantie d’une expérience utilisateur de qualité, comparable à celle de Terraform. Leur travail acharné a abouti à la sortie de la première version stable d’OpenTofu, la 1.6.0, qui a introduit déjà une nouvelle fonctionnalité, ainsi que plusieurs améliorations.
L’arrivée d’OpenTofu 1.6.0 apporte son lot d’améliorations, lui permettant de se placer comme une alternative viable à Terraform. Cette version se distingue par ses caractéristiques spécifiques, conçues pour faciliter la gestion d’infrastructure et améliorer l’expérience utilisateur.
L’un des atouts majeurs d’OpenTofu 1.6.0 est sa compatibilité totale avec Terraform 1.6. Cette caractéristique facilite grandement la transition pour les utilisateurs existants de Terraform. La migration de Terraform vers OpenTofu est simplifiée, avec une documentation complète disponible pour guider les utilisateurs à travers le processus.
Nouvelle Fonctionnalité
OpenTofu 1.6.0 introduit tofu test
, une fonctionnalité innovante
permettant aux utilisateurs de tester leurs configurations d’infrastructure de
manière plus efficace. Cette fonctionnalité vient simplifier la gestion des
tests d’infrastructure, étendant les champs du possible à OpenTofu.
Les Améliorations Diverses
En plus de cette nouvelle fonctionnalité, cette version apporte de nombreuses petites améliorations. Ces améliorations sont conçues pour affiner l’expérience utilisateur, augmenter la stabilité et optimiser les performances.
Backend d’État S3 Amélioré : Avec de nouvelles méthodes d’authentification, tout en restant compatible avec les solutions de stockage compatibles S3.
Nouveau Registre de Providers et de Modules : Simplification du processus de publication par une simple pull request.
L’équipe travaille déjà sur la version 1.7.0 d’OpenTofu avec des fonctionnalités prometteuses, comme le chiffrement des fichiers d’état, répondant ainsi aux besoins croissants de sécurité et d’efficacité dans la gestion d’infrastructure.
Installation d’OpenTofu
Installer OpenTofu est simple et ce, pour une variété de systèmes d’exploitation. Je vais vous guider à travers les étapes pour quelques-uns des systèmes les plus courants, assurant ainsi que vous puissiez commencer à utiliser OpenTofu rapidement, quel que soit votre environnement de travail.
Installation sur Linux
Pour les utilisateurs de Linux, OpenTofu offre des packages spécifiques pour différentes distributions. Pa exemple pour Debian et ses dérivées :
Pour les distributions dérivé de RHEL, l’installation se fait via le gestionnaire de paquets YUM :
Pour Alpine Linux :
Vous pouvez aussi l’installer avec asdf-vm avec les commandes suivantes :
Installation sur macOS
Les utilisateurs de macOS peuvent installer OpenTofu via Homebrew, un gestionnaire de paquets populaire pour macOS :
Installation via Snapcraft
Pour une installation multiplateforme, OpenTofu est également disponible via Snapcraft, permettant une installation facile sur n’importe quel système prenant en charge Snap :
Installation à Partir des Sources
Pour ceux qui préfèrent une approche plus personnalisée ou qui ont besoin de la toute dernière version, OpenTofu peut être compilé et installé à partir des sources. Cela nécessite un environnement de développement avec Go installé :
Vérification de l’installation
Une fois installée, vous pouvez vérifier qu’OpenTofu est correctement installé avec la commande suivante :
OpenTofu Test
La version 1.6.0 d’OpenTofu introduit une nouvelle fonctionnalité : tofu test
. Cette fonctionnalité améliore la manière dont les administrateurs
systèmes et les professionnels DevOps peuvent tester et valider leurs
configurations d’infrastructure.
Un exemple simple :
L’écriture de tests d’OpenTofu se fait de la même manière en utilisant des
blocs de code hcl
:
- Bloc
run
: Contient un cas de test unique qui exécutetofu apply
outofu plan
et évalue ensuite tous les blocsassert
. - Bloc
assert
: Définit des assertions qui vérifient si votre code a correctement créé l’infrastructure. - Bloc
module
: Permet de charger un module auxiliaire pour des tests plus élaborés. - Liste
expect_failures
: Liste des ressources qui devraient échouer à provisionner dans le test en cours.
Utilisation de tofu test
.
- Commande :
tofu test [options]
. - Fonctionnement : Exécute tous les fichiers
*.tftest.hcl
dans le répertoire courant ou dans un répertoire nommétests
.
Options de tofu test
.
- -test-directory=path : Définit le répertoire où se trouve les fichiers de tests.
- -filter=testfile : Spécifie un fichier de test individuel à exécuter.
- -var ‘foo=bar’ : Définit une variable d’entrée du module racine.
- -var-file=filename : Définit plusieurs variables à partir du fichier spécifié.
- -json : Modifie le format de sortie en JSON.
- -no-color : Désactive la sortie colorée.
- -verbose : Imprime le plan ou l’état pour chaque bloc de test exécuté.
Structure de Répertoire pour tofu test
.
OpenTofu supporte deux structures de répertoire pour les tests : plate ou imbriquée.
- Structure Plate : Les fichiers
*.tftest.hcl
sont placés directement à côté des fichiers*.tf
. - Structure Imbriquée : Les fichiers
*.tftest.hcl
sont placés dans un répertoire séparétests
.
Tester des Modules
Pour tester des modules, utilisez l’une des structures ci-dessus pour chaque
module. Exécutez tofu test -test-directory=./path/to/module
pour tester le
module concerné.
Migration de Terraform vers OpenTofu
Le passage de Terraform à OpenTofu 1.6.0 est un processus qui, bien que simple et direct, nécessite une attention particulière pour assurer une transition en douceur et sécurisée. Voici un guide étape par étape pour migrer de Terraform vers OpenTofu, basé sur la documentation officielle d’OpenTofu :
Étape 0 : Préparer un plan de récupération d’urgence
Avant de commencer la migration, il est important de disposer d’un plan de récupération d’urgence à jour et testé. Même si OpenTofu est très similaire à Terraform, la migration est un changement non négligeable qui affecte votre infrastructure.
Étape 1 : Appliquer tous les changements avec Terraform
Assurez-vous que toutes les modifications en attente sont appliquées avec
terraform apply
. Exécutez terraform plan
pour confirmer qu’aucun changement
supplémentaire n’est prévu.
Étape 2 : Installer OpenTofu
Suivez les instructions d’installation d’OpenTofu pour votre système
d’exploitation. Vérifiez ensuite que vous pouvez exécuter avec succès la
commande tofu --version
.
Étape 3 : Sauvegarder votre fichier d’état
Avant d’utiliser la commande tofu
sur votre code Terraform, assurez-vous de
sauvegarder votre fichier d’état. Si vous utilisez un fichier d’état local,
faites simplement une copie de votre fichier terraform.tfstate
.
Étape 4 : Initialiser OpenTofu
Exécutez tofu init
dans le répertoire contenant votre code Terraform.
OpenTofu téléchargera les providers et modules référencés dans votre
configuration.
Étape 5 : Inspecter le plan
Une fois OpenTofu initialisé, exécutez tofu plan
et assurez-vous qu’il n’y
a pas de changements en attente, comme à l’étape 1. Si des changements
inattendus apparaissent, revenez à Terraform pour résoudre les problèmes.
Étape 6 : Tester un petit changement
Avant d’utiliser OpenTofu pour des changements plus importants, testez-le
avec un changement mineur et non critique en utilisant tofu apply
.
En cas de problèmes : Revenir à Terraform et signaler les problèmes
Si vous rencontrez des problèmes lors de la migration, suivez ces étapes pour revenir à Terraform :
Créez une autre sauvegarde de votre fichier d’état. Exécutez terraform init
.
Exécutez terraform plan
et vérifiez qu’aucun changement inattendu n’est prévu.
Testez le retour avec un petit changement non critique. Si vous rencontrez un
bug, veuillez le signaler sur GitHub.
Conclusion
Information importante : Ce projet dispose du support de Partenaires Technologiques Importants : Des entreprises telles que CloudFlare, BuildKite, GitLab et Oracle soutiennent le projet.
Avec sa compatibilité avec Terraform, son engagement envers l’open-source,
et ses nouvelles fonctionnalités telles que tofu test
en font une option
viable à qui cherche une alternative à Terraform.
Mais rien de mieux que le tester en condition réelle pour vérifier les promesses annoncées par l’équipe d’OpenTofu. C’est ce que je vais faire dès maintenant et je publierai mes conclusions définitives dans les prochaines semaines.
Plus d’infos
- Site Officiel : opentofu.org
- Documentation : opentofu.org/docs
- Projet GitHub : github.com/opentofu/opentofu