Voici la version enrichie de ton quiz Terraform pour Obsidian. J’ai ajouté l’analyse systématique des propositions incorrectes pour chaque question, afin de t’aider à comprendre les nuances entre les commandes.
🌍 Maîtrise de Terraform : Le Grand Quiz (30 Questions)
Instructions
Cliquez sur la flèche à côté de “Correction & Explication” pour révéler la réponse. Ce quiz teste votre connaissance des commandes, des options de sécurité et de la gestion de l’infrastructure as code.
🔧 Section 1 : Initialisation & Configuration
Q1 : Quelle commande télécharge les providers et initialise le backend mais peut aussi mettre à jour les modules existants avec une option spécifique ?
-
terraform refresh -
terraform init -upgrade -
terraform get -update -
terraform plan -install
Correction & Explication
Réponse : 2
Justesse :
terraform init -upgradeforce la mise à jour des versions des providers et des modules selon les contraintes du code.Pourquoi la 1 est fausse :
refresh(déprécié) ne télécharge rien, il interroge l’état du Cloud pour mettre à jour le state.Pourquoi la 3 est fausse :
terraform gettélécharge les modules mais ne gère ni les providers ni le backend.Pourquoi la 4 est fausse : Cette commande n’existe pas.
planne peut pas installer de composants.
Q2 : Que se passe-t-il si vous lancez terraform init -backend=false ?
-
Terraform initialise les plugins mais ne configure pas le stockage du state.
-
Terraform supprime le backend existant.
-
Terraform échoue car le backend est obligatoire.
-
Terraform utilise un backend local par défaut sans poser de questions.
Correction & Explication
Réponse : 1
Justesse : Cela permet d’initialiser les plugins pour la validation ou le linting sans accès au stockage distant.
Pourquoi la 2 est fausse : Terraform ne supprime rien, il ignore juste la configuration du bloc
backend.Pourquoi la 3 est fausse : Le backend n’est pas obligatoire pour l’initialisation des providers ou la validation locale.
Pourquoi la 4 est fausse : Si le code définit un backend (S3, etc.), Terraform n’en créera pas un local par défaut si vous lui demandez d’ignorer le backend.
📋 Section 2 : Planification & Variables
Q3 : Quelle option de terraform plan permet de s’assurer que le plan ne contient que des suppressions de ressources ?
-
-destroy -
-delete-only -
-remove -
-refresh-only
Correction & Explication
Réponse : 1
Justesse :
-destroycrée un plan où l’action de chaque ressource est la destruction.Pourquoi la 2/3 sont fausses : Ce ne sont pas des options valides de la CLI Terraform.
Pourquoi la 4 est fausse :
-refresh-onlyne prévoit aucune modification d’infrastructure, il met seulement à jour le fichier state.
Q4 : Comment sauvegarder un plan pour être certain que l’exécution (apply) correspond exactement à ce qui a été validé ?
-
terraform plan -save=plan.txt -
terraform plan -out=plan.tfplan -
terraform plan > plan.tfplan -
terraform apply -freeze
Correction & Explication
Réponse : 2
Justesse :
-outgénère un fichier binaire compressé qui contient le plan exact et l’état des ressources à ce moment précis.Pourquoi la 1 est fausse : L’option
-saven’existe pas.Pourquoi la 3 est fausse : Rediriger la sortie textuelle dans un fichier ne crée pas un fichier exploitable par
apply.Pourquoi la 4 est fausse :
-freezen’est pas une commande Terraform.
Q5 : Que fait l’option -target=aws_instance.web lors d’un plan ?
-
Elle définit
aws_instance.webcomme la ressource prioritaire. -
Elle limite l’exécution du plan uniquement à cette ressource et ses dépendances.
-
Elle importe la ressource dans le state.
-
Elle remplace la ressource.
Correction & Explication
Réponse : 2
Justesse : Elle isole la ressource spécifiée pour une intervention chirurgicale.
Pourquoi la 1 est fausse : Terraform ne gère pas de “priorités”, il gère des graphes de dépendances.
Pourquoi la 3 est fausse : L’import se fait avec
terraform import.Pourquoi la 4 est fausse : Pour remplacer, on utilise
-replace(ou l’ancientaint).
⚡ Section 3 : Application & Destruction
Q6 : Quelle option de terraform apply permet de forcer la recréation d’une ressource spécifique sans utiliser la commande taint ?
-
-recreate -
-replace="ressource_id" -
-force-new -
-refresh-only
Correction & Explication
Réponse : 2
Justesse : C’est l’option moderne qui marque la ressource pour destruction/création immédiate.
Pourquoi la 1/3 sont fausses : Ces options n’existent pas.
Pourquoi la 4 est fausse : Comme pour le plan, cela ne modifie pas l’infrastructure.
Q7 : Dans quel cas utiliseriez-vous terraform apply -refresh-only ?
-
Pour forcer la création de nouvelles ressources.
-
Pour mettre à jour le fichier state local avec la réalité du Cloud sans rien modifier sur l’infrastructure.
-
Pour vider le cache des providers.
-
Pour valider la syntaxe HCL.
Correction & Explication
Réponse : 2
Justesse : Remplace
terraform refresh. Détecte le “drift” (dérive) entre le code et le Cloud.Pourquoi la 1 est fausse : Cette option exclut toute création.
Pourquoi la 3 est fausse : Le cache des providers se gère au niveau du dossier
.terraform.Pourquoi la 4 est fausse : C’est le rôle de
terraform validate.
📝 Section 4 : Formatage & Validation
Q8 : Quelle commande permet de vérifier si vos fichiers Terraform sont bien indentés sans les modifier réellement ?
-
terraform fmt -check -
terraform fmt -verify -
terraform validate -fmt -
terraform fmt -diff=false
Correction & Explication
Réponse : 1
Justesse :
-checkrenvoie un code de sortie d’erreur si le formatage n’est pas parfait, sans modifier les fichiers.Pourquoi la 2 est fausse :
-verifyn’est pas une option defmt.Pourquoi la 3 est fausse :
validatevérifie la logique et la syntaxe, pas l’alignement visuel (espaces/tabulations).Pourquoi la 4 est fausse :
-diff=falsecacherait les différences mais ne donnerait pas de statut de validation.
Q9 : Quelle est la différence majeure entre terraform fmt et terraform validate ?
-
fmtvérifie la logique,validatevérifie l’esthétique. -
fmtréorganise le texte,validatevérifie la syntaxe, les types et la cohérence des arguments. -
Il n’y a aucune différence.
-
validatetélécharge les plugins.
Correction & Explication
Réponse : 2
Justesse :
fmtest purement cosmétique.validateest fonctionnel (vérifie les variables, les types, les blocs obligatoires).Pourquoi la 1 est fausse : C’est l’inverse.
Pourquoi la 4 est fausse : Les plugins sont téléchargés par
init, pas parvalidate.
🗂️ Section 5 : Gestion du State (État)
Q10 : Vous voulez renommer une ressource dans votre code mais ne voulez pas que Terraform la détruise et la recrée. Quelle commande state utilisez-vous ?
-
terraform state rmsuivi d’unimport. -
terraform state mv -
terraform state rename -
terraform state pull
Correction & Explication
Réponse : 2
Justesse :
mvdéplace l’entrée dans le fichier d’état d’un nom vers un autre.Pourquoi la 1 est fausse : C’est une solution de contournement manuelle lourde et risquée.
Pourquoi la 3 est fausse : La commande exacte est
mv(move), pasrename.Pourquoi la 4 est fausse :
pullne fait que lire le state distant.
Q11 : Quelle commande permet de retirer une ressource du suivi de Terraform sans la supprimer de votre fournisseur Cloud (AWS/Azure) ?
-
terraform destroy -target -
terraform state rm -
terraform untaint -
terraform delete --soft
Correction & Explication
Réponse : 2
Justesse :
state rmsupprime la ressource du fichier.tfstate. Pour Terraform, elle n’existe plus, mais elle reste intacte sur le Cloud.Pourquoi la 1 est fausse :
destroysupprimerait réellement la ressource sur le Cloud.Pourquoi la 3 est fausse :
untaintannule juste un marquage de recréation forcée.Pourquoi la 4 est fausse : Commande inexistante.
Q12 : À quoi sert terraform force-unlock [ID] ?
-
À craquer le mot de passe d’un utilisateur.
-
À débloquer manuellement le state si un processus Terraform s’est crashé et n’a pas libéré le verrou.
-
À forcer l’accès à un bucket S3.
-
À outrepasser les restrictions de sécurité du provider.
Correction & Explication
Réponse : 2
Justesse : Indispensable quand un lock (verrou) persiste après une erreur réseau ou un crash.
Pourquoi la 4 est fausse : Terraform ne peut pas outrepasser les droits IAM/RBAC du Cloud.
🏠 Section 6 : Workspaces & Cloud
Q13 : Quelle est la principale faiblesse des Workspaces par rapport à une isolation via Git + Backends séparés ?
-
Ils sont plus lents.
-
Ils partagent généralement les mêmes credentials et le même backend de stockage.
-
On ne peut pas avoir de ressources différentes.
-
Ils coûtent plus cher.
Correction & Explication
Réponse : 2
Justesse : Danger de sécurité : un accès au backend permet de voir tous les environnements (dev/prod).
Pourquoi la 3 est fausse : On peut avoir des ressources différentes via des variables basées sur
terraform.workspace.
Q14 : Quelle commande permet d’extraire les données du state distant pour les consulter localement au format JSON ?
-
terraform state pull | jq -
terraform show -json -
Les deux sont possibles.
-
terraform state list -format=json
Correction & Explication
Réponse : 3
Justesse :
state pullrécupère le JSON brut,show -jsondonne une version formatée plus complète de l’état actuel.Pourquoi la 4 est fausse :
state listne donne que les noms des ressources, pas leurs détails en JSON.
📥 Section 7 : Import & Utilitaires
Q15 : Que devez-vous obligatoirement faire AVANT de lancer terraform import ?
-
Détruire la ressource existante.
-
Écrire le bloc de configuration de la ressource dans votre code
.tf. -
Désactiver le backend.
-
Lancer un
terraform destroy.
Correction & Explication
Réponse : 2
Justesse : Terraform a besoin d’une adresse de ressource dans le code pour savoir où attacher l’import.
Pourquoi la 1/4 sont fausses : L’import sert justement à ne pas détruire ce qui existe.
Q16 : Quelle commande permet de tester des fonctions Terraform (comme split(), abs()) ou de voir la valeur d’une variable sans faire un apply ?
-
terraform test -
terraform console -
terraform echo -
terraform check
Correction & Explication
Réponse : 2
Justesse :
consoleouvre un shell interactif pour évaluer les expressions HCL.Pourquoi la 1 est fausse :
terraform testest un framework pour les tests unitaires de modules (plus complexe).
Q17 : Que signifie l’option -detailed-exitcode ?
-
Elle affiche le log en couleur.
-
Elle modifie le code de sortie (0, 1 ou 2) selon qu’il y a des changements, des erreurs ou rien à faire.
-
Elle affiche l’heure exacte de chaque création.
-
Elle génère un rapport PDF.
Correction & Explication
Réponse : 2
Justesse : Crucial en CI/CD : permet au script de savoir si un
applyest nécessaire.Pourquoi la 1 est fausse : C’est l’option
-no-colorqui gère les couleurs.
🔄 Section 8 : Questions Avancées & Maintenance
Q18 : Pourquoi les commandes taint et untaint sont-elles aujourd’hui dépréciées ?
-
Parce qu’elles étaient trop dangereuses.
-
Parce qu’elles ont été remplacées par l’option
-replacelors duapply. -
Parce que Terraform n’autorise plus la recréation de ressources.
-
Parce qu’elles corrompaient le state.
Correction & Explication
Réponse : 2
- Justesse :
-replacepermet de déclarer l’intention de recréation au moment du plan/apply sans modifier l’état de façon persistante auparavant.
Q19 : Quelle commande permet de visualiser les dépendances entre vos ressources sous forme de graphique ?
-
terraform visualize -
terraform tree -
terraform graph -
terraform show --graph
Correction & Explication
Réponse : 3
Justesse : Produit un format GraphViz (DOT).
Pourquoi la 1/2 sont fausses : Commandes inexistantes.
Q20 : Quelle variable d’environnement active le mode debug maximum dans les logs de Terraform ?
-
DEBUG=true -
TF_LOG=TRACE -
TERRAFORM_VERBOSE=1 -
LOG_LEVEL=DEBUG
Correction & Explication
Réponse : 2
- Justesse :
TF_LOGest la variable standard,TRACEest le niveau le plus élevé aprèsDEBUG.
Q21 : Que fait terraform providers lock ?
-
Il empêche la modification des ressources.
-
Il génère ou met à jour le fichier
.terraform.lock.hclpour garantir que toute l’équipe utilise les mêmes versions de plugins. -
Il verrouille le compte AWS.
-
Il crypte les mots de passe.
Correction & Explication
Réponse : 2
- Justesse : Assure la sécurité et la reproductibilité des installations.
Q22 : Quelle option globale permet de lancer une commande Terraform depuis un dossier différent sans se déplacer ?
-
-path -
-chdir=RÉPERTOIRE -
-cwd -
-dir
Correction & Explication
Réponse : 2
- Justesse :
-chdirdoit être placé avant la sous-commande (ex:terraform -chdir=... plan).
Q23 : Comment afficher uniquement la valeur brute d’un output sans guillemets ni formatage ?
-
terraform output -raw [nom] -
terraform output -json -
terraform show output -
terraform get output
Correction & Explication
Réponse : 1
- Justesse :
-rawest très pratique pour récupérer des mots de passe ou des IPs dans des scripts Bash.
Q24 : Quelle est la différence entre terraform login et terraform login [hostname] ?
-
Aucune.
-
La première utilise app.terraform.io, la seconde cible une instance Terraform Enterprise spécifique.
-
La seconde est obligatoire.
-
La première est pour les comptes gratuits uniquement.
Correction & Explication
Réponse : 2
- Justesse : Permet de s’authentifier sur des instances privées (Enterprise).
Q25 : Que se passe-t-il si vous lancez terraform apply -auto-approve sans fichier de plan ?
-
Terraform échoue car il a besoin d’un fichier
.tfplan. -
Terraform génère un plan temporaire et l’applique immédiatement sans demander de confirmation.
-
Terraform demande quand même une confirmation pour les ressources critiques.
-
Terraform ne fait que rafraîchir le state.
Correction & Explication
Réponse : 2
- Justesse : Option utilisée dans les pipelines automatisés. Risqué car aucune vérification humaine n’est faite.
Q26 : Quelle commande permet de voir les schémas de données attendus par les providers installés ?
-
terraform providers schema -
terraform inspect -
terraform provider -show -
terraform debug schema
Correction & Explication
Réponse : 1
- Justesse : Utile pour les outils d’autocomplétion ou pour comprendre les attributs d’une ressource.
Q27 : Que fait l’option -parallelism=N ?
-
Elle définit le nombre de cœurs CPU utilisés.
-
Elle limite le nombre d’opérations simultanées sur les ressources (défaut : 10).
-
Elle permet de déployer sur N régions à la fois.
-
Elle définit le nombre de fichiers de config lus.
Correction & Explication
Réponse : 2
- Justesse : Utile pour éviter le “rate limiting” (limitation de débit) des APIs Cloud.
Q28 : Quelle commande permet d’afficher le message d’aide spécifique aux options de terraform state mv ?
-
terraform help state mv -
terraform state mv -h -
terraform state -help -
terraform h state mv
Correction & Explication
Réponse : 2
- Justesse : Placer
-haprès la commande complète donne l’aide contextuelle.
Q29 : À quoi sert l’option -verify-plugins=false dans terraform init ?
-
À accélérer l’initialisation.
-
À ignorer la vérification des signatures numériques des plugins (déconseillé en prod).
-
À utiliser des plugins écrits en Python.
-
À désactiver la mise à jour des plugins.
Correction & Explication
Réponse : 2
Justesse : Option de contournement de sécurité.
Pourquoi la 3 est fausse : Les plugins Terraform sont écrits en Go.
Q30 : Vous voulez supprimer un workspace nommé staging. Quelle est la syntaxe ?
-
terraform workspace rm staging -
terraform workspace delete staging -
terraform destroy workspace staging -
terraform workspace -delete staging
Correction & Explication
Réponse : 2
Justesse : La commande est
delete.Note : On ne peut pas supprimer le workspace “default” ni celui sur lequel on se trouve.
✅ Prochaines étapes
Tu peux maintenant copier ce bloc dans Obsidian. Veille à ce que le plugin Admonitions ou le support natif des Callouts soit activé pour profiter des blocs repliables.
Veux-tu que je fasse la même chose pour le cours Git que tu as partagé plus haut ?