Aller au contenu principal

Préparation à la Certification Terraform


Présentation de la certification

La HashiCorp Certified: Terraform Associate valide vos compétences en Infrastructure as Code avec Terraform.

Informations clés

CritèreDétail
Prix~$70.50 USD
Durée60 minutes
Questions~57 questions
FormatQCM, multi-sélection, vrai/faux
Score minimum70%
Validité2 ans
ModeEn ligne (proctored)

Objectifs de l'examen

1. Comprendre l'Infrastructure as Code (IaC)

  • Expliquer les avantages de l'IaC
  • Comprendre le workflow Terraform

Questions types :

  • Quels sont les avantages de l'IaC par rapport à la gestion manuelle ?
  • Quel est l'ordre du workflow Terraform standard ?

2. Comprendre le but de Terraform

  • Multi-cloud et provider-agnostic
  • Avantages de Terraform vs autres outils

Questions types :

  • Pourquoi utiliser Terraform plutôt que des scripts Bash ?
  • Comment Terraform gère-t-il plusieurs cloud providers ?

3. Comprendre les bases de Terraform

# Bloc de configuration de base
terraform {
required_version = ">= 1.0.0"

required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}

provider "aws" {
region = "eu-west-1"
}

resource "aws_instance" "example" {
ami = "ami-12345678"
instance_type = "t2.micro"

tags = {
Name = "example"
}
}

À maîtriser :

  • Blocs : terraform, provider, resource, data, variable, output, module
  • Types de données : string, number, bool, list, map, object, tuple
  • Interpolation et expressions

4. Utiliser Terraform CLI

# Commandes essentielles
terraform init # Initialiser le répertoire
terraform validate # Valider la configuration
terraform plan # Prévisualiser les changements
terraform apply # Appliquer les changements
terraform destroy # Détruire l'infrastructure

# Commandes avancées
terraform fmt # Formater le code
terraform state list # Lister les ressources
terraform import # Importer une ressource existante
terraform taint # Marquer pour recréation
terraform workspace # Gérer les workspaces

5. Interagir avec les modules

# Utiliser un module
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.0.0"

name = "my-vpc"
cidr = "10.0.0.0/16"
}

# Accéder aux outputs du module
output "vpc_id" {
value = module.vpc.vpc_id
}

Points clés :

  • Sources : local, registry, GitHub, S3
  • Versioning des modules
  • Variables et outputs

6. Naviguer dans le workflow Terraform

  • Core workflow : Write → Plan → Apply
  • Remote backends
  • State management

7. Implémenter et maintenir le state

# Backend S3
terraform {
backend "s3" {
bucket = "my-terraform-state"
key = "prod/terraform.tfstate"
region = "eu-west-1"
encrypt = true
dynamodb_table = "terraform-locks"
}
}

À connaître :

  • Purpose du state
  • Backends : local vs remote
  • State locking
  • Sensitive data dans le state

8. Lire, générer et modifier la configuration

# Variables
variable "instance_type" {
description = "EC2 instance type"
type = string
default = "t3.micro"

validation {
condition = contains(["t3.micro", "t3.small"], var.instance_type)
error_message = "Must be t3.micro or t3.small."
}
}

# Data sources
data "aws_ami" "amazon_linux" {
most_recent = true
owners = ["amazon"]

filter {
name = "name"
values = ["amzn2-ami-hvm-*-x86_64-gp2"]
}
}

# Locals
locals {
common_tags = {
Environment = var.environment
ManagedBy = "Terraform"
}
}

# Outputs
output "instance_ip" {
description = "Public IP of the instance"
value = aws_instance.example.public_ip
sensitive = false
}

9. Comprendre Terraform Cloud/Enterprise

  • Remote execution
  • Private module registry
  • Sentinel policies
  • Teams et governance

Questions d'entraînement

Section 1 : IaC Concepts

Q1. Quels sont les avantages de l'Infrastructure as Code ?

  • A) Versioning de l'infrastructure
  • B) Déploiement répétable
  • C) Documentation automatique
  • D) Toutes les réponses

Réponse : D


Q2. Dans quel ordre s'exécute le workflow Terraform standard ?

  • A) Apply → Plan → Init
  • B) Init → Apply → Plan
  • C) Init → Plan → Apply
  • D) Plan → Init → Apply

Réponse : C


Section 2 : Terraform CLI

Q3. Quelle commande permet de formater le code Terraform ?

  • A) terraform format
  • B) terraform fmt
  • C) terraform lint
  • D) terraform style

Réponse : B


Q4. Que fait terraform init -upgrade ?

  • A) Met à jour Terraform
  • B) Met à jour les providers vers les dernières versions
  • C) Met à jour le state
  • D) Met à jour les modules

Réponse : B (et D aussi - met à jour providers ET modules)


Q5. Comment appliquer les changements sans confirmation interactive ?

  • A) terraform apply --yes
  • B) terraform apply -auto-approve
  • C) terraform apply -force
  • D) terraform apply --no-confirm

