Aller au contenu
Infrastructure as Code high

Formation Terraform : apprendre l'Infrastructure as Code

21 min de lecture

logo terraform

Terraform est l'outil d'Infrastructure as Code de HashiCorp qui provisionne une infrastructure à partir d'une description de l'état voulu, écrite en HCL, et n'applique que l'écart avec la réalité. Cette formation gratuite vous mène du premier terraform apply aux modules versionnés et aux certifications HashiCorp : 9 modules pédagogiques, 91 leçons et 7 quiz, soit environ 39 heures de travail. Les manipulations tournent sur KVM/libvirt, donc sans compte cloud ni carte bancaire. Elle s'adresse aux administrateurs système, aux profils DevOps et aux développeurs qui doivent créer de l'infrastructure autrement qu'à la main.

Qu'est-ce que Terraform et comment fonctionne-t-il ?

Section intitulée « Qu'est-ce que Terraform et comment fonctionne-t-il ? »

Terraform provisionne des ressources d'infrastructure (machines virtuelles, réseaux, volumes, services cloud) à partir de fichiers .tf décrivant l'état souhaité, puis calcule et applique les seules différences avec l'état réel. Il est développé par HashiCorp et pilote plus d'un millier de providers, du cloud public à l'hyperviseur local.

Le cycle tient en trois commandes. terraform init télécharge les providers et prépare le répertoire de travail. terraform plan compare votre description à ce que Terraform a mémorisé et affiche le diff exact avant toute action. terraform apply exécute ce diff. Rien n'est créé par surprise : le plan est la garantie de relecture.

Cette mémoire porte un nom, le state. C'est un fichier JSON qui enregistre la correspondance entre chaque bloc de votre code et l'objet réellement créé chez le fournisseur. Sans lui, Terraform ne saurait pas qu'une ressource lui appartient déjà et la recréerait à chaque exécution. Comprendre le state, savoir le stocker à distance et le verrouiller est le vrai passage obligé du parcours, bien plus que la syntaxe.

Voici à quoi ressemble le code que vous écrirez dès la troisième heure, ici une machine virtuelle sur libvirt :

resource "libvirt_domain" "vm" {
name = "ma-premiere-vm"
memory = 1024
vcpu = 1
disk {
volume_id = libvirt_volume.os.id
}
network_interface {
network_id = libvirt_network.reseau.id
}
}

Vous ne décrivez aucune commande, seulement un résultat. La vérification se fait hors de Terraform, ce qui évite de croire sur parole ce que l'outil annonce :

Fenêtre de terminal
terraform apply -auto-approve
# La VM doit apparaître dans la liste de l'hyperviseur
virsh list --all

Reste à savoir ce que Terraform ne fait pas, parce que c'est là que se prennent les mauvaises décisions d'architecture. Il ne configure pas l'intérieur d'une machine : installer un paquet, écrire un fichier de configuration, redémarrer un service relève d'Ansible. Il n'orchestre pas de conteneurs, c'est le rôle de Kubernetes. Terraform crée, Ansible configure : le premier s'arrête à la porte de la machine.

Que contient la formation Terraform, et combien de temps demande-t-elle ?

Section intitulée « Que contient la formation Terraform, et combien de temps demande-t-elle ? »

La formation compte 9 modules pédagogiques, 91 leçons et 7 quiz de fin de module, pour environ 39 heures de travail effectif. Elle est gratuite, accessible sans inscription, et sa banque d'entraînement compte 217 questions.

Ce que vous suivezVolume
Modules pédagogiques9
Leçons91
Quiz de fin de module7
Durée estiméeenviron 39 heures
Banque de questions217
Terrain de manipulationKVM/libvirt, sans compte cloud
Version de référenceTerraform 1.14.x
Certifications viséesAssociate (004), Professional

Ces heures ne mesurent pas un temps de lecture. Elles comptent la lecture, la réflexion et surtout la reproduction des manipulations sur votre propre machine, parce qu'un outil de provisionnement se juge à ce qu'il crée réellement, pas au nombre de pages parcourues.

Voici la répartition module par module, utile pour caler votre rythme sur les semaines dont vous disposez :

ModuleLeçonsDuréeCe que vous en retirez
Découvrir103 hLe modèle déclaratif, l'installation, la CLI, la structure d'un projet
Premières infras94 h 40Votre premier apply sur KVM, une VM, un réseau, un destroy propre
Écrire du code259 h 40Variables, outputs, expressions, count, for_each, lifecycle, données sensibles
Gérer le state124 h 45Backends distants, verrouillage, commandes terraform state, diagnostic
Modules115 h 15Créer, tester, versionner et publier du code réutilisable
Environnements94 h 40Workspaces, séparation dev/staging/prod, organisation du dépôt, automation
AWS73 h 20Le passage du lab local à un vrai fournisseur : EC2, IAM, backend S3, drift
HCP Terraform1 quiz3 minValidation des connaissances sur l'exécution distante
Certifications73 h 35Programmes officiels, aide-mémoire, exercices chronométrés

