Qu'est-ce que Terraform ?
Tout ce que vous devez savoir sur Terraform, l'outil qui permet aux programmeurs de créer, modifier et versionner une infrastructure de façon sûre et efficace.
Arrière-plan noir et bleu
Qu'est-ce que Terraform ?

Terraform est un outil open source d'infrastructure en tant que code (IaC) créé par HashiCorp.

Outil de codage déclaratif, Terraform permet aux développeurs d'utiliser un langage de configuration de haut niveau appelé HCL (HashiCorp Configuration Language) qui permet de décrire l'état final souhaité de l'infrastructure cloud ou sur site pour l'exécution d'une application. Terraform génère ensuite un plan permettant d'atteindre cet état final et exécute le plan pour mettre à disposition l'infrastructure.

Utilisant une syntaxe simple, Terraform peut mettre à disposition une infrastructure dans plusieurs centres de données cloud et sur site et peut remettre à disposition des infrastructures de façon sécurisée et efficace en réponse aux changements de configuration. Toutes ces qualités en font actuellement l'un des outils d'automatisation d'infrastructure les plus populaires. Si votre organisation prévoit de déployer un environnement de cloud hybride ou multicloud, vous voudrez ou devrez probablement vous familiariser avec Terraform.

Pourquoi l'infrastructure en tant que code (IaC) ?

Pour mieux comprendre les avantages de Terraform, il est utile de comprendre d'abord les avantages de l'infrastructure en tant que code (IaC). L'IaC permet aux développeurs de codifier l'infrastructure d'une manière qui automatise et accélère la mise à disposition et la rend reproductible. Il s'agit d'un élément clé des pratiques Agile et DevOps telles que le contrôle de version, l'intégration continue et le déploiement continu.

Avec l'infrastructure en tant que code, vous pouvez :

  • Augmenter la vitesse : L'automatisation est plus rapide que la navigation manuelle dans une interface lorsque vous avez besoin de déployer et/ou de connecter des ressources.

  • Améliorer la fiabilité : Si votre infrastructure est vaste, il est facile de mal configurer une ressource ou de fournir des services dans le mauvais ordre. Avec l'IaC, les ressources sont toujours mises à disposition et configurées exactement comme déclaré.

  • Empêcher la dérive de la configuration : La dérive de la configuration se produit lorsque la configuration qui a mis à disposition votre environnement ne correspond plus à l'environnement réel. (Voir « Infrastructure non modifiable » ci-dessous)

  • Encourager l'expérimentation, les tests et l'optimisation : Parce que l'infrastructure en tant que code accélère et simplifie énormément la mise à disposition de nouvelles infrastructures, vous pouvez effectuer et tester des changements expérimentaux sans investir beaucoup de temps et de ressources. Si les résultats vous plaisent, vous pouvez rapidement mettre la nouvelle infrastructure en production.

Regardez la vidéo ci-dessous « Qu'est-ce que l'infrastructure en tant que code ? » pour en savoir plus :

Pourquoi Terraform ?

Il existe quelques raisons essentielles pour lesquelles les développeurs choisissent d'utiliser Terraform plutôt que d'autres outils d'infrastructure en tant que code :

  • Open source : Terraform a l'appui de grandes communautés de contributeurs qui créent des plug-ins pour la plateforme. Quel que soit le fournisseur cloud que vous utilisez, il est facile de trouver des plug-ins, des extensions et un support professionnel. Cela signifie également que Terraform évolue rapidement et bénéficie en permanence de nouveaux avantages et améliorations.

  • Compatible avec toutes les plateformes : Cela signifie que vous pouvez l'utiliser avec n'importe quel fournisseur de services cloud. La plupart des autres outils IaC sont conçus pour fonctionner avec un seul fournisseur cloud.

  • Infrastructure non modifiable : La plupart des outils d'infrastructure en tant que code créent une infrastructure modifiable, ce qui signifie que l'infrastructure peut être modifiée pour s'adapter à des changements tels qu'une mise à niveau du middleware ou un nouveau serveur de stockage. Le danger d'une infrastructure modifiable est la dérive de la configuration : Au fur et à mesure que les changements s'accumulent, la mise à disposition effective de différents serveurs ou d'autres éléments d'infrastructure dérive, c'est-à-dire qu'elle s'écarte de la configuration d'origine. Les bogues ou les problèmes de performance deviennent difficiles à diagnostiquer et à corriger. Terraform met à disposition une infrastructure non modifiable, ce qui signifie qu'à chaque modification de l'environnement, la configuration en cours est remplacée par une nouvelle configuration qui tient compte de la modification. L'infrastructure est de nouveau mise à disposition. Mieux encore, les configurations précédentes peuvent être conservées en tant que versions pour permettre les annulations si nécessaire ou si vous le souhaitez.
