From fdbc1d04a31915f5692ebf1f3f3b216d21bb9eb9 Mon Sep 17 00:00:00 2001 From: Johan LEROY Date: Tue, 31 Mar 2026 11:51:58 +0200 Subject: [PATCH] deploy done atelier 2 --- README.md | 38 ++++++++++++++------------ atelier02.pdf | Bin 0 -> 42523 bytes main.tf | 48 +++++++++++++++++++++++++-------- outputs.tf | 19 ++++++++----- plan2.tfplan | Bin 0 -> 6598 bytes variables.tf | 72 +++++++++++++++++++++++++++----------------------- 6 files changed, 109 insertions(+), 68 deletions(-) create mode 100644 atelier02.pdf create mode 100644 plan2.tfplan diff --git a/README.md b/README.md index c8f3cd9..07a3d16 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,20 @@ -# ENI Terraform - Atelier 01 +# ENI Terraform - Atelier 02 ## Description -Projet Terraform pour deployer une infrastructure AWS basique dans le cadre du cours ENI. +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 `eu-west-3a` | -| Sous-reseau 2 | `aws_subnet` | CIDR `10.0.2.0/24` - AZ `eu-west-3b` | -| Instance EC2 | `aws_instance` | Type `t3.micro`, disque 30 Go (gp3) | +| 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 @@ -94,7 +97,7 @@ terraform show terraform state list # Detail d'une ressource specifique -terraform state show aws_instance.server +terraform state show aws_instance.servers[\"ubuntu\"] # Affiche les outputs (vpc_id, subnet_ids, etc.) terraform output @@ -124,12 +127,13 @@ terraform plan -var-file="custom.tfvars" ``` . -├── main.tf # Ressources AWS (VPC, subnets, EC2) +├── main.tf # Ressources AWS (VPC, subnets, EC2, EBS) ├── variables.tf # Variables avec valeurs par defaut et validations -├── outputs.tf # Valeurs de sortie (IDs, IP) +├── 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 +├── atelier01.pdf # Enonce de l'atelier 01 +├── atelier02.pdf # Enonce de l'atelier 02 └── README.md # Ce fichier ``` @@ -138,9 +142,10 @@ terraform plan -var-file="custom.tfvars" | Nom | Description | |-----|-------------| | `vpc_id` | ID du VPC | -| `subnet_ids` | IDs des 2 sous-reseaux | -| `instance_id` | ID de l'instance EC2 | -| `instance_private_ip` | IP privee de l'instance EC2 | +| `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 @@ -151,8 +156,7 @@ terraform plan -var-file="custom.tfvars" | `course_id` | `cours-tf-aws-s14` | Tag CourseId | | `trigramme` | `jle` | Prefixe des ressources | | `vpc_cidr` | `10.0.0.0/16` | CIDR du VPC | -| `subnet_cidrs` | `["10.0.1.0/24", "10.0.2.0/24"]` | CIDRs des sous-reseaux | -| `availability_zones` | `["eu-west-3a", "eu-west-3b"]` | Zones de disponibilite | -| `ami_id` | `ami-03638fc4f87bac487` | AMI de l'instance | -| `instance_type` | `t3.micro` | Type d'instance | -| `root_volume_size` | `30` | Taille du disque (Go) | +| `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) | diff --git a/atelier02.pdf b/atelier02.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5d27603c96a515c2a99dbe31095dc3fa8ac312a1 GIT binary patch literal 42523 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ℜcjB_Utw8h|QsNlUS>c?3@ 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\r7oJ+y3Or!J$5ST@h)r@ctNMud?FMh2r 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 urGbQzhlej-c>hWhJQ4rZK;jp1{FO33zP8@Je s.id } } -output "instance_id" { - description = "ID de l'instance EC2" - value = aws_instance.server.id +output "instance_ids" { + description = "IDs des instances EC2" + value = { for k, i in aws_instance.servers : k => i.id } } -output "instance_private_ip" { - description = "IP privee de l'instance EC2" - value = aws_instance.server.private_ip +output "instance_private_ips" { + description = "IPs privees des instances EC2" + value = { for k, i in aws_instance.servers : k => i.private_ip } +} + +output "ebs_volume_ids" { + description = "IDs des volumes EBS additionnels" + value = { for k, v in aws_ebs_volume.additional : k => v.id } } diff --git a/plan2.tfplan b/plan2.tfplan new file mode 100644 index 0000000000000000000000000000000000000000..e0f31107e5f32360cd666b31487ffd653ffe08b8 GIT binary patch literal 6598 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 literal 0 HcmV?d00001 diff --git a/variables.tf b/variables.tf index 71c7df0..161fba9 100644 --- a/variables.tf +++ b/variables.tf @@ -59,42 +59,42 @@ variable "vpc_cidr" { } } -variable "subnet_cidrs" { - description = "Liste des CIDR pour les sous-reseaux (un par AZ)" - type = list(string) - default = ["10.0.1.0/24", "10.0.2.0/24"] - - validation { - condition = length(var.subnet_cidrs) == 2 - error_message = "Il faut exactement 2 sous-reseaux." +variable "subnets" { + description = "Map des sous-reseaux avec name et cidr" + type = map(object({ + name = string + cidr = string + })) + default = { + subnet1 = { + name = "subnet-1" + cidr = "10.0.1.0/24" + } + subnet2 = { + name = "subnet-2" + cidr = "10.0.2.0/24" + } } } -variable "availability_zones" { - description = "Liste des zones de disponibilite" - type = list(string) - default = ["eu-west-3a", "eu-west-3b"] - - validation { - condition = length(var.availability_zones) == 2 - error_message = "Il faut exactement 2 zones de disponibilite." - } -} - -variable "ami_id" { - description = "ID de l'AMI pour l'instance EC2" - type = string - default = "ami-03638fc4f87bac487" -} - -variable "instance_type" { - description = "Type d'instance EC2" - type = string - default = "t3.micro" - - validation { - condition = var.instance_type == "t3.micro" - error_message = "Le type d'instance doit etre t3.micro." +variable "instances" { + description = "Map des instances EC2 avec ami, type et subnet" + type = map(object({ + ami = string + instance_type = string + subnet_key = string + })) + default = { + ubuntu = { + ami = "ami-03638fc4f87bac487" + instance_type = "t3.micro" + subnet_key = "subnet1" + } + amazon_linux = { + ami = "ami-063039a3666cc5ce3" + instance_type = "t3.micro" + subnet_key = "subnet2" + } } } @@ -108,3 +108,9 @@ variable "root_volume_size" { error_message = "La taille du disque doit etre entre 1 et 30 Go." } } + +variable "ebs_volume_size" { + description = "Taille du volume EBS additionnel en Go" + type = number + default = 10 +}