fdbc1d04a31915f5692ebf1f3f3b216d21bb9eb9
ENI Terraform - Atelier 02
Description
Projet Terraform pour deployer une infrastructure AWS dans le cadre du cours ENI.
Ressources creees
| Ressource | Type | Details |
|---|---|---|
| VPC | aws_vpc |
CIDR 10.0.0.0/16 |
| Sous-reseau 1 | aws_subnet |
CIDR 10.0.1.0/24 - AZ dynamique |
| Sous-reseau 2 | aws_subnet |
CIDR 10.0.2.0/24 - AZ dynamique |
| Instance Ubuntu | aws_instance |
Type t3.micro, sur sous-reseau 1 |
| Instance Amazon Linux | aws_instance |
Type t3.micro, sur sous-reseau 2 |
| Volume EBS Ubuntu | aws_ebs_volume |
10 Go gp3, attache a l'instance Ubuntu |
| Volume EBS Amazon Linux | aws_ebs_volume |
10 Go gp3, attache a l'instance Amazon Linux |
Tags appliques
- Owner :
johan.leroy2023 - CourseId :
cours-tf-aws-s14 - Name : prefixe par le trigramme
jle
Pre-requis
- Terraform >= 1.0
- Un compte AWS avec les credentials configurees
- Region :
eu-west-3(Paris)
Configurer les credentials AWS
# Option 1 : Variables d'environnement (copier depuis le portail AWS)
export AWS_ACCESS_KEY_ID="..."
export AWS_SECRET_ACCESS_KEY="..."
export AWS_SESSION_TOKEN="..."
# Option 2 : AWS CLI
aws configure
Portail de connexion : https://d-99677b87c0.awsapps.com/start
Commandes Terraform
Initialisation
# Telecharge les providers et initialise le projet
terraform init
Validation
# Verifie la syntaxe des fichiers .tf
terraform validate
# Formate les fichiers .tf selon les conventions
terraform fmt
# Formate et verifie sans modifier (utile en CI)
terraform fmt -check
Planification
# Affiche les ressources qui seront creees/modifiees/supprimees
terraform plan
# Sauvegarde le plan dans un fichier
terraform plan -out=plan.tfplan
Deploiement
# Cree les ressources (demande confirmation)
terraform apply
# Applique sans confirmation (attention !)
terraform apply -auto-approve
# Applique un plan sauvegarde
terraform apply plan.tfplan
Inspection
# Affiche l'etat complet des ressources deployees
terraform show
# Liste les ressources gerees par Terraform
terraform state list
# Detail d'une ressource specifique
terraform state show aws_instance.servers[\"ubuntu\"]
# Affiche les outputs (vpc_id, subnet_ids, etc.)
terraform output
Destruction
# Supprime toutes les ressources (demande confirmation)
terraform destroy
# Supprime sans confirmation (attention !)
terraform destroy -auto-approve
Surcharge de variables
# Surcharger une variable en ligne de commande
terraform plan -var="trigramme=abc"
# Utiliser un fichier de variables
terraform plan -var-file="custom.tfvars"
Structure du projet
.
├── main.tf # Ressources AWS (VPC, subnets, EC2, EBS)
├── variables.tf # Variables avec valeurs par defaut et validations
├── outputs.tf # Valeurs de sortie (IDs, IPs)
├── .gitignore # Fichiers exclus du depot
├── .terraform.lock.hcl # Verrouillage des versions de providers
├── atelier01.pdf # Enonce de l'atelier 01
├── atelier02.pdf # Enonce de l'atelier 02
└── README.md # Ce fichier
Outputs
| Nom | Description |
|---|---|
vpc_id |
ID du VPC |
subnet_ids |
Map des IDs des sous-reseaux |
instance_ids |
Map des IDs des instances EC2 |
instance_private_ips |
Map des IPs privees des instances EC2 |
ebs_volume_ids |
Map des IDs des volumes EBS additionnels |
Variables
| Variable | Default | Description |
|---|---|---|
aws_region |
eu-west-3 |
Region AWS |
owner |
johan.leroy2023 |
Tag Owner |
course_id |
cours-tf-aws-s14 |
Tag CourseId |
trigramme |
jle |
Prefixe des ressources |
vpc_cidr |
10.0.0.0/16 |
CIDR du VPC |
subnets |
map(object) |
Sous-reseaux avec name et cidr |
instances |
map(object) |
Instances avec ami, type et subnet_key |
root_volume_size |
30 |
Taille du disque racine (Go) |
ebs_volume_size |
10 |
Taille du volume EBS additionnel (Go) |
Description
Languages
HCL
100%