diff --git a/terraform/environments/dev/main.tf b/terraform/environments/dev/main.tf index e69de29..0deb0ff 100644 --- a/terraform/environments/dev/main.tf +++ b/terraform/environments/dev/main.tf @@ -0,0 +1,27 @@ +terraform { + required_providers { + google = { + source = "hashicorp/google" + version = "~> 6.0" + } + } +} + +provider "google" { + project = var.project_name + region = var.region +} + +module "network" { + source = "./modules/network" + + #variables d'entrée + project_name = var.project_name + region = var.region + + #autres variables spécifiques au module + 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/variables.tf b/terraform/environments/dev/variables.tf index e69de29..eee90eb 100644 --- a/terraform/environments/dev/variables.tf +++ b/terraform/environments/dev/variables.tf @@ -0,0 +1,35 @@ +variable "project_name" { + description = "nom du projet" + type = string + default = "projet-vertu" +} + +variable "region" { + description = "region" + type = string + default = "europe-west4" +} + +variable "frontend_cidr" { + description = "sous réseau frontend" + type = string + default = "10.0.1.0/24" +} + +variable "backend_cidr" { + description = "sous réseau backend" + type = string + default = "10.0.2.0/24" +} + +variable "database_cidr" { + description = "sous réseau database" + 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/network/main.tf b/terraform/modules/network/main.tf index e69de29..3b131cb 100644 --- a/terraform/modules/network/main.tf +++ b/terraform/modules/network/main.tf @@ -0,0 +1,82 @@ +# VPC +resource "google_compute_network" "tp7" { + name = "tp7" + auto_create_subnetworks = false +} + +# Sous-réseau frontend +resource "google_compute_subnetwork" "frontend" { + name = "frontend" + network = google_compute_network.vpc.id + ip_cidr_range = var.frontend_cidr + region = "europe-west4" +} + +# Sous-réseau backend +resource "google_compute_subnetwork" "backend" { + name = "backend" + network = google_compute_network.vpc.id + ip_cidr_range = var.backend_cidr + region = "europe-west4" +} + +# Sous-réseau database +resource "google_compute_subnetwork" "database" { + name = "database" + network = google_compute_network.vpc.id + ip_cidr_range = var.database_cidr + region = "europe-west4" +} + +# Règle de pare-feu +resource "google_compute_firewall" "allow_ssh" { + name = "allow-ssh" + network = google_compute_network.vpc.id + + allow { + protocol = "tcp" + ports = ["22"] + } + + source_ranges = ["0.0.0.0/0"] + target_tags = ["ssh"] +} + +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_front-to-back" { + name = "allow-front-to-back" + network = google_compute_network.vpc.id + + allow { + protocol = "tcp" + ports = ["8080"] + } + + source_ranges = ["frontend"] + target_tags = ["backend"] +} + +resource "google_compute_firewall" "allow_back-to-db" { + name = "allow-back-to-db" + network = google_compute_network.vpc.id + + allow { + protocol = "tcp" + ports = ["3306"] + } + + source_ranges = ["backend"] + target_tags = ["database"] +} \ No newline at end of file diff --git a/terraform/modules/network/variables.tf b/terraform/modules/network/variables.tf index e69de29..d20c7d0 100644 --- a/terraform/modules/network/variables.tf +++ b/terraform/modules/network/variables.tf @@ -0,0 +1,29 @@ +variable "project_name" { + description = "nom du projet" + type = string +} + +variable "region" { + description = "region" + type = string +} + +variable "frontend_cidr" { + description = "sous réseau frontend" + type = string +} + +variable "backend_cidr" { + description = "sous réseau backend" + type = string +} + +variable "database_cidr" { + description = "sous réseau database" + type = string +} + +variable "ssh_source_ranges" { + description = "ssh" + type = string +} \ No newline at end of file