🎁 Inscrivez-vous et profitez gratuitement de 30 minutes maximum d’IA en ligne. Aucune carte bancaire requise.

Questions et réponses d'entretien Terraform : 25 questions sur l'état, les modules et les changements sûrs

August 28, 2026
Questions d'entretien Terraform avec réponses sur l'état, les backends, le verrouillage, les modules, les environnements, la dérive, les imports, les règles de cycle de vie et les workflows de changement sûrs.
Questions et réponses d'entretien Terraform : 25 questions sur l'état, les modules et les changements sûrs
questions d'entretien terraform
questions et réponses d'entretien terraform
entretien sur l'état terraform
entretien devops terraform

Les entretiens Terraform se concentrent sur le state, car la plupart des problèmes réels viennent du state : qui le détient, qui peut le modifier en même temps, et ce qui se passe quand la réalité s'en éloigne. Viennent ensuite les modules, les environnements, les changements sûrs, et la façon dont vous géreriez Terraform en équipe.

Voici 25 questions avec leurs réponses. HashiCorp a changé la licence de Terraform en 2023, et le fork communautaire OpenTofu existe, donc mentionnez celui que l'équipe utilise si le sujet arrive. Les idées et les commandes de base sont les mêmes pour les deux.

Les bases

1. Qu'est-ce que Terraform, et qu'est-ce que l'infrastructure as code ?

Terraform est un outil qui permet de définir son infrastructure dans des fichiers de configuration et de l'appliquer via les API des providers. L'infrastructure as code signifie que la configuration est écrite, versionnée, relue et reproductible, au lieu d'être assemblée à coups de clics dans une console.

2. Quelle est la différence entre déclaratif et impératif ?

Terraform est déclaratif : vous décrivez l'état final souhaité, et Terraform détermine les étapes. Avec un script impératif, vous écrivez vous-même les étapes, et le relancer une deuxième fois peut tout casser.

3. Quelles sont les principales commandes Terraform ?

CommandeCe qu'elle fait
terraform initTélécharge les providers et les modules, configure le backend
terraform validateVérifie que la configuration est valide
terraform fmtFormate les fichiers
terraform planMontre ce qui va changer
terraform applyApplique les changements
terraform destroySupprime les ressources gérées
terraform importPlace une ressource existante sous gestion
terraform stateInspecte et modifie le state

4. Que sont les providers, les resources et les data sources ?

Un provider est un plugin qui communique avec une API comme AWS, Azure ou Kubernetes. Une resource est un élément que Terraform crée et gère. Une data source lit des informations sur quelque chose qui existe déjà, comme un VPC existant ou la dernière AMI.

5. Que sont les variables, les outputs et les locals ?

Les variables d'entrée paramètrent une configuration. Les outputs exposent des valeurs, utilisables en ligne de commande ou par d'autres modules. Les locals sont des expressions nommées à l'intérieur d'un module, utilisées pour éviter les répétitions.

Le state

6. Qu'est-ce que le fichier de state Terraform, et pourquoi est-ce important ?

Le state fait le lien entre votre configuration et les ressources réelles, et stocke leurs attributs. Terraform compare la configuration, le state et le monde réel pour planifier les changements. Perdez le state et Terraform risque de recréer des choses qui existent déjà. Il peut aussi contenir des secrets, donc traitez-le comme une donnée sensible.

7. Où faut-il stocker le state ?

Dans un backend distant, pas sur le laptop d'une personne, par exemple S3 avec une table DynamoDB ou le verrouillage natif S3 plus récent, Azure Storage, Google Cloud Storage ou Terraform Cloud. Activez le versioning sur le bucket, le chiffrement et un accès restreint.

8. Qu'est-ce que le verrouillage du state ?

Il empêche deux personnes ou pipelines d'appliquer en même temps et de corrompre le state. La plupart des backends distants le prennent en charge. Si un run plante, vous devrez peut-être libérer un verrou obsolète avec terraform force-unlock, après avoir vérifié que personne n'est encore en train d'appliquer.

9. Qu'est-ce que le drift, et comment le gérer ?

Le drift, c'est quand l'infrastructure réelle diffère du state, généralement parce que quelqu'un l'a modifiée à la main. terraform plan (ou plan -refresh-only) le montre. À vous de décider si vous annulez le changement en appliquant, ou si vous mettez à jour le code pour qu'il corresponde.

10. Comment placer une ressource existante sous Terraform ?

Écrivez le bloc resource, puis lancez terraform import <address> <id>, ou utilisez un bloc import dans les versions récentes. Lancez plan ensuite et ajustez le code jusqu'à ce qu'il n'affiche plus aucun changement.

11. Comment découper le state entre environnements ou équipes ?

Utilisez un state distinct par environnement et par composant, par exemple un pour le réseau, un pour chaque application, et un par environnement. Cela limite le blast radius et accélère les plans. Partagez les valeurs via des outputs et des data sources ou du remote state.

Modules et structure

12. Qu'est-ce qu'un module, et quand faut-il en écrire un ?

Un module est un groupe réutilisable de ressources avec des entrées et des sorties. Écrivez-en un lorsque vous répétez le même schéma, comme un VPC ou un service, et que vous voulez une version unique et validée. Gardez les modules petits et ciblés, avec des valeurs par défaut pertinentes, et versionnez-les.

13. Comment gérer les environnements de dev, de staging et de production ?

Les options courantes sont des répertoires ou des dépôts séparés avec leur propre state et leurs propres fichiers de variables, ou bien les workspaces. Beaucoup d'équipes préfèrent un state distinct par environnement, car les workspaces partagent le même code et facilitent l'application au mauvais environnement. Utilisez les mêmes modules avec des valeurs de variables différentes.

14. Que sont les workspaces ?

Des states nommés au sein d'un même backend et d'une même configuration. Ils sont utiles pour des copies temporaires de la même installation, comme des environnements de test par branche, mais ne constituent pas une séparation robuste pour la production.

15. Quelle est la différence entre count et for_each ?

count crée un certain nombre de copies indexées par position. for_each en crée une par élément d'une map ou d'un set, indexée par nom. Préférez for_each, car supprimer un élément au milieu d'une liste count décale les index et peut détruire puis recréer des ressources.

16. Que fait depends_on ?

Il ajoute une dépendance explicite lorsque Terraform ne peut pas la déduire des références. Utilisez-le avec parcimonie, car la plupart des dépendances proviennent du fait de référencer les attributs d'une autre ressource.

Modifications sûres et opérations

17. Que sont les règles lifecycle ?

create_before_destroy effectue d'abord un remplacement, prevent_destroy bloque la suppression, ignore_changes ignore les attributs modifiés en dehors de Terraform, et replace_triggered_by force le remplacement lorsqu'une autre ressource change.

18. Comment gérer les secrets dans Terraform ?

Ne les codez pas en dur. Utilisez un gestionnaire de secrets ou des variables d'environnement, marquez les variables et les sorties comme sensitive, et rappelez-vous que les valeurs peuvent tout de même se retrouver dans le state, donc protégez le state. Évitez de faire passer des secrets par de simples fichiers de variables sous contrôle de version.

19. Comment réviser et appliquer les changements en toute sécurité ?

Lancez plan dans une pull request, examinez la sortie du plan, exigez une approbation, et appliquez depuis un pipeline en utilisant le plan enregistré, afin que ce qui est révisé soit ce qui s'exécute. Surveillez les lignes de destruction ou de remplacement dans le plan.

20. Un plan indique qu'il va détruire et recréer une base de données. Que faites-vous ?

Arrêtez-vous et cherchez pourquoi. Les causes courantes sont un attribut immuable modifié, une ressource renommée ou un module déplacé. Utilisez des blocs moved ou terraform state mv pour corriger les changements d'adresse, utilisez ignore_changes ou prevent_destroy si c'est approprié, et faites une sauvegarde avant toute application risquée.

21. Comment renommer ou déplacer une ressource sans la détruire ?

Utilisez un bloc moved dans le code, ou terraform state mv pour changer son adresse dans le state. Lancez ensuite un plan et confirmez qu'il n'y a aucune destruction.

22. Comment épingler les versions ?

Utilisez required_version pour Terraform et required_providers avec des contraintes de version, et committez le fichier .terraform.lock.hcl pour que tout le monde utilise les mêmes builds de providers. Mettez à jour de manière délibérée et lisez le changelog.

Questions pratiques et mises en situation

23. Que sont les provisioners, et faut-il les utiliser ?

Les provisioners exécutent des scripts sur une ressource après sa création. C'est un dernier recours, car ils ne sont pas suivis dans le state et les échecs sont difficiles à gérer. Préférez cloud-init, des images construites avec un outil comme Packer, ou la gestion de configuration.

24. Comment structureriez-vous Terraform pour une équipe avec plusieurs environnements ?

« Un dépôt pour les modules partagés avec des versions publiées, et un dépôt live avec un répertoire par environnement et par composant. Chacun a son propre state distant avec verrouillage. Un pipeline exécute fmt, validate et plan sur les pull requests, exige une approbation, et applique au merge. L'accès se fait via des identifiants à durée de vie courte, et des contrôles de politique détectent les changements risqués. »

25. Quelqu'un a modifié une ressource dans la console et maintenant Terraform veut la rétablir. Que faites-vous ?

Cherchez pourquoi cette personne l'a modifiée. S'il s'agissait d'un correctif urgent, mettez le code à jour pour qu'il corresponde et appliquez, afin de conserver le changement. S'il s'agissait d'une erreur, appliquez pour rétablir. Ajoutez ensuite des contrôles, comme restreindre l'accès en écriture à la console, pour que cela ne se reproduise plus.

Comment se préparer

Créez un petit projet avec un backend distant, un module et deux environnements. Entraînez-vous à un renommage avec un bloc moved, à un import et à une correction de dérive. Soyez prêt à raconter une fois où un plan vous a surpris et ce que vous avez fait. Pour des sujets cloud connexes, consultez notre guide d'entretien AWS et notre guide Kubernetes.

Dites vos réponses à voix haute, en particulier les questions sur le state, où les explications deviennent confuses. Une transcription d'entretien simulé montre où vous avez hésité. Respectez les règles de l'employeur sur les outils d'IA lors de tout entretien en direct.

Entraînez-vous aux réponses d'entretien Terraform avec YesToTheOffer

Faites un entretien technique simulé, expliquez l'état et les modules à voix haute, et révisez votre transcription ensuite. 30 minutes gratuites, sans abonnement.

iOS & Android — Bientôt disponible
Voir les tarifs