Qu’est-ce que Terraform ?

Gros plan sur des racks de serveurs en rendu 3D

Auteurs

Gregg Lindemulder

Staff Writer

IBM Think

Matthew Kosinski

Staff Editor

IBM Think

Qu’est-ce que Terraform ?

Terraform est un outil d'infrastructure open source en tant que code (IaC) créé par HashiCorp. Terraform permet aux développeurs de provisionner, mettre à jour et détruire des composants d'infrastructure sur site et dans le cloud, tels que des machines virtuelles et des clusters Kubernetes, en écrivant des fichiers de configuration lisibles par l'homme.

HashiCorp Terraform utilise un langage déclaratif plutôt qu'un langage procédural. Les utilisateurs décrivent l'état final souhaité pour les ressources d'infrastructure, et Terraform s'occupe du reste. Terraform crée automatiquement un plan d'exécution, identifie les dépendances entre les ressources et fournit les composants dans le bon ordre. Par exemple, si une machine virtuelle (VM) dépend d’un cloud privé virtuel (VPC), Terraform veille à ce que le VPC soit créé avant de provisionner la VM.

En revanche, avec un langage procédural, les développeurs doivent rédiger des instructions étape par étape pour mettre en place l'infrastructure.

Les fichiers de configuration Terraform peuvent être versionnés, réutilisés et partagés. Terraform gère les composants de bas niveau, tels que les ressources de calcul et de stockage, et les composants de haut niveau, tels que les entrées DNS (Domain Name System) et les fonctionnalités SaaS (Software as a Service) .

En février 2025, IBM a acquis HashiCorp et ses offres, y compris Terraform.

Design 3D de balles roulant sur une piste

Les dernières actualités et informations en matière d’IA 


La newsletter hebdomadaire Think vous apporte toute l’actualité sur l’IA, le cloud et bien d’autres sujets. 

Comment fonctionne Terraform ?

Terraform crée et gère des ressources sur des plateformes cloud et d’autres services via des interfaces de programmation des applications (API). Terraform fonctionne avec pratiquement toutes les plateformes ou tous les services dotés d’une API accessible, notamment Amazon Web Services (AWS), Microsoft Azure, Google Cloud, GitHub, IBM Cloud et Docker.

Le workflow Terraform de base comprend trois étapes :

  1. Écrire
  2. Planifier
  3. Appliquer

1. Écrire

Un développeur écrit un fichier de configuration lisible par l’homme pour définir les configurations de ressources pour l’infrastructure souhaitée. Le fichier est déclaratif, ce qui signifie que le développeur décrit l’infrastructure souhaitée, mais ne précise pas comment la provisionner.  

Par exemple, si un développeur souhaite provisionner une infrastructure pour déployer une application hébergée dans le cloud, il peut indiquer qu’il a besoin de machines virtuelles dans un cloud privé virtuel, avec des groupes de sécurité associés et un équilibreur de charge .

Un seul fichier de configuration peut gérer les ressources situées sur plusieurs fournisseurs de cloud et services.

2. Planifier

Terraform analyse à la fois la configuration écrite fournie par le développeur et l’état actuel de l’infrastructure de l’entreprise. Il crée ensuite un plan d'exécution décrivant la manière d'atteindre l'état final souhaité à partir de l'état actuel.

Le plan lui-même prend la forme d'une liste des infrastructures que Terraform va créer, mettre à jour ou détruire pour adapter le monde réel aux configurations décrites par les développeurs.

Considérez l’exemple précédent d’un développeur déployant une application sur des machines virtuelles dans un cloud privé virtuel. Le plan de Terraform pourrait inclure des actions telles que :

  • Approvisionnement de nouvelles machines virtuelles pour héberger l'application.

  • Modifier un groupe de sécurité existant pour autoriser le trafic vers les nouvelles machines virtuelles.

  • Provisionnement d'un équilibreur de charge pour distribuer le trafic entre les machines virtuelles.

Les développeurs peuvent passer en revue et modifier le plan avant que Terraform ne l’exécute.

3. Postuler

Lorsque le plan est approuvé, Terraform effectue les opérations proposées dans le bon ordre, en respectant toutes les dépendances des ressources. En d’autres termes, si la ressource A dépend de la ressource B, Terraform veille à ce que la ressource B soit créée avant la ressource A.

Par exemple, si un développeur met à jour les propriétés d’un VPC et modifie le nombre de machines virtuelles dans ce VPC, Terraform recrée le VPC avec des propriétés mises à jour avant de mettre à l’échelle les machines virtuelles.

Composants de Terraform

Voici les principaux composants de Terraform :

  • Fichiers de configuration
  • Modules
  • Fichiers d’état
  • Fournisseurs
  • Registres
  • Terraform CLI
Fichiers de configuration

Les fichiers de configuration permettent aux développeurs de définir les ressources souhaitées pour les environnements sur site et cloud. Ces fichiers indiquent à Terraform les fournisseurs à utiliser, l’infrastructure à créer et les données à récupérer. Les développeurs peuvent modifier, réutiliser et partager des fichiers de configuration.

