diff --git a/terraform/environments/dev/main.tf b/terraform/environments/dev/main.tf index ec8f309..3103c96 100644 --- a/terraform/environments/dev/main.tf +++ b/terraform/environments/dev/main.tf @@ -3,6 +3,7 @@ # 2. Appeler les trois modules avec les bonnes variables # 3. Créer le fichier de configuration Ansible (template) + terraform { required_providers { google = { @@ -25,4 +26,14 @@ module "network" { 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 be0ce47..7e9ff19 100644 --- a/terraform/environments/dev/variables.tf +++ b/terraform/environments/dev/variables.tf @@ -1,19 +1,11 @@ -# 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" + description = "Nom du projet cidr" type = string - default = "My First Project" + default = "My Firdt Project" } variable "region" { - description = "Region du projet" + description = "region du cidr" type = string default = "europe-west9" } @@ -37,13 +29,28 @@ variable "database_cidr" { } variable "ssh_source_ranges" { - description = "" + description = "ssh_source_range du projet cidr" type = string default = "0.0.0.0/0" } + variable "project_id" { - description = "ID du projet" + description = "id du projet" type = string default = "plenary-plane-478713-q1" -} \ No newline at end of file +} + + +variable "instance_type" { + description = "type d'instance de vm" + type = string + default = "e2-micro" +} + + +variable "zone" { + description = "zone du projet" + type = string + default = "europe-west9-b" +} diff --git a/terraform/modules/compute/main.tf b/terraform/modules/compute/main.tf index fb71e07..b28c55a 100644 --- a/terraform/modules/compute/main.tf +++ b/terraform/modules/compute/main.tf @@ -23,7 +23,7 @@ # } resource "google_compute_instance" "vm_frontend" { - name = "frontend-instance" + name = "frontend" machine_type = var.instance_type zone = var.zone @@ -34,22 +34,22 @@ resource "google_compute_instance" "vm_frontend" { } } - network_interface { + access_config {} # IP publique subnetwork = var.frontend_subnet_id - - access_config {} } - tags= ["frontend", "ssh"] + tags = ["frontend", "ssh"] metadata = { enable-oslogin = "TRUE" } } + + resource "google_compute_instance" "vm_backend" { - name = "backend-instance" + name = "backend" machine_type = var.instance_type zone = var.zone @@ -60,24 +60,23 @@ resource "google_compute_instance" "vm_backend" { } } - network_interface { subnetwork = var.backend_subnet_id - } - tags = ["backend", "ssh"] + tags = ["backend", "ssh"] - metadata = { - enable-oslogin = "TRUE" - } + metadata = { + enable-oslogin = "TRUE" + } } + + resource "google_compute_instance" "vm_database" { - name = "database-instance" + name = "database" machine_type = var.instance_type zone = var.zone - boot_disk { initialize_params { @@ -86,15 +85,13 @@ resource "google_compute_instance" "vm_database" { } } - network_interface { subnetwork = var.database_subnet_id - } - tags = ["database", "ssh"] + 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 index 14a1593..f76f7fc 100644 --- a/terraform/modules/compute/outputs.tf +++ b/terraform/modules/compute/outputs.tf @@ -2,8 +2,8 @@ # value = google_compute_instance.main.network_interface[0].access_config[0].nat_ip # } - -output "ip_internes" { +output "instance_internal_ips" { + description = "IPs internes de toutes les instances" value = { frontend = google_compute_instance.vm_frontend.network_interface[0].network_ip backend = google_compute_instance.vm_backend.network_interface[0].network_ip @@ -11,14 +11,16 @@ output "ip_internes" { } } -output "ip_public_frontend" { - value = google_compute_instance.vm_frontend.network_interface[0].access_config[0].nat_ip +output "frontend_public_ip" { + description = "IP publique de l'instance frontend" + value = google_compute_instance.vm_frontend.network_interface[0].access_config[0].nat_ip } -output "nom_instances" { +output "instance_names" { + description = "Noms de toutes les instances" value = { frontend = google_compute_instance.vm_frontend.name - backend = google_compute_instance.vm_backend.name + backend = google_compute_instance.vm_backend.name database = google_compute_instance.vm_database.name } } \ No newline at end of file diff --git a/terraform/modules/compute/variables.tf b/terraform/modules/compute/variables.tf index a708ea7..0d822cb 100644 --- a/terraform/modules/compute/variables.tf +++ b/terraform/modules/compute/variables.tf @@ -5,28 +5,32 @@ # } variable "instance_type" { - description = "Type de machine à utiliser pour les instances" + description = "Nom du projet cidr" type = string - } + variable "zone" { - description = "Zone où déployer les instances" + description = "Nom du projet cidr" type = string } + variable "frontend_subnet_id" { - description = "ID du sous-réseau frontend" + description = "Nom du projet cidr" type = string } + + variable "backend_subnet_id" { - description = "ID du sous-réseau backend" + description = "Nom du projet cidr" type = string } + variable "database_subnet_id" { - description = "ID du sous-réseau database" + description = "Nom du projet cidr" type = string } diff --git a/terraform/modules/network/main.tf b/terraform/modules/network/main.tf index 27b15f1..a567807 100644 --- a/terraform/modules/network/main.tf +++ b/terraform/modules/network/main.tf @@ -3,8 +3,8 @@ # name = "mon-vpc" # auto_create_subnetworks = false # } -resource "google_compute_network" "vpc_terraform" { - name = "vpc-terraform" +resource "google_compute_network" "vpc" { + name = "mon-vpc" auto_create_subnetworks = false } @@ -15,23 +15,24 @@ resource "google_compute_network" "vpc_terraform" { # ip_cidr_range = "10.0.1.0/24" # region = "europe-west1" # } -resource "google_compute_subnetwork" "subnet_frontend" { - name = "frontend" - network = google_compute_network.vpc_terraform.id + +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" "subnet_backend" { - name = "backend" - network = google_compute_network.vpc_terraform.id +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" "subnet_database" { - name = "database" - network = google_compute_network.vpc_terraform.id +resource "google_compute_subnetwork" "database" { + name = "ma-database" + network = google_compute_network.vpc.id ip_cidr_range = var.database_cidr region = var.region } @@ -49,9 +50,9 @@ resource "google_compute_subnetwork" "subnet_database" { # target_tags = ["web"] # } -resource "google_compute_firewall" "allow_user_frontend" { - name = "allow-user-frontend" - network = google_compute_network.vpc_terraform.id +resource "google_compute_firewall" "frontend_firewall" { + name = "frontend" + network = google_compute_network.vpc.id allow { protocol = "tcp" @@ -62,9 +63,10 @@ resource "google_compute_firewall" "allow_user_frontend" { target_tags = ["frontend"] } -resource "google_compute_firewall" "allow_frontend_backend" { - name = "allow-frontend-backend" - network = google_compute_network.vpc_terraform.id + +resource "google_compute_firewall" "backend_firewall" { + name = "backend" + network = google_compute_network.vpc.id allow { protocol = "tcp" @@ -75,22 +77,9 @@ resource "google_compute_firewall" "allow_frontend_backend" { target_tags = ["backend"] } -resource "google_compute_firewall" "allow_ssh_all" { - name = "allow-ssh-all" - network = google_compute_network.vpc_terraform.id - - allow { - protocol = "tcp" - ports = ["22"] - } - - source_ranges = ["0.0.0.0/0"] - target_tags = ["ssh"] -} - -resource "google_compute_firewall" "allow_backend_database" { - name = "allow-backend-database" - network = google_compute_network.vpc_terraform.id +resource "google_compute_firewall" "database_firewall" { + name = "database" + network = google_compute_network.vpc.id allow { protocol = "tcp" @@ -99,4 +88,17 @@ resource "google_compute_firewall" "allow_backend_database" { source_tags = ["backend"] target_tags = ["database"] +} + +resource "google_compute_firewall" "ssh_firewall" { + name = "ssh" + network = google_compute_network.vpc.id + + allow { + protocol = "tcp" + ports = ["22"] + } + + source_ranges = ["0.0.0.0/0"] + target_tags = ["ssh"] } \ No newline at end of file diff --git a/terraform/modules/network/outputs.tf b/terraform/modules/network/outputs.tf index 75f811e..4e72520 100644 --- a/terraform/modules/network/outputs.tf +++ b/terraform/modules/network/outputs.tf @@ -2,16 +2,18 @@ # value = google_compute_instance.main.network_interface[0].access_config[0].nat_ip # } -output "vpc_terraform_output" { - description = "ID du VPC crée " - value = google_compute_network.vpc_terraform.id +output "vpc_terraform" { + description = "ID du VPC créé" + value = google_compute_network.vpc.id } -output "list_id" { - description = "Map des IDS des osus réseaux " +output "subnet_ids" { + description = "Map des IDs des sous-réseaux" value = { - frontend = google_compute_subnetwork.subnet_frontend.id - backend = google_compute_subnetwork.subnet_backend.id - database = google_compute_subnetwork.subnet_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 diff --git a/terraform/modules/network/variables.tf b/terraform/modules/network/variables.tf index c492c89..69e28db 100644 --- a/terraform/modules/network/variables.tf +++ b/terraform/modules/network/variables.tf @@ -5,12 +5,12 @@ # } variable "project_name" { - description = "Nom du projet" + description = "Nom du projet cidr" type = string } variable "region" { - description = "Region du projet" + description = "region du cidr" type = string } @@ -30,6 +30,8 @@ variable "database_cidr" { } variable "ssh_source_ranges" { - description = "" + description = "ssh_source_range du projet cidr" type = string -} \ No newline at end of file +} + +