Settings
Intermediaire 10 questions Terraform

Questions d'entretien Terraform

Preparez votre entretien Terraform avec ces questions sur le state, les modules et les bonnes pratiques.

Questions d'entretien Terraform

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

Terraform est un outil d'Infrastructure as Code open source de HashiCorp. Il utilise le langage HCL (HashiCorp Configuration Language) pour decrire l'infrastructure desiree de maniere declarative. Le workflow : init (initialise le projet et telecharge les providers), plan (calcule les changements necessaires), apply (applique les changements). Terraform compare l'etat desire (code) avec l'etat actuel (state file) et determine les actions a executer (creer, modifier, detruire).

2. Qu'est-ce que le state file et pourquoi est-il important ?

Le state file (terraform.tfstate) est un fichier JSON qui contient la correspondance entre les ressources definies dans le code et les ressources reelles dans le cloud. Il permet a Terraform de savoir ce qui existe deja et de calculer les changements necessaires. Sans le state, Terraform ne pourrait pas faire la difference entre une nouvelle ressource et une mise a jour. Le state doit etre stocke dans un backend distant (S3, GCS, Azure Blob) pour le travail en equipe, avec le verrouillage (locking) pour eviter les conflits.

3. Expliquez la difference entre terraform plan et terraform apply.

terraform plan genere un plan d'execution qui montre les changements prevus sans les appliquer. C'est un "dry run" : il affiche les ressources qui seront creees (+), modifiees (~) ou detruites (-). terraform apply execute les changements reellement. En pratique, on execute toujours plan avant apply pour verifier les changements. On peut aussi sauvegarder un plan (terraform plan -out=plan.tfplan) et l'appliquer ensuite (terraform apply plan.tfplan).

4. Comment structurez-vous un projet Terraform ?

Structure recommandee : un dossier par environnement (dev/, staging/, prod/) avec des backends et variables separes. Des modules reutilisables dans un dossier modules/ pour les patterns courants (VPC, base de donnees, cluster EKS). Fichiers par convention : main.tf (ressources), variables.tf (inputs), outputs.tf (outputs), providers.tf (configuration des providers), terraform.tf (version et backend). Utilisez des workspaces ou des dossiers separes pour gerer les environnements.

5. Qu'est-ce qu'un module Terraform et comment en creer un ?

Un module est un ensemble de fichiers Terraform reutilisables qui encapsulent un groupe de ressources. Chaque dossier contenant des fichiers .tf est un module. Un module expose des variables (inputs), des outputs, et encapsule la logique de creation. On l'utilise avec le bloc module : source, version, et les variables. Les modules peuvent venir de sources locales, du Terraform Registry, ou de Git. Bonnes pratiques : des modules petits et focuses, documentes, et avec des exemples.

6. Comment gerer les secrets avec Terraform ?

Ne jamais stocker de secrets en clair dans les fichiers .tf ou .tfvars. Solutions : utiliser des variables d'environnement (TF_VAR_xxx), les data sources pour lire depuis un coffre-fort (aws_secretsmanager_secret, vault_generic_secret), marquer les variables comme sensitive = true (masque dans les outputs). Stockez le state dans un backend chiffre. Utilisez SOPS ou git-crypt pour chiffrer les fichiers de variables sensibles dans Git.

7. Expliquez le concept de "drift" et comment le gerer.

Le drift (derive) se produit quand l'etat reel de l'infrastructure diverge de ce qui est decrit dans le code Terraform (modification manuelle via la console, intervention d'un autre outil). terraform plan detecte le drift en comparant le state avec l'etat reel. Pour corriger : soit vous importez le changement dans le code (mettez a jour le .tf), soit vous forcez le retour a l'etat desire (terraform apply ecrase les modifications manuelles). Bonnes pratiques : interdire les modifications manuelles, utiliser terraform plan regulierement.

8. Qu'est-ce que terraform import et quand l'utiliser ?

terraform import permet d'importer des ressources existantes (creees manuellement ou par un autre outil) dans le state Terraform. Utilisation : terraform import aws_instance.web i-1234567890abcdef0. Vous devez aussi ecrire la configuration correspondante dans un fichier .tf. Depuis Terraform 1.5, le bloc import {} dans le code permet une importation declarative plus propre. C'est utile lors de la migration vers Terraform ou pour recuperer des ressources creees en dehors de Terraform.

9. Comment testez-vous du code Terraform ?

Niveaux de test : validation statique (terraform validate, tflint, checkov pour la securite), plan review (terraform plan dans la CI, review humaine), tests d'integration avec Terratest (Go) qui deploie une infrastructure reelle, execute des assertions, et la detruit. terraform test (natif depuis 1.6) permet des tests dans des fichiers .tftest.hcl. Testez au minimum la validation et le plan dans chaque pull request.

10. Comment migrer d'une version de provider ou de Terraform ?

Pour migrer de version Terraform : mettez a jour le bloc required_version, executez terraform init -upgrade, verifiez le plan. Pour les providers : mettez a jour la version dans required_providers, executez terraform init -upgrade. Lisez les changelogs et guides de migration pour identifier les breaking changes. Testez toujours dans un environnement non-production d'abord. Le state peut necessiter une migration (terraform state) si des ressources ont ete renommees dans la nouvelle version.

Besoin d'aide pour preparer vos entretiens ?

Decrivez votre profil pour des conseils de preparation personnalises.

Recevoir des conseils

Questions frequentes

Terraform ou Pulumi, lequel choisir ?
Terraform est le standard avec la plus grande communaute et le plus de modules. Pulumi est ideal si vous preferez coder en TypeScript, Python ou Go plutot qu'en HCL. Pour un entretien, Terraform est presque toujours attendu. Les deux outils sont complementaires.
Terraform est-il gratuit ?
Terraform CLI est open source et gratuit. Terraform Cloud offre un tier gratuit pour les petites equipes. HashiCorp propose aussi Terraform Enterprise (payant) pour les grandes organisations avec des besoins de gouvernance et de conformite.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.