Réponse : B


Section 3 : State

Q6. Où est stocké le state Terraform par défaut ?

  • A) Dans le cloud provider
  • B) Dans un fichier local terraform.tfstate
  • C) Dans Terraform Cloud
  • D) Dans un bucket S3

Réponse : B


Q7. Quelle commande liste les ressources dans le state ?

  • A) terraform list
  • B) terraform state show
  • C) terraform state list
  • D) terraform resources

Réponse : C


Q8. Comment supprimer une ressource du state sans la détruire ?

  • A) terraform destroy -target=resource
  • B) terraform state rm resource
  • C) terraform delete resource
  • D) terraform remove resource

Réponse : B


Section 4 : Configuration

Q9. Quel type de bloc permet de récupérer des données existantes ?

  • A) resource
  • B) data
  • C) query
  • D) fetch

Réponse : B


Q10. Comment référencer une variable dans Terraform ?

  • A) ${variable.name}
  • B) $variable.name
  • C) var.name
  • D) variable["name"]

Réponse : C


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

# count - basé sur un nombre
resource "aws_instance" "example" {
count = 3
ami = "ami-12345678"
}

# for_each - basé sur une collection
resource "aws_instance" "example" {
for_each = toset(["web", "app", "db"])
ami = "ami-12345678"
tags = {
Name = each.key
}
}
  • A) Pas de différence
  • B) count utilise des indices, for_each utilise des clés
  • C) for_each est plus lent
  • D) count ne supporte que les nombres

Réponse : B


Section 5 : Modules

Q12. Quelles sont les sources valides pour un module ?

  • A) Local path
  • B) Terraform Registry
  • C) GitHub
  • D) Toutes les réponses

Réponse : D


Q13. Comment accéder à un output d'un module enfant ?

  • A) module.child.output_name
  • B) child.output_name
  • C) output.child.output_name
  • D) modules.child.outputs.output_name

Réponse : A


Section 6 : Providers

Q14. Que se passe-t-il si vous ne spécifiez pas de version de provider ?

  • A) Erreur
  • B) Utilise la dernière version
  • C) Utilise la version 1.0.0
  • D) Demande interactivement

Réponse : B


Q15. Comment utiliser plusieurs configurations du même provider ?

provider "aws" {
region = "eu-west-1"
}

provider "aws" {
alias = "us"
region = "us-east-1"
}

resource "aws_instance" "eu" {
# Utilise le provider par défaut
}

resource "aws_instance" "us" {
provider = aws.us # Utilise l'alias
}

Réponse : Utiliser l'attribut alias


Section 7 : Workspaces

Q16. Quelle commande liste les workspaces ?

  • A) terraform workspace show
  • B) terraform workspace list
  • C) terraform workspaces
  • D) terraform list workspace

Réponse : B


Q17. Quel workspace est créé par défaut ?

  • A) main
  • B) default
  • C) master
  • D) production

Réponse : B


Conseils pour l'examen

Avant l'examen

  1. Pratiquez : Faites les projets de ce cours
  2. Lisez la documentation : terraform.io/docs
  3. Faites des labs : HashiCorp Learn
  4. Testez-vous : Questions d'entraînement

Pendant l'examen

  1. Gérez votre temps : ~1 min par question
  2. Lisez attentivement : Attention aux "NOT", "EXCEPT"
  3. Éliminez : Réduisez les options
  4. Marquez et revenez : Ne bloquez pas sur une question

Sujets à maîtriser absolument

SujetImportance
Workflow (init, plan, apply)⭐⭐⭐⭐⭐
State management⭐⭐⭐⭐⭐
Variables et outputs⭐⭐⭐⭐⭐
Modules⭐⭐⭐⭐
Providers⭐⭐⭐⭐
Data sources⭐⭐⭐⭐
Terraform Cloud⭐⭐⭐
Workspaces⭐⭐⭐

Ressources

Documentation officielle

Labs pratiques

Livres recommandés

  • "Terraform: Up and Running" - Yevgeniy Brikman
  • "Infrastructure as Code" - Kief Morris

Récapitulatif du cours

Félicitations ! Vous avez complété le cours Terraform Pratiques Avancées.

Ce que vous avez appris

  1. ✅ VPC Multi-AZ production-ready
  2. ✅ Application Web hautement disponible
  3. ✅ Cluster Kubernetes (EKS)
  4. ✅ Architecture Serverless
  5. ✅ Gestion multi-environnements
  6. ✅ Pipeline CI/CD complet
  7. ✅ Stack de monitoring
  8. ✅ Déploiement multi-cloud
  9. ✅ Troubleshooting avancé
  10. ✅ Préparation certification

Prochaines étapes

  1. Pratiquez : Refaites les projets dans votre compte AWS
  2. Certifiez-vous : Passez la certification Terraform Associate
  3. Évoluez : Explorez Terraform Enterprise et Sentinel

Bonne chance pour la certification ! 🎯


← Troubleshooting | Table des matières →