From 35d6692eadd85d6ce06407d18c79b6a0c80a35f1 Mon Sep 17 00:00:00 2001 From: akagundu Date: Wed, 3 Dec 2025 16:29:13 +0100 Subject: [PATCH] maj --- terraform/environments/dev/main.tf | 23 +++++++ terraform/environments/dev/outputs.tf | 0 terraform/environments/dev/variable.tf | 39 ++++++++++++ terraform/modules/compute/main.tf | 0 terraform/modules/compute/outputs.tf | 0 terraform/modules/compute/variable.tf | 0 terraform/modules/iam/main.tf | 0 terraform/modules/iam/outputs.tf | 0 terraform/modules/iam/variable.tf | 0 terraform/modules/network/main.tf | 85 ++++++++++++++++++++++++++ terraform/modules/network/outputs.tf | 0 terraform/modules/network/variable.tf | 32 ++++++++++ 12 files changed, 179 insertions(+) create mode 100644 terraform/environments/dev/main.tf create mode 100644 terraform/environments/dev/outputs.tf create mode 100644 terraform/environments/dev/variable.tf create mode 100644 terraform/modules/compute/main.tf create mode 100644 terraform/modules/compute/outputs.tf create mode 100644 terraform/modules/compute/variable.tf create mode 100644 terraform/modules/iam/main.tf create mode 100644 terraform/modules/iam/outputs.tf create mode 100644 terraform/modules/iam/variable.tf create mode 100644 terraform/modules/network/main.tf create mode 100644 terraform/modules/network/outputs.tf create mode 100644 terraform/modules/network/variable.tf diff --git a/terraform/environments/dev/main.tf b/terraform/environments/dev/main.tf new file mode 100644 index 0000000..947eab0 --- /dev/null +++ b/terraform/environments/dev/main.tf @@ -0,0 +1,23 @@ +terraform { + required_providers { + google = { + source = "hashicorp/google" + version = "~> 6.12.0" + } + } +} + +provider "google" { + project = var.project_id + region = var.region +} + +module "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 + ssh_source_ranges = var.ssh_source_ranges +} \ No newline at end of file diff --git a/terraform/environments/dev/outputs.tf b/terraform/environments/dev/outputs.tf new file mode 100644 index 0000000..e69de29 diff --git a/terraform/environments/dev/variable.tf b/terraform/environments/dev/variable.tf new file mode 100644 index 0000000..7fe2388 --- /dev/null +++ b/terraform/environments/dev/variable.tf @@ -0,0 +1,39 @@ +variable "project_name" { + description = "project name" + type = string + default = "nom de projet" +} + +variable "project_id" { + description = "project id" + type = string + default = "dazzling-alpha-477917-q9" +} + +variable "region" { + description = "region " + type = string + default = "europe-west9-b" + +}variable "frontend_cidr" { + description = "CIDR for frontend subnet" + type = string + default = "10.0.1.0/24" +} + +variable "backend_cidr" { + description = "CIDR for backend subnet" + type = string + default = "10.0.2.0/24" +} + +variable "database_cidr" { + description = "CIDR for database subnet" + type = string + default = "10.0.3.0/24" +} +variable "ssh_source_ranges" { + description = "ssh" + type = string + default = "0.0.0.0/0" +} \ No newline at end of file diff --git a/terraform/modules/compute/main.tf b/terraform/modules/compute/main.tf new file mode 100644 index 0000000..e69de29 diff --git a/terraform/modules/compute/outputs.tf b/terraform/modules/compute/outputs.tf new file mode 100644 index 0000000..e69de29 diff --git a/terraform/modules/compute/variable.tf b/terraform/modules/compute/variable.tf new file mode 100644 index 0000000..e69de29 diff --git a/terraform/modules/iam/main.tf b/terraform/modules/iam/main.tf new file mode 100644 index 0000000..e69de29 diff --git a/terraform/modules/iam/outputs.tf b/terraform/modules/iam/outputs.tf new file mode 100644 index 0000000..e69de29 diff --git a/terraform/modules/iam/variable.tf b/terraform/modules/iam/variable.tf new file mode 100644 index 0000000..e69de29 diff --git a/terraform/modules/network/main.tf b/terraform/modules/network/main.tf new file mode 100644 index 0000000..9ccb5b5 --- /dev/null +++ b/terraform/modules/network/main.tf @@ -0,0 +1,85 @@ +# VPC +resource "google_compute_network" "vpc" { + name = "mon-vpc" + auto_create_subnetworks = false +} + +# Sous-réseau + +resource "google_compute_subnetwork" "frontend" { + name = "mon-frontend" + network = google_compute_network.vpc.id + ip_cidr_range = var.frontend_cidr + region = var.region +} + +resource "google_compute_subnetwork" "backend" { + name = "mon-backend" + network = google_compute_network.vpc.id + ip_cidr_range = var.backend_cidr + region = var.region +} + +resource "google_compute_subnetwork" "database" { + name = "mon-database" + network = google_compute_network.vpc.id + ip_cidr_range = var.database_cidr + region = var.region +} + +# Pare-Feu + + +resource "google_compute_firewall" "frontend_http" { + name = "frontend-http" + network = google_compute_network.vpc.id + + allow { + protocol = "tcp" + ports = ["80", "443"] + } + + source_ranges = ["0.0.0.0/0"] + target_tags = ["frontend"] + +} + +resource "google_compute_firewall" "ssh" { + name = "ssh" + network = google_compute_network.vpc.id + + allow { + protocol = "tcp" + ports = ["22"] + } + + source_ranges = [var.ssh_source_ranges] + target_tags = ["ssh"] +} + +resource "google_compute_firewall" "front_back" { + name = "front_back" + network = google_compute_network.vpc.id + + allow { + protocol = "tcp" + ports = ["8000"] + } + + source_ranges = ["frontend"] + target_tags = ["backend"] +} + +resource "google_compute_firewall" "back_data" { + name = "back_data" + network = google_compute_network.vpc.id + + allow { + protocol = "tcp" + ports = ["3306"] + } + + source_ranges = ["backend"] + target_tags = ["database"] +} + diff --git a/terraform/modules/network/outputs.tf b/terraform/modules/network/outputs.tf new file mode 100644 index 0000000..e69de29 diff --git a/terraform/modules/network/variable.tf b/terraform/modules/network/variable.tf new file mode 100644 index 0000000..a8ea431 --- /dev/null +++ b/terraform/modules/network/variable.tf @@ -0,0 +1,32 @@ +variable "project_name" { + description = "project name" + type = string +} + +variable "project_id" { + description = "project id" + type = string +} + +variable "region" { + description = "region " + type = string + +}variable "frontend_cidr" { + description = "CIDR for frontend subnet" + type = string +} + +variable "backend_cidr" { + description = "CIDR for backend subnet" + type = string +} + +variable "database_cidr" { + description = "CIDR for database subnet" + type = string +} +variable "ssh_source_ranges" { + description = "ssh" + type = string +} \ No newline at end of file