Les développeurs peuvent écrire des fichiers de configuration en JSON ou en HCL (HashiCorp Configuration Language). HCL utilise une syntaxe déclarative : les développeurs décrivent l’infrastructure souhaitée plutôt que de spécifier comment la provisionner. HCL ressemble aux paires clé-valeur de JSON, mais il est optimisé pour la lisibilité humaine.

Modules

Les modules sont des conteneurs réutilisables pour plusieurs ressources qui sont couramment utilisés ensemble. Par exemple, un module peut contenir des machines virtuelles, des bases de données, des configurations réseau et des paramètres de sécurité, tout-en-un. Les modules sont stockés sous forme de collections de fichiers de configuration.

Les modules Terraform permettent aux développeurs de créer une infrastructure complexe sans devoir partir de zéro à chaque fois. Ils peuvent utiliser les modules qui décrivent déjà les organisations d'infrastructure dont ils ont besoin.

Fichiers d’état

Un fichier d’état Terraform est une représentation de l’état actuel de l’infrastructure, y compris les composants, les configurations et les relations entre les ressources.  

Lorsque Terraform crée un plan, il commence par comparer le fichier de configuration au fichier d’état. Cela permet à Terraform de déterminer les modifications à apporter pour mettre l’infrastructure actuelle en conformité avec la configuration souhaitée.

Fournisseurs

Les fournisseurs Terraform sont des plug-ins qui permettent à Terraform d’interagir avec des API pour des services et des plateformes externes. Les fournisseurs permettent à Terraform de gérer des ressources dans des environnements d’infrastructure en tant que service (IaaS), deplateforme en tant que service (PaaS) et de logiciel en tant que service (SaaS). Chaque fournisseur contient tout le code dont Terraform a besoin pour se connecter à un service, s’authentifier et provisionner des ressources.

Bien que les développeurs puissent écrire leurs propres fournisseurs, ils peuvent également utiliser des fournisseurs préexistants écrits par HashiCorp et d’autres utilisateurs de Terraform. Il existe des fournisseurs prédéfinis pour la plupart des principaux services cloud publics et privés, ainsi que pour les bases de données, les solutions de mise en réseau et d'autres outils courants.  

Registres

Le registre Terraform est un référentiel regroupant les fournisseurs, les modules, les règles politiques et les solutions.

Tout le monde peut publier et utiliser les ressources sur le registre Terraform public. Les entreprises peuvent également créer des registres privés pour partager leurs propres modules et ressources en interne.

Terraform CLI

L’interface de ligne de commande Terraform est l’outil d’interface de ligne de commande (CLI) permettant de gérer l’infrastructure avec Terraform. Les développeurs l'utilisent pour exécuter des commandes, générer des plans d'exécution, appliquer des modifications et interagir avec les principaux composants de Terraform tels que les fichiers de configuration, les fichiers d'état, les fournisseurs et les modules.

Comment les organisations utilisent-elles Terraform ?

Les entreprises utilisent Terraform pour provisionner et gérer l’infrastructure tout au long de son cycle de vie. Voici des cas d’utilisation courants :

  • Gestion des environnements multicloud
  • Gestion de l’infrastructure d'application
  • Infrastructure en libre-service
  • Gestion des politiques et de la conformité
  • Collaboration des équipes

Gestion des environnements multicloud

Les environnements multicloud peuvent être complexes, car chaque fournisseur de cloud possède ses propres interfaces, outils et workflow. De plus, les ressources clés peuvent être réparties sur plusieurs centres de données.

Les entreprises peuvent utiliser Terraform pour simplifier la gestion et l’orchestration des infrastructures multicloud à grande échelle. Plus précisément, Terraform permet aux entreprises d’utiliser le même langage de configuration pour provisionner et gérer les ressources de plusieurs fournisseurs de services dans un seul et même workflow.

Gestion de l’infrastructure d'application
 

Terraform peut déployer et gérer une infrastructure pour des applications multiniveau, ce qui permet aux entreprises de gérer les ressources pour chaque niveau dans un workflow unifié tout en respectant les dépendances.

Par exemple, une application multi-niveaux peut se composer d'un pool de serveurs web, d'une base de données, d'une couche API, de serveurs de mise en cache et d'une couche de routage. Terraform provisionnerait la base de données avant les serveurs web qui en dépendent.

Infrastructure en libre-service

Dans les grandes entreprises, les équipes d'opérations informatiques centralisées reçoivent généralement de nombreuses demandes d'infrastructure répétitives.

Les entreprises peuvent utiliser Terraform pour créer un modèle d'infrastructure en libre-service qui permet aux équipes produit de gérer leur propre infrastructure de manière indépendante. Par exemple, en utilisant des modules prédéfinis, les équipes peuvent déployer directement des composants standardisés et approuvés.

