From f54d9bacfb2c22c72bf6cde7c8fca35d55252377 Mon Sep 17 00:00:00 2001 From: James Boutaric Date: Thu, 4 Dec 2025 11:05:37 +0100 Subject: [PATCH] ajout outputs --- terraform/environments/dev/main.tf | 5 ---- terraform/environments/dev/outputs.tf | 29 ++++++++++++++++++ terraform/environments/dev/variables.tf | 6 +++- terraform/modules/compute/main.tf | 39 +++++++++++++------------ terraform/modules/compute/outputs.tf | 7 ++--- terraform/modules/compute/variables.tf | 11 ++++--- terraform/modules/iam/main.tf | 6 ---- terraform/modules/iam/outputs.tf | 11 +++++-- terraform/modules/iam/variables.tf | 7 +++-- terraform/modules/network/main.tf | 35 ++++++++++++++++------ terraform/modules/network/outputs.tf | 11 +++++-- terraform/modules/network/variables.tf | 6 ++++ 12 files changed, 115 insertions(+), 58 deletions(-) diff --git a/terraform/environments/dev/main.tf b/terraform/environments/dev/main.tf index a45ecf4..d85ea2a 100644 --- a/terraform/environments/dev/main.tf +++ b/terraform/environments/dev/main.tf @@ -1,8 +1,3 @@ -# À vous de : -# 1. Configurer le provider google -# 2. Appeler les trois modules avec les bonnes variables -# 3. Créer le fichier de configuration Ansible (template) - terraform { required_providers { google = { diff --git a/terraform/environments/dev/outputs.tf b/terraform/environments/dev/outputs.tf index e69de29..7fc8a0c 100644 --- a/terraform/environments/dev/outputs.tf +++ b/terraform/environments/dev/outputs.tf @@ -0,0 +1,29 @@ +output "ip_internes" { + value = module.compute.ip_internes +} + +output "ip_public_frontend" { + value = module.compute.ip_public_frontend +} + +output "nom_instances" { + value = module.compute.nom_instances +} + +output "service_account_email" { + description = "Email du compte de service Terraform." + value = module.iam.email +} + +output "service_account_key" { + description = "Clé privée du compte de service Terraform (sensitive)." + value = module.iam.key + sensitive = true +} +output "vpc" { + value = module.network.vpc +} + +output "subnets" { + value = module.network.subnets +} \ No newline at end of file diff --git a/terraform/environments/dev/variables.tf b/terraform/environments/dev/variables.tf index 242ce02..2531efd 100644 --- a/terraform/environments/dev/variables.tf +++ b/terraform/environments/dev/variables.tf @@ -1,4 +1,8 @@ -# définissez toutes les variables nécessaires avec des valeurs par défaut appropriées. +# variable "project_id" { +# description = "ID du projet GCP" +# type = string +# default = "mon-projet" +# } variable "project_name" { description = "Nom du projet" diff --git a/terraform/modules/compute/main.tf b/terraform/modules/compute/main.tf index 306f3c3..5a69189 100644 --- a/terraform/modules/compute/main.tf +++ b/terraform/modules/compute/main.tf @@ -1,25 +1,26 @@ -# À vous de créer : +# resource "google_compute_instance" "vm" { +# name = "ma-vm" +# machine_type = "e2-medium" +# zone = "europe-west1-b" -# 1. Instance frontend : -# - Image : debian-11 -# - Disque : 10GB -# - IP publique -# - Tags : frontend, ssh -# - OS Login enabled +# boot_disk { +# initialize_params { +# image = "debian-cloud/debian-11" +# size = 10 +# } +# } -# 2. Instance backend : -# - Image : debian-11 -# - Disque : 10GB -# - Pas d'IP publique (interne seulement) -# - Tags : backend, ssh -# - OS Login enabled +# network_interface { +# access_config {} # IP publique +# subnetwork = google_compute_subnetwork.subnet.id +# } -# 3. Instance database : -# - Image : debian-11 -# - Disque : 20GB -# - Pas d'IP publique -# - Tags : database, ssh -# - OS Login enabled +# tags = ["web", "app"] + +# metadata = { +# enable-oslogin = "TRUE" +# } +# } resource "google_compute_instance" "vm_frontend" { name = "vm-frontend" diff --git a/terraform/modules/compute/outputs.tf b/terraform/modules/compute/outputs.tf index e685448..0c3f1a5 100644 --- a/terraform/modules/compute/outputs.tf +++ b/terraform/modules/compute/outputs.tf @@ -1,7 +1,6 @@ -# À vous d'exposer : -# 1. Les IPs internes de toutes les instances -# 2. L'IP publique du frontend -# 3. Les noms des instances +# output "instance_ip" { +# value = google_compute_instance.main.network_interface[0].access_config[0].nat_ip +# } output "ip_internes" { value = { diff --git a/terraform/modules/compute/variables.tf b/terraform/modules/compute/variables.tf index 07ab6ea..94db1fb 100644 --- a/terraform/modules/compute/variables.tf +++ b/terraform/modules/compute/variables.tf @@ -1,9 +1,8 @@ -# À vous de définir les variables pour : -# - instance_type -# - zone -# - frontend_subnet_id -# - backend_subnet_id -# - database_subnet_id +# variable "project_id" { +# description = "ID du projet GCP" +# type = string +# default = "mon-projet" +# } variable "instance_type" { description = "type de l'instance" diff --git a/terraform/modules/iam/main.tf b/terraform/modules/iam/main.tf index eeafaa7..3357ab5 100644 --- a/terraform/modules/iam/main.tf +++ b/terraform/modules/iam/main.tf @@ -1,9 +1,3 @@ -# À vous de créer : -# 1. Un compte de service pour Terraform -# 2. Une clé pour ce compte de service -# 3. Les rôles IAM nécessaires -# 4. La configuration OS Login avec votre clé SSH - resource "google_service_account" "service_account" { account_id = "terraform" display_name = "terraform" diff --git a/terraform/modules/iam/outputs.tf b/terraform/modules/iam/outputs.tf index 48866d1..2bf6d77 100644 --- a/terraform/modules/iam/outputs.tf +++ b/terraform/modules/iam/outputs.tf @@ -1,12 +1,17 @@ -# À vous d'exposer : -# 1. L'email du compte de service -# 2. La clé du compte de service (sensitive = true) +# output "instance_ip" { +# value = google_compute_instance.main.network_interface[0].access_config[0].nat_ip +# } output "email" { description = "Service account email." value = google_service_account.service_account.email } +# output "vpc_id" { +# description = "ID of project VPC" +# value = module.vpc.vpc_id +# } + output "key" { description = "Service account private key." sensitive = true diff --git a/terraform/modules/iam/variables.tf b/terraform/modules/iam/variables.tf index a0b734d..e4027b7 100644 --- a/terraform/modules/iam/variables.tf +++ b/terraform/modules/iam/variables.tf @@ -1,5 +1,8 @@ -# À vous de définir : -# - project_id (string) +# variable "project_id" { +# description = "ID du projet GCP" +# type = string +# default = "mon-projet" +# } variable "project_id" { description = "ID du projet" diff --git a/terraform/modules/network/main.tf b/terraform/modules/network/main.tf index 041336b..b3abb94 100644 --- a/terraform/modules/network/main.tf +++ b/terraform/modules/network/main.tf @@ -1,19 +1,22 @@ -# À vous de créer : -# 1. Un VPC personnalisé avec auto_create_subnetworks = false -# 2. Trois sous-réseaux (frontend, backend, database) -# 3. Règles de firewall : -# - HTTP/HTTPS vers frontend -# - SSH vers toutes les instances -# - Port 8000 de frontend vers backend -# - Port 3306 de backend vers database - # VPC +# resource "google_compute_network" "vpc" { +# name = "mon-vpc" +# auto_create_subnetworks = false +# } + resource "google_compute_network" "vpc_terraform" { name = "vpc-terraform-2" auto_create_subnetworks = false } # Sous-réseau +# resource "google_compute_subnetwork" "subnet" { +# name = "mon-subnet" +# network = google_compute_network.vpc.id +# ip_cidr_range = "10.0.1.0/24" +# region = "europe-west1" +# } + resource "google_compute_subnetwork" "subnet_frontend" { name = "frontend-2" network = google_compute_network.vpc_terraform.id @@ -35,6 +38,20 @@ resource "google_compute_subnetwork" "subnet_database" { region = var.region } +# Règles de Pare-feu +# resource "google_compute_firewall" "allow_http" { +# name = "allow-http" +# network = google_compute_network.vpc.id + +# allow { +# protocol = "tcp" +# ports = ["80", "443"] +# } + +# source_ranges = ["0.0.0.0/0"] +# target_tags = ["web"] +# } + resource "google_compute_firewall" "allow_user_frontend" { name = "allow-user-frontend-2" network = google_compute_network.vpc_terraform.id diff --git a/terraform/modules/network/outputs.tf b/terraform/modules/network/outputs.tf index 2191456..29ae27e 100644 --- a/terraform/modules/network/outputs.tf +++ b/terraform/modules/network/outputs.tf @@ -1,11 +1,16 @@ -# À vous d'exposer : -# 1. L'ID du VPC -# 2. Les IDs des sous-réseaux sous forme de map +# output "instance_ip" { +# value = google_compute_instance.main.network_interface[0].access_config[0].nat_ip +# } output "vpc" { value = google_compute_network.vpc_terraform.id } +# output "vpc_id" { +# description = "ID of project VPC" +# value = module.vpc.vpc_id +# } + output "subnets" { value = { frontend = google_compute_subnetwork.subnet_frontend.id diff --git a/terraform/modules/network/variables.tf b/terraform/modules/network/variables.tf index 36786d4..e7ee67a 100644 --- a/terraform/modules/network/variables.tf +++ b/terraform/modules/network/variables.tf @@ -6,6 +6,12 @@ # - database_cidr (string) # - ssh_source_ranges (string) +# variable "project_id" { +# description = "ID du projet GCP" +# type = string +# default = "mon-projet" +# } + variable "project_name" { description = "Nom du projet" type = string