Terraform

menu icon

Terraform

Tout ce que vous devez savoir sur Terraform, outil qui permet aux programmeurs de créer, modifier et versionner une infrastructure de façon sûre et efficace.

Qu'est-ce que Terraform ?

Terraform est un outil open source d'Infrastructure as Code (IaC) créé par HashiCorp.

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

Terraform possède de nombreux avantages : il utilise une syntaxe simple, il peut mettre à disposition une infrastructure dans plusieurs clouds et centres de données sur site, et il 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 entreprise a l'intention de déployer un environnement de cloud hybride ou multicloud, vous aurez probablement envie ou besoin de découvrir Terraform.

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

Pour mieux comprendre les avantages de Terraform, il est utile de bien comprendre d'abord les avantages de l'infrastructure en tant que code. 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 composant clé des pratiques Agiles et DevOps telles que le contrôle des versions, l'intégration continue et le déploiement continu.

Avec l'infrastructure en tant que code :

  • Vous augmentez 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.
  • Vous améliorez la fiabilité : Si vous avez une infrastructure de grande taille, il est très facile de mal configurer une ressource ou de mettre à disposition des services dans le mauvais ordre. Avec l'IaC, les ressources sont toujours mises à disposition et configurées exactement comme déclaré.
  • Vous empêchez 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 immuable" plus loin.)
  • Vous encouragez l'expérimentation, le test 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 ou de ressources. Si les résultats vous plaisent, vous pouvez rapidement mettre à l'échelle la nouvelle infrastructure pour la production.

Regardez “What is Infrastructure as Code?” pour une découverte plus approfondie :

Pourquoi Terraform ?

Il existe plusieurs raisons majeures pour lesquelles les développeurs choisissent d'utiliser Terraform de préférence à d'autres outils IaC :

  • 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.
  • Indépendant de la plateforme : Vous pouvez l'utiliser avec tout fournisseur de services cloud. La plupart des autres outils IaC sont conçus pour fonctionner avec un seul fournisseur cloud.
  • Infrastructure immuable : La plupart des outils IaC créent une infrastructure non immuable, ce qui signifie que l'infrastructure peut changer pour prendre en charge des modifications telles qu'une mise à niveau du middleware ou un nouveau serveur de stockage. Le danger d'une infrastructure non immuable est une 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. Terraforme met à disposition une infrastructure immuable, 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 Terraform réutilisables 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 enfant, 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 de Terraform

Les fournisseurs de 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. Pour une liste détaillée, reportez-vous à la documentation Terraform  (lien externe à IBM).

Comparatif Terraform - 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. Il gère activement des charges de travail conteneurisées pour s'assurer que leur état correspond aux intentions des utilisateurs.

Terraform, quant à lui, est un outil d'infrastructure as 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 des fonctionsInfrastructure-as-a-Service (IaaS),Platform-as-a-Service (PaaS)ou mêmeSoftware-as-a-Service (SaaS)et créer 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 automatiser le déploiement d'applications dans un cluster.

Comparatif Terraform - Ansible

Terraform et Ansible sont tous les deux des outils IaC, mais il existe deux différences significatives entre les deux :

  • Alors que Terraform est un outil purement déclaratif (voir précédemment), Ansible combine à la fois la configuration déclarative et 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 offre plus de contrôle.
  • Terraform est open source, Ansible est développé et commercialisé par Red Hat.

IBM et Terraform

IBM Cloud Schematics est l'outil d'automatisation de cloud gratuit 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.

Pour en savoir plus sur l'utilisation d'IBM Cloud Schematics.

Pour plus d'informations sur Terraform, inscrivez-vous pour obtenir un IBMid et créez votre compte IBM Cloud.