Les organisations peuvent également intégrer Terraform aux systèmes de gestion des tickets et aux pipelines DevOps d’intégration continue/de distribution continue (CI/CD), ce qui permet d’automatiser les nouvelles demandes de provisionnement d’infrastructure. Par exemple, lorsqu’un utilisateur envoie une demande d’infrastructure au système de tickets, Terraform peut lancer un workflow pour mettre automatiquement à jour les ressources en conséquence. 

Gestion des politiques et de la conformité

Terraform peut aider les entreprises à appliquer des politiques de sécurité et de conformité concernant les types de ressources que les équipes peuvent mettre à disposition et utiliser.

Par exemple, les entreprises peuvent utiliser des modules Terraform pour codifier les normes de déploiement et de gestion des Ressources dans l’entreprise. Lorsque d’autres équipes utilisent ces modules approuvés, elles ont l’assurance qu’elles déploient les ressources conformément aux pratiques organisationnelles.

Collaboration des équipes

Les entreprises peuvent stocker les fichiers de configuration Terraform dans un système de contrôle de version (VCS), ce qui permet aux équipes DevOps de collaborer sur le code, de vérifier les définitions, de suivre les modifications apportées à l’infrastructure et de revenir aux versions précédentes de l’infrastructure si nécessaire.

Terraform et Kubernetes

Kubernetes et Terraform sont des composants courants des environnements cloud et ils aident tous deux à automatiser les tâches liées à l'infrastructure. Cependant, la principale différence entre les deux est que Kubernetes se concentre sur les Workloads conteneurisées , tandis que Terraform gère toutes sortes de composants d'infrastructure, y compris les clusters eux-mêmes.

Kubernetes est une plateforme d'orchestration de conteneurs open source permettant de planifier et d'automatiser le déploiement, la gestion et la mise à l'échelle des applications conteneurisées. Terraform est un outil d'infrastructure en tant que code qui automatise le provisionnement et la gestion de l'infrastructure.

Bien qu'il s'agisse d'outils distincts dotés de fonctions différentes, ils fonctionnent souvent ensemble dans les environnements cloud. Par exemple, Terraform peut automatiser le provisionnement des clusters Kubernetes sur les plateformes cloud, tandis que Kubernetes gère le déploiement des applications au sein de ces clusters.

Terraform et Ansible

Terraform et Ansible sont tous deux des outils d’infrastructure en tant que code qui permettent d’automatiser les tâches d’infrastructure de base. Cependant, ils utilisent différents langages et servent souvent des objectifs différents. Terraform est utilisé pour provisionner des ressources d’infrastructure, tandis qu’Ansible est souvent utilisé pour gérer les configurations de ressources.

Terraform utilise un langage purement déclaratif, tandis qu'Ansible combine un langage déclaratif et un langage procédural. Dans la configuration procédurale, un développeur spécifie les étapes à suivre pour configurer les ressources dans l'état souhaité. La configuration procédurale demande plus de main-d’œuvre, mais elle peut également fournir plus de contrôle.

Les protocoles Ansible, écrits en YAML, permettent un contrôle précis des tâches telles que l’installation de logiciels et la mise à jour des paramètres système. Ansible dispose également d’une variété de modules préconfigurés pour les tâches courantes de gestion des configurations, notamment la gestion des packages et les mises à jour du système d’exploitation. De plus, Ansible peut appliquer des modifications aux ressources de manière dépendante, ce qui signifie qu’une fois qu’une opération a été appliquée la première fois, les applications ultérieures de la même opération ne modifient pas la ressource.

Ces caractéristiques combinées expliquent pourquoi Ansible est un choix courant pour la gestion des configurations.

Bien que Terraform puisse provisionner des ressources d’infrastructure, il ne peut pas gérer les logiciels dans ces ressources aussi efficacement qu’Ansible. Par exemple, Terraform peut définir une nouvelle machine virtuelle, y compris des propriétés telles que le type d’instance et la taille du disque, mais il ne peut pas mettre à jour le système d’exploitation sur la machine virtuelle.

Cependant, Terraform peut fonctionner main dans la main avec des outils de gestion de configuration tels qu’Ansible pour simplifier et rationaliser la configuration de l’infrastructure. Par exemple, une entreprise peut utiliser Terraform pour provisionner des machines virtuelles et Ansible pour configurer le logiciel sur ces machines.

Solutions connexes
IBM Turbonomic

Dimensionnez automatiquement votre infrastructure informatique existante pour améliorer les performances à moindre coût.

Découvrez IBM Turbonomic
Solutions d’AIOps

Découvrez comment l’IA appliquée aux opérations informatiques fournit les informations dont vous avez besoin pour parvenir à des performances métier exceptionnelles.

Découvrir les solutions AIOps
Les services de conseil en automatisation

Aller au-delà de la simple automatisation des tâches pour gérer des processus de haut niveau, en contact avec les clients et générateurs de revenus, grâce à une adoption et à une évolutivité intégrées.

Découvrir les services de conseil en automatisation d’IBM
Passez à l’étape suivante

Découvrez comment l’IA appliquée aux opérations informatiques fournit des informations permettant d’obtenir des performances métier exceptionnelles.

Découvrez Turbonomic Découvrir les solutions AIOps