Deux précisions honnêtes sur ce tableau. Le module Écrire du code pèse à lui seul un quart de la formation : c'est normal, la maîtrise du HCL conditionne tout le reste. Et la section HCP Terraform compte huit guides supplémentaires, dont seul le quiz final est pour l'instant inscrit dans le suivi de progression ; ils restent accessibles depuis la barre latérale, à la présentation d'HCP Terraform.

Chaque leçon porte une case à cocher, et votre progression est enregistrée dans votre navigateur, sans compte ni inscription. Aucune donnée ne part sur un serveur.

La page Mon parcours affiche le programme complet, module par module, avec le pourcentage d'avancement. En haut de chaque leçon, un bandeau rappelle où vous en êtes ; en bas, un bouton marque la leçon comme lue et vous emmène à la suivante. Vous pouvez donc interrompre la formation et la reprendre exactement là où vous l'aviez laissée, y compris plusieurs semaines plus tard.

La formation se lit dans l'ordre si vous débutez, et se picore si vous cherchez un point précis. Chaque module a sa page d'accueil, ses guides et son quiz de fin.

Les deux premiers modules forment le socle. Vous ne provisionnez rien dans le premier, vous comprenez pourquoi le déclaratif change la nature du travail. Le second vous fait créer une infrastructure réelle et la détruire proprement.

  • Découvrir Terraform : le déclaratif face à l'impératif, les providers, les resources, les data sources, le cycle init, plan, apply, destroy, l'installation et la CLI.
  • Premières infrastructures : la première VM sur KVM, un réseau virtuel, les variables et outputs, la destruction sans reliquat, le débogage d'un apply qui échoue.

Écrire du code que vous oserez relire dans six mois

Section intitulée « Écrire du code que vous oserez relire dans six mois »

C'est le cœur du métier et le plus gros module du parcours. La différence entre un fichier qui marche une fois et un code d'équipe se joue ici.

Trois modules traitent du moment où le code cesse d'être personnel : la mémoire partagée, la réutilisation et la séparation des environnements.

  • Gérer le state : le rôle du fichier, les backends distants, le verrouillage, les commandes terraform state list, show, mv et rm, la sauvegarde et le diagnostic quand tout est désynchronisé.
  • Créer des modules : structure standard, interface d'entrée et de sortie, module local, Registry public, terraform test, versionnement par tags Git, bonnes pratiques et anti-patterns.
  • Organiser les environnements : workspaces et leurs limites réelles, séparation dev, staging et prod, variables par environnement, monorepo ou dépôt par stack, exécution en automation.

Le lab libvirt vous apprend Terraform sans facture. Un vrai fournisseur ajoute pourtant des problèmes que le local ne pose jamais : identité, permissions, état partagé, dérive.

  • De libvirt à AWS : provider AWS et première instance EC2, AMI, subnet et security groups, rôles et policies IAM, backend S3 pour le state distant, launch template et autoscaling, import et moved face à la dérive.
  • HCP Terraform : l'exécution distante, les workspaces partagés, les variable sets, les dynamic credentials OIDC et le Policy as Code. Toute la section fonctionne avec l'édition gratuite.

La certification n'est pas obligatoire pour être compétent, mais elle structure la révision et prouve la compétence à un employeur.

  • Choisir sa certification : ce que valide l'Associate (004), ce qu'ajoute la Professional, et laquelle viser selon votre expérience réelle.

Pourquoi apprendre Terraform plutôt que provisionner à la main ?

Section intitulée « Pourquoi apprendre Terraform plutôt que provisionner à la main ? »

Parce que la console graphique ne laisse aucune trace exploitable : elle ne dit ni ce qui a été fait, ni par qui, ni comment le refaire. Le tableau ci-dessous oppose le geste manuel et son équivalent Terraform, ligne à ligne. Lisez-le comme une liste de problèmes que vous avez probablement déjà rencontrés.

Ce que vous faites à la mainCe que Terraform fait pour vous
Créer chaque VM via la consoleDéclarer « 3 VMs » et laisser Terraform les créer
Espérer que staging ressemble à la prodLe même code HCL produit la même infrastructure
Deviner ce qui a changé depuis hierterraform plan affiche le diff exact avant d'agir
Reconstruire après un incidentterraform apply recrée l'ensemble depuis le code
Documenter l'infrastructure à partLe code est la documentation, et il est versionné dans Git

Le point décisif est le troisième. Un script shell exécute des commandes et espère qu'elles passent ; Terraform vous montre d'abord ce qu'il va détruire, modifier et créer. Sur une infrastructure de production, cette relecture avant exécution est ce qui sépare un changement maîtrisé d'un incident.

