Notifications de mise à jour de l'application
Informatique

Terraform

Relis le plan avant le yes

53 flashcards
Informatique
Rappel espacé

Questions & réponses

1

Qu'est-ce qu'une approche déclarative, par opposition à impérative ?

On décrit l'état voulu, l'outil calcule les actions ; en impératif, on écrit les actions une par une

2

Qu'est-ce que Terraform ?

Un outil d'infrastructure as code déclaratif : on décrit l'infra en HCL, il applique les changements

3

Qu'est-ce que le HCL ?

HashiCorp Configuration Language : le langage à blocs des fichiers .tf

4

Qu'est-ce qu'un provider Terraform ?

Le plugin qui traduit les ressources déclarées en appels à l'API d'un service (aws, google, kubernetes…)

5

Structure d'un bloc resource ?

resource "type" "nomlocal" { arguments } ; référencé ailleurs par type.nomlocal.attribut

6

Qu'est-ce qu'un bloc data (data source) ?

Une lecture d'information existante, sans la gérer : AMI la plus récente, VPC par défaut, compte courant

7

Que fait terraform init ?

Télécharge les providers et modules, et configure le backend du state

8

Qu'est-ce que le state Terraform ?

Le fichier qui associe chaque ressource de la config à son identifiant réel chez le fournisseur

9

Que fait terraform plan ?

Calcule et affiche ce que Terraform ferait (créer, modifier, recréer, détruire), sans rien toucher

10

Que fait terraform apply ?

Exécute les changements du plan, après confirmation, et met à jour le state

11

Que fait terraform destroy ?

Détruit toutes les ressources du state, après confirmation

12

Pourquoi le state est-il une donnée sensible ?

Il contient en clair les attributs des ressources, mots de passe et clés compris

13

Qu'est-ce qu'un backend distant ?

Un stockage partagé du state (S3, GCS, HCP Terraform…) avec verrouillage, pour travailler à plusieurs

14

À quoi sert le verrou (lock) du state ?

À empêcher deux apply simultanés sur le même state, qui le corrompraient

15

Qu'est-ce que le drift ?

Une différence entre l'infra réelle et le state, créée par une modification hors Terraform

16

Comment déclarer une variable d'entrée ?

variable "nom" { type = string ; default = … ; description = … }, puis var.nom

17

À quoi sert un bloc output ?

À exposer une valeur (IP, ARN, endpoint) à la fin de l'apply, à un module parent ou à un autre state

18

À quoi sert un bloc locals ?

À nommer une expression réutilisée dans la config, sans en faire une variable d'entrée

19

Quel fichier de valeurs Terraform charge-t-il automatiquement ?

terraform.tfvars (et tout fichier *.auto.tfvars)

20

Qu'est-ce qu'un module Terraform ?

Un dossier de configuration réutilisable, appelé avec des variables, qui renvoie des outputs

21

Pourquoi épingler la version d'un module ?

Sinon terraform init -upgrade prend la dernière version et la config change sans commit

22

Pourquoi préférer for_each à count pour créer plusieurs ressources ?

for_each identifie par clé stable ; avec count, supprimer l'élément 0 décale les index et recrée tout

23

Comment Terraform connaît-il l'ordre de création des ressources ?

Par les références entre elles : si B utilise A.id, A est créé avant B

24

Que fait `lifecycle { prevent_destroy = true }` ?

Fait échouer tout plan qui détruirait la ressource

25

Que signifie -/+ (must be replaced) dans un plan ?

L'attribut modifié ne peut pas changer sur place : Terraform détruira la ressource et la recréera

26

Que fait `lifecycle { createbeforedestroy = true }` ?

Lors d'un remplacement, crée la nouvelle ressource avant de détruire l'ancienne

27

Que fait `lifecycle { ignore_changes = [tags] }` ?

Terraform ne propose plus de corriger cet attribut s'il change hors de lui

28

Qu'est-ce qu'un bloc dynamic ?

Un bloc imbriqué répété à partir d'une collection (ex. une règle ingress par port)

29

Comment mettre sous Terraform une ressource créée à la main ?

Avec un bloc import (ou terraform import) : la ressource entre dans le state sans être recréée

30

Comment renommer une ressource dans la config sans la détruire et la recréer ?

Avec un bloc moved { from = …, to = … } (ou terraform state mv)

31

Que fait terraform state rm ?

Retire une ressource du state sans la détruire : Terraform l'oublie, elle continue d'exister

32

Comment forcer la recréation d'une ressource saine ?

terraform apply -replace=aws_instance.web

33

Pourquoi -target est-il à réserver aux urgences ?

Il applique un sous-ensemble et laisse le reste potentiellement incohérent avec la config

34

Qu'est-ce qu'un workspace Terraform ?

Un state séparé pour la même configuration (dev, staging, prod), sélectionné par terraform workspace select

35

Pourquoi les provisioners (remote-exec, local-exec) sont-ils déconseillés ?

Ils cassent le modèle déclaratif : pas de plan, pas d'idempotence, pas de retour en arrière

36

Que fait `sensitive = true` sur une variable ou un output ?

Masque la valeur dans les sorties de plan, d'apply et de la liste des outputs, pas dans le state

37

À quoi sert .terraform.lock.hcl et faut-il le commiter ?

Il fige les versions exactes des providers ; oui, on le commite

38

Où contraint-on la version de Terraform et des providers ?

Dans le bloc terraform { requiredversion, requiredproviders }

39

Que vérifie terraform validate ?

La syntaxe et la cohérence interne de la config, sans appeler aucune API

40

Qu'est-ce qu'OpenTofu ?

Le fork communautaire de Terraform sous Linux Foundation, créé après le passage de Terraform en licence BSL

41

Terraform est-il idempotent ?

Oui : réappliquer une config inchangée ne fait rien (No changes)

42

Un apply échoue à mi-chemin : dans quel état est-on ?

État partiel cohérent : ce qui a été créé est dans le state, le reste non ; on corrige et on relance

43

Où mettre un secret dont une ressource a besoin, sans le commiter ?

Hors du code : lu à l'apply depuis un gestionnaire de secrets (data source)

44

Comment une config lit-elle les outputs d'un autre state ?

Avec la data source terraformremotestate, qui lit le backend de l'autre state

45

Pourquoi enregistrer le plan dans un fichier (`plan -out=tfplan`) avant l'apply en CI ?

Pour appliquer exactement ce qui a été revu, pas un plan recalculé entre-temps

46

À quoi sert terraform console ?

À tester une expression HCL ou lire une valeur du state de façon interactive

47

Pourquoi découper un gros state en plusieurs ?

Un plan plus rapide, un rayon d'explosion limité, et des équipes qui n'attendent pas le même verrou

48

Comment créer plusieurs exemplaires d'une ressource ?

Avec le méta-argument for_each sur une map ou un set (ou count pour un nombre)

49

Quand utiliser depends_on sur une ressource ?

Quand une dépendance existe réellement mais n'apparaît dans aucune référence d'attribut

50

Comment passer un secret à une ressource sans qu'il soit écrit dans le state ?

Par un argument write-only (Terraform 1.11+), alimenté par une valeur éphémère

51

Comment faire échouer un plan sur une valeur de variable invalide ?

Avec un bloc validation dans la variable : condition + error_message

52

Que signifie la contrainte de version `~> 5.50` ?

Au moins 5.50, et toute version 5.x au-dessus, jamais 6.0

53

Que fait terraform fmt ?

Réécrit les fichiers .tf dans la mise en forme canonique (indentation, alignement des =)

Prêt à t'y mettre ?