Modules Terraform

Les modules Terraform sont de petites configurations réutilisables de Terraform pour plusieurs ressources d'infrastructure, qui sont utilisées ensemble. Les modules Terraform sont utiles car ils permettent d'automatiser des ressources complexes avec des constructions réutilisables et configurables. Le fait d'écrire même un fichier Terraform très simple crée un module. Un module peut appeler d'autres modules, appelés modules enfants, qui peuvent accélérer l'assemblage de la configuration et le rendre plus concis. Les modules peuvent également être appelés plusieurs fois, que ce soit dans une même configuration ou dans des configurations distinctes.

Fournisseurs Terraform

Les fournisseurs Terraform sont des plug-ins qui implémentent des types de ressource. Les fournisseurs contiennent tout le code requis pour l'authentification et la connexion à un service, généralement d'un fournisseur de cloud public, pour le compte de l'utilisateur. Vous pouvez trouver des fournisseurs pour les plateformes et les services cloud que vous utilisez, les ajouter à votre configuration, puis utiliser leurs ressources pour mettre à disposition une infrastructure. Il existe des fournisseurs pour la quasi-totalité des principaux fournisseurs de cloud, pour les offres SaaS, etc., qui sont développés et/ou pris en charge par la communauté Terraform ou des organisations individuelles. Reportez-vous à la documentation Terraform  (lien externe à ibm.com) pour obtenir une liste détaillée.

Terraform et Kubernetes

Il y a parfois une confusion entre Terraform et Kubernetes, et sur ce qu'ils font réellement. Il ne s'agit pas d'alternatives l'un à l'autre et ils fonctionnent efficacement ensemble.

Kubernetes est un système d'orchestration de conteneurs open source qui permet aux développeurs de planifier des déploiements sur les nœuds d'un cluster de calcul et de gérer activement les charges de travail conteneurisés afin de garantir que leur état correspond aux intentions des utilisateurs.

Terraform, quant à lui, est un outil d'infrastructure en tant que code dont la portée est beaucoup plus large. Il permet aux développeurs d'automatiser une infrastructure complète s'étendant sur plusieurs clouds publics et privés.

Terraform peut automatiser et gérer les capacités de niveau IaaS (infrastructure en tant que service), PaaS (plateforme en tant que service), ou même SaaS (logiciel en tant que service) et construire toutes ces ressources sur tous ces fournisseurs en parallèle. Vous pouvez utiliser Terraform pour automatiser la mise à disposition de Kubernetes, en particulier les clusters Kubernetes gérés sur des plateformes cloud, et pour automatiser le déploiement d'applications dans un cluster.

Terraform et Ansible

Terraform et Ansible sont tous les deux des outils d'infrastructure en tant que code, mais il existe deux différences significatives entre les deux :

  • Alors que Terraform est un outil purement déclaratif (voir ci-dessus), Ansible combine à la fois la configuration déclarative et la configuration procédurale. Dans une configuration procédurale, vous définissez les étapes ou la manière précise à utiliser pour mettre à disposition une infrastructure à l'état souhaité. La configuration procédurale demande plus de travail,  mais elle assure plus de contrôle.

  • Terraform est un outil open source alors qu'Ansible est développé et commercialisé par Red Hat.
Solutions connexes
IBM Cloud® Schematics

IBM Cloud® Schematics permet l'automatisation en offrant des modèles Terraform déclaratifs pour garantir la mise à disposition de l'infrastructure cloud souhaitée.

Explorer IBM Cloud® Schematics
Ressources Qu'est-ce que l'infrastructure en tant que code (IaC) ?

L'infrastructure en tant que code (IaC) automatise le provisionnement de l'infrastructure pour permettre à votre entreprise de développer, de déployer et de faire évoluer ses applications cloud plus rapidement, avec moins de risques et à moindre coût.

Qu'est-ce que Kubernetes ?

Kubernetes est une plateforme d'orchestration de conteneurs open source qui automatise le déploiement, la gestion et la mise à l'échelle des applications. Découvrez comment Kubernetes permet un développement cloud natif rentable.

Qu'est-ce que l'infrastructure en tant que service (IaaS) ?

Une introduction à l'IaaS, à ses composants, ses avantages, sa tarification et sa relation avec la PaaS (plateforme en tant que service), le SaaS (logiciel en tant que service), le BMaaS, les conteneurs et les solutions sans serveur.

Pour aller plus loin

IBM Cloud® Schematics est l'outil gratuit d'automatisation du cloud d'IBM basé sur Terraform.IBM Cloud® Schematics permet de gérer entièrement l'automatisation d'infrastructure basée sur Terraform : vous passez ainsi plus de temps à créer des applications et moins de temps à construire des environnements.

En savoir plus sur IBM Cloud® Schematics