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ère | Détail |
|---|---|
| Prix | ~$70.50 USD |
| Durée | 60 minutes |
| Questions | ~57 questions |
| Format | QCM, multi-sélection, vrai/faux |
| Score minimum | 70% |
| Validité | 2 ans |
| Mode | En 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)
countutilise des indices,for_eachutilise des clés - C)
for_eachest plus lent - D)
countne 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
- Pratiquez : Faites les projets de ce cours
- Lisez la documentation : terraform.io/docs
- Faites des labs : HashiCorp Learn
- Testez-vous : Questions d'entraînement
Pendant l'examen
- Gérez votre temps : ~1 min par question
- Lisez attentivement : Attention aux "NOT", "EXCEPT"
- Éliminez : Réduisez les options
- Marquez et revenez : Ne bloquez pas sur une question
Sujets à maîtriser absolument
| Sujet | Importance |
|---|---|
| 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
- ✅ VPC Multi-AZ production-ready
- ✅ Application Web hautement disponible
- ✅ Cluster Kubernetes (EKS)
- ✅ Architecture Serverless
- ✅ Gestion multi-environnements
- ✅ Pipeline CI/CD complet
- ✅ Stack de monitoring
- ✅ Déploiement multi-cloud
- ✅ Troubleshooting avancé
- ✅ Préparation certification
Prochaines étapes
- Pratiquez : Refaites les projets dans votre compte AWS
- Certifiez-vous : Passez la certification Terraform Associate
- Évoluez : Explorez Terraform Enterprise et Sentinel
Bonne chance pour la certification ! 🎯