Terraform : définition et caractéristiques
Terraform (TF) est un outil qui permet de construire, modifier et versionner une infrastructure (Infrastructure as Code). Contrairement à ce que l'on peut lire sur Internet, la technologie n'est pas « plateforme agnostique », mais elle permet d'utiliser plusieurs providers dans un même template de configuration. Il existe des plug-ins pour des providers de Cloud, des services d'hébergement, des SCM… Concrètement, Terraform permet de créer automatiquement son infrastructure, comme des machines virtuelles, des lambdas Amazon Web Services (AWS)… le tout, simplement, en trois étapes (write, plan et create).
C'est un outil open source, écrit en Go, avec une communauté active de plus de 1200 contributeurs, et qui repose sur une architecture basée sur les plug-ins. Terraform peut gérer des fournisseurs de services existants et populaires ainsi que des solutions internes personnalisées. Les fichiers de configuration indiquent à Terraform les composants nécessaires à l'exécution d'une seule application ou de l'ensemble de votre centre de données. Terraform génère un plan d'exécution décrivant ce qu'il fera pour atteindre l'état souhaité, puis l'exécute pour construire l'infrastructure décrite.
Selon sa documentation, lorsque votre configuration change, Terraform est capable de déterminer ce qui a changé et de créer des plans d'exécution incrémentiels qui peuvent être appliqués. L'infrastructure que Terraform peut gérer comprend des composants de bas niveau tels que les instances de calcul, le stockage et le réseau, ainsi que des composants de haut niveau tels que les entrées DNS, les fonctionnalités SaaS, etc. L'infrastructure est décrite à l'aide d'une syntaxe de configuration de haut niveau. Cela permet de créer un modèle de votre centre de données qui peut être versionné et traité comme n'importe quel autre code.
Points forts de la nouvelle version Terraform 0.15
Compatibilité des sources de données d'état à distance
L'équipe de Terraform a déclaré qu'afin d'aider les utilisateurs à adopter les nouvelles versions de Terraform dans leurs flux de travail sans avoir à mettre immédiatement à niveau les bases de code Terraform existantes, elle a assoupli les exigences relatives à l'analyseur de source de données d'état distant. Remarque : cette fonctionnalité a été rétroportée dans les versions 0.14.0, 0.13.6 et 0.12.30. Ces versions de Terraform et les suivantes seront en mesure d'accéder aux sources de données d'états distants dans les versions de Terraform jusqu'à 1.0.x au moment de la publication.
Stabilité du format de fichier State
Annoncé dans le cadre de la version 0.14 de Terraform, mais issu des travaux de l'équipe sur la version 0.15, le format de fichier State de Terraform est compatible avec les versions 0.14.x, 0.15.x et 1.0.x (lorsqu'elle sera publiée). Cette flexibilité devrait permettre aux clients de passer plus facilement d'une version à l'autre de Terraform.
Prise en charge de la console unifiée
Selon l'équipe, Terraform 0.15 apporte une amélioration fondamentale significative en unifiant l'expérience de la console sur toutes les plateformes prises en charge, avec une prise en charge cohérente de l'UTF-8 et un passage aux séquences de terminal virtuel sur Microsoft Windows.
Sensibilité basée sur les providers et fonctions sensibles
Terraform 0.15 étend la sensibilité des valeurs aux attributs des providers, ce qui permet aux développeurs de providers d'aider à protéger les valeurs contre leur impression sur la console. Terraform expurgera ces valeurs où qu'elles apparaissent. Cette version est également livrée avec une nouvelle fonction sensible (et une fonction non sensible correspondante) pour aider les utilisateurs à gérer le comportement de Terraform concernant les valeurs sensibles.
Niveaux de journalisation structurés
Terraform 0.15 est livré avec un comportement de journalisation amélioré. Les développeurs de providers utilisant le dernier SDK (v.2.4+) peuvent désormais cibler de manière fiable les messages vers des niveaux de journalisation spécifiques. De plus, les niveaux de journalisation de l'interface CLI de Terraform et du fournisseur peuvent être contrôlés indépendamment à l'aide de TF_LOG_CORE=level et TF_LOG_PROVIDER=level. Terraform 0.15 marque également la fin de plusieurs cycles de dépréciation en cours. Cela inclut un certain nombre de suppressions.
Comparaison entre Pulumi et Terraform
Pulumi est une plateforme open source d'infrastructure-as-code (IaC) qui permet aux entreprises d'automatiser la gestion de leurs environnements en nuage. erraform et Pulumi présentent de nombreuses similitudes, mais ils diffèrent sur quelques points essentiels. Tout d'abord, Pulumi est comme Terraform, en ce sens que vous créez, déployez et gérez l'infrastructure en tant que code sur n'importe quel cloud.
Mais là où Terraform nécessite l'utilisation d'un langage de programmation personnalisé, le HCL (HashiCorp Configuration Language), Pulumi vous permet d'utiliser des outils et des langages généraux familiers pour atteindre les mêmes objectifs. Comme Terraform, Pulumi est open source sur GitHub et son utilisation est gratuite. Terraform et Pulumi prennent tous deux en charge de nombreux fournisseurs de cloud computing, notamment AWS, Azure et Google Cloud, ainsi que d'autres services tels que CloudFlare, Digital Ocean, etc. Les principales différences entre Terraform et Pulumi sont les suivantes :
- Terraform exige que vous et votre équipe appreniez un nouveau langage personnalisé, le HCL. En revanche, Pulumi vous permet d'utiliser des langages que vous connaissez et aimez déjà, comme Python, Go, JavaScript, TypeScript et C# ;
- Terraform, par défaut, exige que vous gériez manuellement la concurrence et l'état, par le biais de ses "fichiers d'état". Pulumi, en revanche, utilise le service gratuit app.pulumi.com pour éliminer ces problèmes ;
- Pulumi offre une prise en charge approfondie des technologies natives du cloud, comme Kubernetes, et prend en charge des scénarios de déploiement avancés qui ne peuvent être exprimés avec Terraform ;
- etc.
Conversion à partir de Terraform
Pulumi propose un outil, tf2pulumi, qui convertit le langage de configuration HashiCorp de Terraform en Pulumi. Il est open source sur GitHub, et l'équipe de Pulumi estime qu'il fonctionne pour la plupart des projets qu'elle a testés.
Utiliser Pulumi et Terraform côte à côte
Pulumi permet de consommer l'état local ou distant de Terraform à partir de vos programmes Pulumi. Cela facilite l'adoption progressive, en vous permettant de continuer à gérer un sous-ensemble de votre infrastructure avec Terraform, tout en passant progressivement à Pulumi. Par exemple, supposons que vous souhaitiez conserver vos définitions de VPC et de réseau de bas niveau écrites dans Terraform afin d'éviter toute perturbation, ou peut-être parce que certains membres de l'équipe souhaitent rester sur Terraform pour l'instant et effectuer un changement dans le futur.
En utilisant le support de référence d'état de Pulumi, vous pouvez créer une infrastructure de niveau supérieur dans Pulumi qui consomme les informations VPC fournies par Terraform (comme l'ID VPC, les ID de sous-réseau, etc.), ce qui rend la coexistence de Pulumi et Terraform facile à automatiser.
Sources : Terraform 0.15, Pulumi vs. Terraform, Pulumi tf2pulumi
Et vous ?
Que pensez-vous des nouvelles fonctionnalités de Terraform 0.15 ?
Avez-vous déjà Pulumi et Terraform ? Si oui, quelle comparaison faites-vous entre les deux outils ? Lequel préférez-vous ?
Voir aussi
Pulumi publie Pulumi 3.0, la troisième version majeure de sa plateforme d'infrastructure en tant que code, qui prend en charge Google Cloud en tant que fournisseur natif d'infrastructure
Tutoriel pour découvrir Terraform, un outil qui permet de gérer son infrastructure par le code (Infrastructure as Code)
DevOps avec Azure – Partie 2 : Infrastructure as Code (IaC) avec Azure ARM, un billet d'Hinault Romaric
Les salaires des DevOps ont continué à augmenter pendant la pandémie, même si toutes les régions n'ont pas connu cette croissance, d'après une enquête de Puppet