Qu’est-ce que Terraform ?

Publié le 15 avril 2025
Mis à jour le 13 juillet 2026
Programmeur traitant des données sur un ordinateur portable dans une salle de serveurs
By Derek Robertson, Matthew Kosinski and Gregg Lindemulder

Définition de Terraform

Terraform est un produit d’infrastructure en tant que code (IaC) créé par HashiCorp et destiné aux entreprises. Il offre une interface unifiée de gestion du cycle de vie de l’infrastructure ainsi qu’un workflow unique pour le provisionnement des composants d’infrastructure sur plusieurs clouds (AWS, Azure et Google Cloud), réseaux, centres de données privés et environnements SaaS. 

Grâce à Terraform, les utilisateurs peuvent créer, mettre à jour et supprimer des composants d’infrastructure en rédigeant des fichiers de configuration lisibles par l’utilisateur. Ces fichiers de configuration utilisent 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. Il 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 provisionner 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 ainsi que les compartiments S3, 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. 

Comment fonctionne Terraform ?

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’humain afin de définir les configurations de ressources pour l’infrastructure souhaitée. Le fichier est déclaratif. Le développeur décrit l’infrastructure souhaitée, mais ne précise pas comment la provisionner.

Par exemple, supposons qu’un développeur souhaite provisionner une infrastructure pour déployer une application hébergée dans le cloud. Il peut préciser 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 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 l’environnement 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, modifier et valider 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, supposons qu’un développeur mette à jour les propriétés d’un VPC et modifie le nombre de machines virtuelles dans ce VPC. Terraform recrée le VPC avec les propriétés mises à jour avant de redimensionner 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 cloud et sur site. 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 ces 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 dispositions 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, comprenant 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 lui permet de déterminer les modifications à apporter pour faire correspondre l’infrastructure actuelle à la configuration souhaitée.

Fournisseurs

Les fournisseurs Terraform sont des plugins 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), de plateforme 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 de cloud public et privé, ainsi que pour les bases de données, les solutions de mise en réseau et d’autres outils courants.

Terraform permet également de gérer une infrastructure existante. Grâce au bloc « import », les développeurs peuvent intégrer à Terraform des ressources créées en dehors de l’outil, leur permettant ainsi de codifier et de contrôler l’ensemble de leur environnement, et pas seulement les nouvelles ressources. 

Registres

Le registre Terraform (Terraform Registry) 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 et les modèles disponibles sur le registre Terraform public. Pour utiliser un fournisseur ou un module issu de ce registre, les utilisateurs doivent l’ajouter à leurs configurations. Lorsqu’ils exécutent la commande « terraform init », Terraform télécharge automatiquement tout ce dont il a besoin.

Les entreprises peuvent également créer des registres privés pour partager leurs propres modules et ressources en interne.

Terraform CLI

La CLI 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 hybrides et multicloud
  • Gestion de l’infrastructure d'application
  • En libre-service pour les développeurs 
  • Gestion des politiques et de la conformité
  • Collaboration des équipes

Gestion des environnements hybrides et multicloud

Les environnements hybrides et multicloud peuvent s’avérer complexes, car chaque fournisseur de cloud dispose de ses propres interfaces, outils et workflows.Dans ce type de configuration, les ressources cloud critiques peuvent être réparties entre des clouds publics, des clouds privés et plusieurs centres de données.

Les entreprises peuvent utiliser Terraform pour simplifier la gestion et l’orchestration d’infrastructures cloud complexes à grande échelle. Plus précisément, Terraform permet aux entreprises d’utiliser le même langage de configuration pour provisionner et gérer des ressources sur les clouds publics, les clouds privés et les environnements sur site, le tout au sein d’un workflow unifié.

Pour aider à gérer l’infrastructure à grande échelle, Terraform Stacks aide les utilisateurs à automatiser et optimiser la coordination, le déploiement et la gestion du cycle de vie des configurations Terraform interdépendantes, réduisant ainsi le temps et les surcharges liés à la gestion de l’infrastructure. 

Les Stacks remplacent la structure traditionnelle des modules racine de Terraform par une nouvelle architecture basée sur des composants, développée à partir des modules Terraform. Grâce aux Stacks, les utilisateurs peuvent provisionner et coordonner le cycle de vie de l’infrastructure à l’échelle, offrant ainsi une approche structurée et réutilisable qui va au-delà du concept d’infrastructure en tant que code.

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.