Quels prérequis faut-il avant de commencer Terraform ?

Section intitulée « Quels prérequis faut-il avant de commencer Terraform ? »

Trois compétences suffisent pour démarrer : être à l'aise en ligne de commande Linux, savoir lire du HCL, et disposer d'un hyperviseur KVM/libvirt fonctionnel. Le reste s'apprend ici.

La ligne de commande n'est pas négociable : tout le parcours se joue dans un terminal, et les erreurs de Terraform s'y lisent. Si les permissions, les chemins et les services systemd vous sont encore flous, commencez par les fondamentaux Linux.

Le HCL mérite un détour préalable, parce que Terraform ne l'enseigne pas : il le suppose acquis. Le site consacre une section entière au langage lui-même, indépendamment de Terraform. Prenez dans l'ordre Découvrir HCL, la syntaxe de base, les types et collections, les expressions, les variables et valeurs nommées puis les fonctions. Comptez une à deux semaines.

Deux compétences sont recommandées sans être bloquantes. Les bases réseau TCP/IP rendent lisibles les ressources de sous-réseau, de routage et de pare-feu que vous manipulerez dès le module AWS. Et Git devient indispensable au module Modules, où le versionnement repose entièrement sur des tags.

Cette formation a des opinions, et il vaut mieux les connaître avant de s'y engager. Les voici, avec ce qui les justifie.

Le plan se lit, ligne par ligne, avant chaque apply. terraform apply sans lecture préalable du plan est la première cause de destruction accidentelle. Un -auto-approve a sa place dans un pipeline dont le plan a déjà été relu et approuvé, jamais sur un poste de travail branché sur la production.

Le state distant dès qu'il y a deux personnes. Un terraform.tfstate local est un point de défaillance unique et une garantie de conflit. Backend distant, verrouillage actif, et le fichier reste hors de Git : il contient des valeurs en clair, y compris des mots de passe générés par les providers.

Les versions s'épinglent, toutes. required_version pour Terraform, contrainte de version pour chaque provider, tag pour chaque module, et le fichier .terraform.lock.hcl commité. Sans cela, votre infrastructure change parce qu'un provider a publié une version mineure pendant la nuit.

Pas de provisioners pour configurer une machine. Les blocs remote-exec et local-exec existent, ils fonctionnent, et HashiCorp les documente comme un dernier recours. Ils sortent du modèle déclaratif, ne sont pas rejoués si la machine dérive, et transforment votre code en script masqué. Terraform crée la machine, un outil de gestion de configuration la configure.

Générer du HCL avec une IA n'est pas maîtriser Terraform. Un assistant produit une configuration syntaxiquement correcte en quelques secondes. Il ne diagnostique pas un state corrompu, ne choisit pas entre count et for_each en fonction de la stabilité des adresses de ressources, et n'anticipe pas ce qu'un apply va détruire sur une infrastructure existante. La compétence à construire est celle-là : comprendre ce que fait le code, et ce qu'il va provoquer.

Quatre erreurs reviennent assez souvent pour mériter d'être nommées avant que vous ne les commettiez.

Configurer un serveur avec Terraform. C'est la confusion la plus fréquente et la plus coûteuse. Terraform maintient un état de ressources, pas un état système. Installer un paquet ou déposer un fichier de configuration avec lui produit un code qui ne se rejoue pas correctement et une dérive invisible. Ansible fait ce travail, et il commence exactement là où Terraform s'arrête.

Modifier une ressource dans la console pendant que Terraform la gère. Le prochain plan proposera de revenir en arrière, ou pire, de détruire et recréer. Si un changement manuel a eu lieu, il se rattrape avec terraform import ou un bloc moved, pas en espérant que Terraform s'en accommode. Le module AWS consacre une leçon entière à cette dérive.

Découper en modules dès le premier projet. L'abstraction prématurée produit des modules à trente variables que personne ne réutilise. Écrivez d'abord du code plat qui marche, extrayez un module quand le même bloc apparaît pour la troisième fois. La leçon sur les anti-patterns détaille les cas.

Compter sur les workspaces pour séparer la production. Les workspaces partagent le même code, le même backend et les mêmes credentials : ils isolent des états, pas des risques. Pour séparer dev, staging et prod, la séparation par répertoires ou par dépôts reste le choix par défaut.

Apprenez l'un, vous saurez utiliser l'autre : le socle HCL, providers, state et modules est commun, et cette formation s'applique aux deux. La différence est juridique avant d'être technique.

Depuis août 2023, Terraform est distribué sous licence BSL 1.1 (Business Source License). Le code reste consultable, mais cette licence n'est pas reconnue open source par l'OSI et restreint certains usages commerciaux concurrents. En réaction, la communauté a créé le fork OpenTofu, publié sous MPL-2.0, une licence open source au sens strict, et hébergé par la Linux Foundation.

