From 1e8a026e41ebb2f75a1e0bc7285d68958bd3d9ab Mon Sep 17 00:00:00 2001 From: Jossua91 Date: Wed, 3 Dec 2025 16:54:57 +0100 Subject: [PATCH] feat: compute module --- terraform/environments/dev/main.tf | 23 ++++++--- terraform/environments/dev/variables.tf | 2 +- terraform/modules/compute/main.tf | 67 +++++++++++++++++++++++++ terraform/modules/compute/outputs.tf | 22 ++++++++ terraform/modules/compute/variables.tf | 24 +++++++++ terraform/modules/network/main.tf | 4 +- terraform/modules/network/outputs.tf | 6 +-- 7 files changed, 134 insertions(+), 14 deletions(-) create mode 100644 terraform/modules/compute/main.tf create mode 100644 terraform/modules/compute/outputs.tf create mode 100644 terraform/modules/compute/variables.tf diff --git a/terraform/environments/dev/main.tf b/terraform/environments/dev/main.tf index 590fbcf..07cb82e 100644 --- a/terraform/environments/dev/main.tf +++ b/terraform/environments/dev/main.tf @@ -2,7 +2,7 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = "~> 6.0" + version = "~> 6.12.0" } } } @@ -12,14 +12,21 @@ provider "google" { region = var.region } -# Module Network module "network" { - source = "../../modules/network" - + source = "../../modules/network" project_name = var.project_name - region = var.region - frontend_cidr = var.frontend_cidr - backend_cidr = var.backend_cidr - database_cidr = var.database_cidr + region = var.region + frontend_cidr = var.frontend_cidr + backend_cidr = var.backend_cidr + database_cidr = var.database_cidr ssh_source_ranges = var.ssh_source_ranges +} + +module "compute" { + source = "../../modules/compute" + instance_type = var.instance_type + zone = var.zone + frontend_subnet_id = module.network.subnet_ids["frontend"] + backend_subnet_id = module.network.subnet_ids["backend"] + database_subnet_id = module.network.subnet_ids["database"] } \ No newline at end of file diff --git a/terraform/environments/dev/variables.tf b/terraform/environments/dev/variables.tf index 68f10b2..fd88eda 100644 --- a/terraform/environments/dev/variables.tf +++ b/terraform/environments/dev/variables.tf @@ -24,7 +24,7 @@ variable "zone" { variable "instance_type" { description = "Type d'instance GCP" type = string - default = "n1-standard-1" + default = "e2-small" } variable "frontend_cidr" { diff --git a/terraform/modules/compute/main.tf b/terraform/modules/compute/main.tf new file mode 100644 index 0000000..73efe3e --- /dev/null +++ b/terraform/modules/compute/main.tf @@ -0,0 +1,67 @@ +resource "google_compute_instance" "frontend-vm" { + name = "frontend-vm" + machine_type = var.instance_type + zone = var.zone + + boot_disk { + initialize_params { + image = "debian-cloud/debian-11" + size = 10 + } + } + + network_interface { + access_config {} + subnetwork = var.frontend_subnet_id + } + + tags = ["frontend", "ssh"] + + metadata = { + enable-oslogin = "TRUE" + } +} + +resource "google_compute_instance" "backend-vm" { + name = "backend-vm" + machine_type = var.instance_type + zone = var.zone + + boot_disk { + initialize_params { + image = "debian-cloud/debian-11" + size = 10 + } + } + + network_interface { + subnetwork = var.backend_subnet_id + } + tags = ["backend", "ssh"] + + metadata = { + enable-oslogin = "TRUE" + } +} + +resource "google_compute_instance" "database-vm" { + name = "database-vm" + machine_type = var.instance_type + zone = var.zone + + boot_disk { + initialize_params { + image = "debian-cloud/debian-11" + size = 20 + } + } + + network_interface { + subnetwork = var.database_subnet_id + } + tags = ["database", "ssh"] + + metadata = { + enable-oslogin = "TRUE" + } +} \ No newline at end of file diff --git a/terraform/modules/compute/outputs.tf b/terraform/modules/compute/outputs.tf new file mode 100644 index 0000000..52ad1da --- /dev/null +++ b/terraform/modules/compute/outputs.tf @@ -0,0 +1,22 @@ +output "internal_ips" { + description = "IPs internes de toutes les instances" + value = { + frontend = google_compute_instance.frontend-vm.network_interface[0].network_ip + backend = google_compute_instance.backend-vm.network_interface[0].network_ip + database = google_compute_instance.database-vm.network_interface[0].network_ip + } +} + +output "frontend_public_ip" { + description = "IP publique du frontend" + value = google_compute_instance.frontend-vm.network_interface[0].access_config[0].nat_ip +} + +output "instance_names" { + description = "Noms des instances" + value = { + frontend = google_compute_instance.frontend-vm.name + backend = google_compute_instance.backend-vm.name + database = google_compute_instance.database-vm.name + } +} \ No newline at end of file diff --git a/terraform/modules/compute/variables.tf b/terraform/modules/compute/variables.tf new file mode 100644 index 0000000..11a1c63 --- /dev/null +++ b/terraform/modules/compute/variables.tf @@ -0,0 +1,24 @@ +variable "instance_type" { + description = "Type d'instance" + type = string +} + +variable "zone" { + description = "Zone GCP des instances" + type = string +} + +variable "frontend_subnet_id" { + description = "ID du sous-réseau frontend" + type = string +} + +variable "backend_subnet_id" { + description = "ID du sous-réseau backend" + type = string +} + +variable "database_subnet_id" { + description = "ID du sous-réseau database" + type = string +} \ No newline at end of file diff --git a/terraform/modules/network/main.tf b/terraform/modules/network/main.tf index 3d053b6..eee2dc5 100644 --- a/terraform/modules/network/main.tf +++ b/terraform/modules/network/main.tf @@ -62,7 +62,7 @@ resource "google_compute_firewall" "allow_frontend_to_backend" { ports = ["8000"] } - source_ranges = [var.frontend_cidr] + source_tags = ["frontend"] target_tags = ["backend"] } @@ -75,6 +75,6 @@ resource "google_compute_firewall" "allow_backend_to_database" { ports = ["3306"] } - source_ranges = [var.backend_cidr] + source_tags = ["backend"] target_tags = ["database"] } \ No newline at end of file diff --git a/terraform/modules/network/outputs.tf b/terraform/modules/network/outputs.tf index c8d67e0..522c443 100644 --- a/terraform/modules/network/outputs.tf +++ b/terraform/modules/network/outputs.tf @@ -6,8 +6,8 @@ output "vpc_id" { output "subnet_ids" { description = "IDs des sous-réseaux frontend, backend, database" value = { - frontend = google_compute_subnetwork.frontend.id - backend = google_compute_subnetwork.backend.id - database = google_compute_subnetwork.database.id + "frontend" = google_compute_subnetwork.frontend.id + "backend" = google_compute_subnetwork.backend.id + "database" = google_compute_subnetwork.database.id } } \ No newline at end of file