Libre-service pour les développeurs

Le libre-service pour les développeurs dépasse désormais le simple provisionnement de l’infrastructure pour englober l’intégralité du cycle de vie des applications, de la configuration de l’environnement au déploiement et à l’exploitation continue.

Terraform constitue le socle de ce modèle moderne de libre-service. Il s’intègre à des portails de développement tels que Backstage, Port et Cortex ; à des systèmes ITSM tels que ServiceNow et Jira ; ainsi qu’à des plateformes de pipelines CI/CD telles que GitHub Actions et Jenkins.

Pour les équipes qui préfèrent rester dans les workflows Terraform, Waypoint fait office de portail libre-service pour développeurs natif de Terraform, offrant des expériences de déploiement d’applications cohérentes et régies par des politiques. 

Sur AWS, Azure et GCP, Terraform fait office de couche d’intégration et de contrôle qui unifie ces points d’entrée, permettant ainsi aux développeurs de travailler plus rapidement tout en préservant la gouvernance et la cohérence opérationnelle.

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.

Sentinel, le cadre de politique sous forme de code (policy-as-code) de HashiCorp destiné à mettre en œuvre une gouvernance fine et basée sur la logique à l’échelle de l’infrastructure, propose une bibliothèque de politiques prédéfinies offrant des contrôles prêts à l’emploi (par exemple, des correspondances avec la norme NIST SP-80053). Ces politiques aident les équipes à respecter les contraintes de conformité courantes sans avoir à rédiger toutes les politiques à partir de zéro.

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 le code Terraform et les fichiers de configuration dans un système de contrôle de version (VCS), tel qu’un référentiel Git. Cette configuration permet aux équipes DevOps de collaborer sur le code, d’examiner les définitions, de suivre les modifications apportées à l’infrastructure et de revenir à des versions antérieures de celle-ci si nécessaire.

HashiCorp Terraform et Red Hat Ansible 

Terraform et Ansible sont souvent utilisés conjointement pour étendre l’automatisation au-delà du provisionnement de l’infrastructure. Terraform excelle dans le provisionnement de l’infrastructure, en préparant et en mettant en place des ressources complexes pour les environnements cloud et hybrides. Ansible est un outil puissant de gestion de la configuration, permettant de modifier et de maintenir l’infrastructure existante de manière cohérente. 

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.

Ces deux outils interviennent à des étapes différentes mais liées du cycle de vie de l’infrastructure, ce qui en fait des solutions idéales pour les entreprises qui recherchent une cohérence entre leurs différents environnements.

Les intégrations entre Terraform et Ansible contribuent à combler le fossé entre la création de ressources et la gestion de la configuration. Par exemple, les actions Terraform peuvent déclencher un événement qui active la capacité d’automatisation pilotée par les événements de la plateforme Ansible Automation Platform (AAP) afin de lancer des workflows d’automatisation dynamiques depuis Ansible, le tout à l’aide d’une seule commande « apply » de Terraform. 

Cette interconnectivité permet d’unifier les ensembles d’outils d’infrastructure et de réduire les frictions dans les opérations du jour 2, telles que l’application de correctifs, le dimensionnement et la mise hors service. Ensemble, Terraform et Ansible contribuent à garantir la cohérence et la fiabilité de l’infrastructure et des applications à chaque étape de leur cycle de vie.

IBM DevOps

Qu’est-ce que le DevOps ?

Andrea Crawford présente le DevOps, démontre sa valeur, et explique de quelle façon les pratiques et les outils DevOps vous aident à faire progresser vos applications dans l’ensemble du pipeline de livraison logiciel, de l’idéation à la production. Dirigé par des leaders d’opinion d’IBM, le programme a pour but d’aider les chefs d’entreprise à acquérir les connaissances nécessaires pour donner la priorité aux investissements dans l’IA capables de stimuler la croissance.

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és, 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 le dimensionnement 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 que ces outils soient distincts et aient des fonctions différentes, ils fonctionnent souvent ensemble dans les backends 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.

Auteurs

Derek Robertson

Staff Writer

IBM Think

Matthew Kosinski

Staff Editor

IBM Think

Gregg Lindemulder

Staff Writer

IBM Think