En pratique, remplacez terraform par tofu dans les commandes et l'essentiel fonctionne. Les divergences apparaissent sur les fonctionnalités récentes : OpenTofu a ajouté le chiffrement natif du state, que Terraform ne propose pas dans sa version CLI ; Terraform a introduit les fonctions définies par les providers et le bloc check. Le comparatif détaillé se trouve dans Terraform vs OpenTofu.

Un point pratique tranche souvent le choix : les certifications HashiCorp portent sur Terraform, pas sur OpenTofu. Si votre objectif est l'examen, entraînez-vous sur Terraform.

Sur quelle version et quel environnement la formation est-elle validée ?

Section intitulée « Sur quelle version et quel environnement la formation est-elle validée ? »

Les guides sont écrits et vérifiés sur Terraform 1.14.x, avec le provider dmacvicar/libvirt sur un hyperviseur KVM local. Ce choix mérite une justification, parce qu'il détonne dans un écosystème où tous les tutoriels ouvrent sur AWS.

Un lab KVM/libvirt ne coûte rien, ne demande aucun compte, et ne peut pas produire de facture surprise. Il permet de créer et détruire des dizaines de fois la même infrastructure, ce qui est exactement le geste qu'il faut répéter pour comprendre le plan. Les concepts appris y sont identiques sur AWS, Azure ou GCP : seuls les noms de ressources changent, parce que le langage, le state et les modules ne dépendent pas du fournisseur.

Le module AWS existe précisément pour faire ce passage une fois les fondamentaux acquis, avec les problèmes que le local ne pose pas : identité IAM, backend S3, dérive entre la console et le code.

Un exemple de bloc terraform conforme à ce que la formation impose, avec les deux contraintes de version épinglées :

terraform {
required_version = ">= 1.11.0"
required_providers {
libvirt = {
source = "dmacvicar/libvirt"
version = "~> 0.8"
}
}
}
provider "libvirt" {
uri = "qemu:///system"
}

Côté poste de travail, n'importe quel Linux convient, et macOS fonctionne pour tout ce qui ne touche pas à libvirt. Les erreurs que vous rencontrerez le plus souvent au début sont peu nombreuses et toujours les mêmes :

SymptômeCause probableSolution
Error: provider not foundterraform init non exécuté dans ce répertoireLancer terraform init
Error: resource already existsRessource créée hors de Terraformterraform import pour l'adopter dans le state
Error acquiring the state lockVerrou laissé par une exécution interrompueterraform force-unlock <ID> après avoir vérifié qu'aucun apply ne tourne

Chaque guide du parcours se termine par un tableau de ce type, adapté à son sujet.

Comment valider ses acquis et préparer les certifications Terraform ?

Section intitulée « Comment valider ses acquis et préparer les certifications Terraform ? »

Trois dispositifs valident la compétence : les 7 quiz de fin de module, une banque de 217 questions et deux parcours de certification HashiCorp. Lire ne suffit pas, surtout pour un outil qu'on juge à ce qu'il crée.

Les quiz de module se passent en fin de chapitre et pointent, pour chaque mauvaise réponse, le passage précis du guide qui la corrige. Ils servent de révision ciblée autant que d'évaluation. Le quiz HCP Terraform compte à lui seul 24 questions sur l'exécution distante et la gouvernance.

La banque d'entraînement rassemble 217 questions réparties en 7 thèmes, dont 91 de niveau débutant et 80 de niveau intermédiaire. Elle est accessible par niveau depuis la page examens, ce qui permet de réviser quinze minutes par semaine sans reprendre un guide entier.

Les deux certifications HashiCorp n'ont ni le même format ni le même public :

CertificationPour quiFormatDurée
Associate (004)Débutants à intermédiairesQuestions à choix multiples1 heure
ProfessionalPraticiens expérimentésLabs plus questions hors lab4 heures, pause de 15 minutes incluse

L'Associate (004) vérifie que vous reconnaissez ce que fait une commande, que vous lisez une configuration et que vous distinguez des concepts proches. Le guide de préparation Associate traduit le programme officiel en ordre de lecture, et les exercices Associate proposent 43 questions couvrant les 7 thèmes de l'examen. Visez 80 % avant de vous inscrire.

La Professional change de nature : on y résout des scénarios sur un environnement réel, sous contrainte de temps. Le guide de préparation Professional détaille le format et les six objectifs officiels, avec des exercices en lab pour s'entraîner. L'Associate n'est pas exigée administrativement, mais la passer d'abord reste le chemin le plus court.

Voici les réponses aux questions que se posent le plus souvent les personnes qui débutent avec Terraform : sa définition, sa licence, son prix, sa différence avec Ansible et OpenTofu, et le rôle du state.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn