
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 :
terraform apply -auto-approve# La VM doit apparaître dans la liste de l'hyperviseurvirsh list --allReste à 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 suivez | Volume |
|---|---|
| Modules pédagogiques | 9 |
| Leçons | 91 |
| Quiz de fin de module | 7 |
| Durée estimée | environ 39 heures |
| Banque de questions | 217 |
| Terrain de manipulation | KVM/libvirt, sans compte cloud |
| Version de référence | Terraform 1.14.x |
| Certifications visées | Associate (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 :
| Module | Leçons | Durée | Ce que vous en retirez |
|---|---|---|---|
| Découvrir | 10 | 3 h | Le modèle déclaratif, l'installation, la CLI, la structure d'un projet |
| Premières infras | 9 | 4 h 40 | Votre premier apply sur KVM, une VM, un réseau, un destroy propre |
| Écrire du code | 25 | 9 h 40 | Variables, outputs, expressions, count, for_each, lifecycle, données sensibles |
| Gérer le state | 12 | 4 h 45 | Backends distants, verrouillage, commandes terraform state, diagnostic |
| Modules | 11 | 5 h 15 | Créer, tester, versionner et publier du code réutilisable |
| Environnements | 9 | 4 h 40 | Workspaces, séparation dev/staging/prod, organisation du dépôt, automation |
| AWS | 7 | 3 h 20 | Le passage du lab local à un vrai fournisseur : EC2, IAM, backend S3, drift |
| HCP Terraform | 1 quiz | 3 min | Validation des connaissances sur l'exécution distante |
| Certifications | 7 | 3 h 35 | Programmes 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.
Comment suivre sa progression dans le parcours ?
Section intitulée « Comment suivre sa progression dans le parcours ? »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.
Le parcours, module par module
Section intitulée « Le parcours, module par module »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.
Comprendre le modèle, puis créer quelque chose
Section intitulée « Comprendre le modèle, puis créer quelque chose »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
applyqui é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.
- Écrire du code Terraform : variables typées et validées, outputs, locals, expressions, fonctions, conditions,
countetfor_each, blocs dynamiques,depends_on,lifecycle, conventions de style. - La gestion des données sensibles y occupe trois leçons, dont les ressources éphémères et les arguments write-only, deux mécanismes récents qui évitent d'écrire un secret dans le state.
Passer de votre poste à une équipe
Section intitulée « Passer de votre poste à une équipe »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,mvetrm, 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.
Sortir du lab local
Section intitulée « Sortir du lab local »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,
importetmovedface à 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.
Valider par la certification
Section intitulée « Valider par la certification »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 main | Ce que Terraform fait pour vous |
|---|---|
| Créer chaque VM via la console | Déclarer « 3 VMs » et laisser Terraform les créer |
| Espérer que staging ressemble à la prod | Le même code HCL produit la même infrastructure |
| Deviner ce qui a changé depuis hier | terraform plan affiche le diff exact avant d'agir |
| Reconstruire après un incident | terraform apply recrée l'ensemble depuis le code |
| Documenter l'infrastructure à part | Le 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.
Ce que je défends
Section intitulée « Ce que je défends »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.
Ce que je vous déconseille
Section intitulée « Ce que je vous déconseille »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.
Terraform ou OpenTofu : lequel apprendre ?
Section intitulée « Terraform ou OpenTofu : lequel apprendre ? »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ôme | Cause probable | Solution |
|---|---|---|
Error: provider not found | terraform init non exécuté dans ce répertoire | Lancer terraform init |
Error: resource already exists | Ressource créée hors de Terraform | terraform import pour l'adopter dans le state |
Error acquiring the state lock | Verrou laissé par une exécution interrompue | terraform 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 :
| Certification | Pour qui | Format | Durée |
|---|---|---|---|
| Associate (004) | Débutants à intermédiaires | Questions à choix multiples | 1 heure |
| Professional | Praticiens expérimentés | Labs plus questions hors lab | 4 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.
FAQ : questions fréquentes sur Terraform
Section intitulée « FAQ : questions fréquentes sur Terraform »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.
Terraform en une phrase
Terraform est un outil d'Infrastructure as Code (IaC) créé par HashiCorp. Vous décrivez l'état souhaité de votre infrastructure (machines virtuelles, réseaux, bases de données, services cloud) en langage HCL, et Terraform calcule puis applique les changements nécessaires pour l'atteindre.- Déclaratif : vous décrivez le résultat, pas les étapes.
- Multi-fournisseurs : un même workflow pour AWS, Azure, GCP, KVM/libvirt, etc.
- State : Terraform mémorise la réalité dans un fichier
terraform.tfstateet n'applique que les différences.
terraform init, terraform plan, terraform apply. Le code devient la documentation vivante de votre infrastructure.Deux outils complémentaires
Terraform et Ansible ne répondent pas au même besoin.| Critère | Terraform | Ansible |
|---|---|---|
| Rôle principal | Provisionnement d'infrastructure | Configuration des systèmes |
| Approche | Déclarative (état souhaité) | Plutôt procédurale (tâches ordonnées) |
| Exemple | Créer 3 VM et leur réseau | Installer Nginx et déployer une application |
| État | Fichier state | Sans état persistant, idempotence par tâche |
local-exec sert parfois à déclencher Ansible juste après un terraform apply.Un choix surtout de licence
OpenTofu est un fork de Terraform créé par la communauté après le passage de Terraform sous licence BSL 1.1 en août 2023. OpenTofu est placé sous licence MPL-2.0, reconnue open source par l'OSI, et gouverné par la Linux Foundation.- Compatibilité : le socle (HCL, providers, state, modules) est très proche ; dans la majorité des cas, on remplace la commande
terraformpartofu. - Divergences : chiffrement natif du state côté OpenTofu, certaines fonctions côté Terraform.
- Comment choisir : Terraform si vous voulez l'outil le plus répandu et l'écosystème HashiCorp ; OpenTofu si la licence open source et une gouvernance neutre priment.
Gratuit pour l'essentiel des usages
La CLI Terraform est gratuite à télécharger et à utiliser pour la grande majorité des usages : labs, CI/CD, automatisation interne. La licence BSL 1.1 ne restreint que les "competitive offerings" (revendre un service concurrent basé sur Terraform), ce qui ne concerne pas les équipes DevOps classiques.La plateforme collaborative HCP Terraform (anciennement Terraform Cloud) ajoute un free tier : jusqu'à 500 ressources gérées, avec des limites (pas d'audit logging, policy as code limité). Au-delà, ou pour les fonctions entreprise, il faut une offre payante.Si la licence open source est un critère, OpenTofu reste 100 % gratuit sous MPL-2.0.Non, source-available depuis 2023
Jusqu'en août 2023, Terraform était publié sous licence MPL-2.0 (open source). Depuis, HashiCorp l'a fait passer sous BSL 1.1 (Business Source License) : le code source reste consultable et utilisable ("source-available"), mais cette licence n'est pas reconnue open source par l'OSI car elle restreint les usages concurrents.En réaction, la communauté a créé OpenTofu, un fork sous licence MPL-2.0, gouverné par la Linux Foundation. Si vous avez besoin d'une licence strictement open source, c'est OpenTofu qu'il faut regarder.Trois méthodes courantes
Le plus simple sur Linux est le dépôt officiel HashiCorp :- Debian/Ubuntu : ajouter la clé et le dépôt HashiCorp, puis
sudo apt-get install terraform. - RHEL/Fedora : ajouter le dépôt HashiCorp, puis
sudo dnf install terraform. - Multi-version : un gestionnaire comme mise ou tfenv permet d'installer et d'épingler une version précise par projet, utile quand plusieurs dépôts exigent des versions différentes.
terraform -version
La sortie doit afficher la version installée. Le guide détaillé d'installation (Linux, macOS, Windows) couvre chaque cas pas à pas.Le lien entre le code et le réel
Le state (fichierterraform.tfstate, au format JSON) mémorise la correspondance entre les ressources déclarées dans votre code HCL et les ressources réellement créées chez le fournisseur. C'est grâce à lui que terraform plan calcule le diff exact à appliquer.Points clés :- Ne jamais committer le state dans Git : il contient souvent des valeurs sensibles en clair.
- En équipe, stockez-le dans un backend distant (S3, Consul, HCP Terraform) avec verrouillage pour éviter deux
applysimultanés. - Des commandes dédiées l'inspectent et le réparent :
terraform state list,terraform state show,terraform state mv,terraform state rm.
Associate d'abord, Professional ensuite
HashiCorp propose deux certifications officielles :| Certification | Pour qui | Format |
|---|---|---|
| Terraform Associate (004) | Débutants à intermédiaires | QCM d'environ une heure |
| Terraform Professional | Praticiens expérimentés | Épreuve pratique et QCM, plusieurs heures |