Cours
L’infrastructure as code (IaC) est une approche qui automatise l’approvisionnement et la gestion de l’infrastructure via du code. Si l’on peut utiliser une configuration matérielle physique ou des outils interactifs pour créer une infrastructure, l’IaC apporte de sérieux atouts : gestion de versions, répétabilité et passage à l’échelle. Parmi les meilleurs outils IaC figure Terraform, une solution développée par HashiCorp en 2014 et utilisée par plus de 500 000 organisations dans le monde. Voyons comment fonctionne Terraform et comment l’utiliser dans des opérations IT modernes.
Avant de commencer avec Terraform, sachez qu’une familiarité avec au moins un grand fournisseur cloud (AWS, Azure, Google Cloud, etc.) est requise, car Terraform sert à gérer l’infrastructure cloud. Notre cours Understanding Cloud Computing offre d’excellentes bases si vous découvrez le cloud.
Qu’est-ce que Terraform ?
Terraform est un outil open source qui vous permet de définir des composants d’infrastructure et leurs relations au moyen d’un langage de configuration de haut niveau.
Dans les fichiers de configuration lisibles par l’humain de Terraform, vous exprimez l’état souhaité de votre infrastructure, et Terraform détermine automatiquement comment y parvenir. Ces fichiers peuvent être versionnés, partagés et réutilisés pour offrir une gestion cohérente de votre infrastructure, des ressources de calcul et de stockage jusqu’au DNS et aux fonctionnalités SaaS.
Terraform s’utilise avec de nombreux fournisseurs cloud, dans des architectures multicloud, ainsi qu’en environnements on-premise.
Fonctionnalités clés de Terraform
Regardons de plus près les aspects fondamentaux qui distinguent Terraform :
HashiCorp Configuration Language
Terraform utilise un langage de haut niveau appelé HashiCorp Configuration Language (HCL), conçu spécifiquement pour décrire l’infrastructure as code. Les langages de configuration de haut niveau reposent sur une syntaxe déclarative, plus abstraite et conviviale que les scripts bas niveau et la configuration manuelle. Vous avez peut‑être déjà rencontré ce type de langage avec des fichiers YAML ou JSON.
HCL suit une structure par blocs, où chaque bloc imbriqué représente des ressources et leurs configurations. Les ressources sont définies explicitement avec des noms et des attributs.
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Plan d’exécution
Après avoir défini l’état souhaité de votre infrastructure, Terraform génère un plan d’exécution. Ce plan récapitule les étapes que Terraform doit effectuer pour atteindre cet état, afin que vous puissiez vérifier les changements avant leur application. Contrôler le plan avant l’application évite les modifications indésirables, comme la suppression de ressources.
Gestion de l’état
Terraform maintient un fichier d’état qui suit automatiquement l’état courant de votre infrastructure et sert de source de vérité pour déterminer les changements à opérer. Par défaut, il est stocké localement sous le nom terraform.tfstate.
Providers
Les providers sont des plugins qui interagissent avec les API des plateformes cloud et d’autres services, et permettent à Terraform de gérer un large éventail de ressources. Les providers officiels sont développés et maintenus par HashiCorp et ses partenaires de confiance comme AWS, Azure, Google Cloud, GitHub, Datadog, etc. Il existe aussi des plugins développés par la communauté, disponibles sur le Terraform Registry ou sur GitHub.
Graphe de ressources
Terraform construit un graphe de ressources représentant les ressources de votre infrastructure et les relations entre elles. Ce graphe permet à Terraform de générer des plans efficacement, de gérer les dépendances et de garantir la création, la mise à jour et la suppression des ressources dans le bon ordre. C’est aussi un excellent moyen de visualiser votre infrastructure et de comprendre l’impact des changements envisagés.

Exemple de graphe de ressources. Source : documentation HashiCorp
Bien débuter avec Terraform
Parcourons notre premier workflow Terraform. Si vous débutez en DevOps ou dans le cloud en général, nous vous recommandons de suivre au préalable nos cours Understanding Cloud Computing et Introduction to DevOps.
Installation et configuration
Dans ce tutoriel Terraform, nous allons créer des ressources sur AWS. Si vous souhaitez suivre et n’avez pas de compte, rendez‑vous sur AWS pour vous inscrire.
- Téléchargez Terraform depuis le site officiel. Choisissez le binaire adapté à votre système d’exploitation et suivez les instructions d’installation.
- Une fois Terraform installé, ouvrez un nouveau terminal et exécutez terraform -version pour vérifier que l’installation s’est déroulée correctement.
- Installez l’AWS CLI
- Configurez l’AWS CLI en lançant aws configure dans votre terminal. Il vous sera demandé de saisir votre Access Key ID, votre Secret Access Key, votre région par défaut et votre format de sortie par défaut. Terraform saura y accéder automatiquement.
Première configuration Terraform
Créez un nouveau répertoire et votre premier fichier de configuration. Appelons‑le main.tf, et indiquons à Terraform que nous voulons créer une instance AWS EC2. Le code, écrit en HCL, ressemble à ceci :
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
Initialiser le projet
Initialisons maintenant notre projet Terraform en exécutant la commande suivante :
$ terraform init
Cette commande n’est à lancer qu’une fois : elle télécharge les plugins providers requis. Vous n’aurez pas à la relancer pour les changements ultérieurs.
Plan
Générons à présent notre plan d’exécution. Rappelez‑vous : le plan met en évidence les modifications que Terraform devra effectuer pour atteindre l’état souhaité (ici, une instance EC2 en cours d’exécution). Exécutez :
$ terraform plan
Vous devriez voir quelque chose comme ceci :
Terraform will perform the following actions:
# aws_instance.example will be created
+ resource "aws_instance" "example" {
+ ami = "ami-0c55b159cbfafe1f0"
+ instance_type = "t2.micro"
...
}
Plan: 1 to add, 0 to change, 0 to destroy.
Apply
Nous avons passé le plan en revue et décidons maintenant de l’exécuter pour provisionner les ressources. Dans votre terminal, lancez :
$ terraform apply
Il vous sera demandé de confirmer l’action. Tapez « yes » pour continuer.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Vous devriez voir le résultat suivant :
aws_instance.example: Creating...
aws_instance.example: Still creating... [10s elapsed] aws_instance.example:
Creation complete after 15s [id=i-0abcdef1234567890]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Félicitations, vous venez de provisionner votre première instance EC2 sur AWS avec Terraform !
Avantages de Terraform
Nous avons déjà évoqué plusieurs bénéfices de Terraform, comme la cohérence et la répétabilité, ainsi que la réduction des erreurs humaines grâce aux plans d’exécution.
Parmi les autres avantages :
- Mise à disposition rapide : Terraform peut créer et mettre à jour des ressources en parallèle, ce qui est particulièrement utile pour déployer rapidement des environnements de développement, de test et de préproduction.
- Collaboration renforcée : Associé à un système de gestion de versions comme Git, Terraform favorise la collaboration et la transparence sur votre infrastructure. Les changements peuvent être relus, approuvés et suivis comme du code applicatif.
- Reprise après sinistre efficace : En cas de problème, Terraform peut recréer rapidement l’intégralité de l’infrastructure à partir de zéro en réutilisant les mêmes fichiers de configuration.
- Support communautaire : Terraform encourage l’utilisation de modules, des configurations réutilisables qui se partagent et diffusent les bonnes pratiques de gestion d’infrastructure. Terraform bénéficie aussi d’une communauté active et d’un vaste écosystème de providers et de modules : vous trouverez sans doute de quoi couvrir votre stack, même la plus spécifique.
Cas d’usage courants de Terraform
Que vous soyez Data Engineer en charge de pipelines ou Data Scientist souhaitant déployer vos solutions en production, Terraform est un excellent outil pour répondre à vos besoins d’infrastructure. Voici quelques cas d’usage fréquents :
Gestion multicloud
Gérer une infrastructure répartie sur plusieurs fournisseurs cloud n’est pas toujours simple. Terraform vous permet de le faire avec un seul outil. Mieux encore, Terraform peut gérer des ressources on‑premise, ce qui en fait une solution idéale pour les organisations en environnement hybride.
Workflows CI/CD
Terraform s’intègre parfaitement aux workflows CI/CD, ce qui vous permet de déployer votre infrastructure dans votre chaîne de livraison logicielle. Vous pouvez aussi créer et détruire automatiquement des environnements de preview, de dev, de test ou de staging selon les besoins.
Clusters Kubernetes
Terraform peut gérer des clusters Kubernetes chez différents fournisseurs cloud comme AWS (EKS), Azure (AKS) ou GCP (GKE). Cela inclut la mise en place de l’infrastructure nécessaire, la gestion des ressources Kubernetes au sein du cluster et la mise à l’échelle en fonction de la charge.
Terraform vs autres outils IaC
Parmi les autres outils IaC populaires, on trouve Ansible, Chef, Puppet et AWS CloudFormation. Chacun a ses forces et faiblesses. Voici un aperçu :
| Fonctionnalité | Terraform | Ansible | Chef | Puppet | CloudFormation |
|---|---|---|---|---|---|
| Open source | Oui | Oui | Oui | Oui | Non |
| Syntaxe déclarative | Oui | Non | Non | Oui | Oui |
| Support multicloud | Oui | Oui | Oui | Oui | Non, AWS uniquement |
| Gestion de l’état | Oui | Non | Non | Oui | Oui |
| Plans d’exécution | Oui | Non | Non | Non | Non |
| Gestion des dépendances | Oui | Limitée | Limitée | Oui | Oui |
Comme on le voit, si tous ces outils sont puissants à leur manière, Terraform se distingue par l’étendue de ses fonctionnalités. Cette liste n’est toutefois pas exhaustive, et chaque outil couvre des cas d’usage légèrement différents selon les besoins. Par exemple, Ansible et sa nature procédurale conviennent particulièrement à la gestion de configuration et aux tâches ad hoc.
Conclusion
Depuis dix ans, Terraform aide des milliers d’organisations à gérer leur infrastructure IT. Grâce à son approche déclarative, à ses capacités d’automatisation et à son support des environnements multicloud, Terraform s’est imposé comme l’un des outils IaC les plus populaires et restera sans aucun doute un acteur majeur de la gestion d’infrastructure à mesure que l’adoption du cloud progresse.
Maintenant que vous maîtrisez les bases de Terraform, explorez des configurations plus avancées et des scénarios concrets. Consultez les tutoriels HashiCorp Terraform pour apprendre à utiliser Terraform sur des tâches courantes, ou découvrez notre article 14 outils essentiels de data engineering à utiliser en 2024 pour comprendre comment Terraform s’intègre dans la boîte à outils d’un Data Engineer.

Je suis un chef d'équipe technique axé sur les produits, spécialisé dans le développement de startups en phase de démarrage, du premier prototype à l'adéquation produit-marché et au-delà. Je suis infiniment curieux de savoir comment les gens utilisent la technologie, et j'aime travailler en étroite collaboration avec les fondateurs et les équipes interfonctionnelles pour donner vie à des idées audacieuses. Lorsque je ne construis pas de produits, je cherche l'inspiration dans de nouveaux coins du monde ou je me défoule au studio de yoga.
Foire aux questions
Terraform convient‑il aux petits projets ou est‑il surtout destiné aux grandes entreprises ?
Terraform est utile quel que soit la taille de votre projet ! Que vous ayez 5 ressources à gérer ou 1 000, vous en verrez clairement les bénéfices.
Combien coûte Terraform ?
Terraform est open source et gratuit. Gardez toutefois à l’esprit que votre ou vos fournisseurs cloud vous factureront les ressources provisionnées et gérées via Terraform.
Terraform peut‑il gérer des bases de données et d’autres services stateful ?
Oui, Terraform peut gérer des bases de données et d’autres services avec état. Vous pouvez définir des instances, des clusters et des configurations dans vos fichiers IaC.
Comment Terraform gère‑t‑il les secrets et les informations sensibles dans les fichiers de configuration ?
Terraform encourage les bonnes pratiques de gestion des secrets en prenant en charge les variables d’environnement, les variables chiffrées et les intégrations avec des gestionnaires de secrets comme HashiCorp Vault ou AWS Secrets Manager.