diff --git a/terraform/environments/dev/main.tf b/terraform/environments/dev/main.tf index 5d48223..888fdcf 100644 --- a/terraform/environments/dev/main.tf +++ b/terraform/environments/dev/main.tf @@ -21,4 +21,13 @@ module "network" { backend_cidr = var.backend_cidr database_cidr = var.database_cidr ssh_source_ranges = var.ssh_source_ranges -} \ No newline at end of file +} + +module "compute" { + source = "../../modules/compute" + instance_type = var.instance_type + zone = var.zone + frontend_subnet_id = var.frontend_subnet_id + backend_subnet_id = var.backend_subnet_id + database_subnet_id = var.database_subnet_id +} diff --git a/terraform/environments/dev/variable.tf b/terraform/environments/dev/variable.tf index 7f1df68..dd94252 100644 --- a/terraform/environments/dev/variable.tf +++ b/terraform/environments/dev/variable.tf @@ -33,8 +33,39 @@ variable "database_cidr" { type = string default = "10.0.3.0/24" } + variable "ssh_source_ranges" { description = "ssh" type = string default = "0.0.0.0/0" +} + +variable "frontend_subnet_id" { + description = "frontend subnet id" + type = string + default = module.network.subnet_ids["frontend"] +} + +variable "backend_subnet_id" { + description = "backend subnet id" + type = string + default = module.network.subnet_ids["backend"] +} + +variable "database_subnet_id" { + description = "database subnet id" + type = string + default = module.network.subnet_ids["database"] +} + +variable "zone" { + description = "zone" + type = string + default = var.region +"-b" +} + +variable "instance_type" { + description = "instance_type" + type = string + default = "e2-small" } \ No newline at end of file diff --git a/terraform/modules/compute/main.tf b/terraform/modules/compute/main.tf index e69de29..9e22672 100644 --- a/terraform/modules/compute/main.tf +++ b/terraform/modules/compute/main.tf @@ -0,0 +1,69 @@ +resource "google_compute_instance" "instance_frontend" { + name = "instance de frontend" + machine_type = var.instance_type + zone = var.zone + + boot_disk { + initialize_params { + image = "debian-cloud/debian-11" + size = 10 + } + } + + network_interface { + access_config {} # IP publique + subnetwork = var.frontend_subnet_id + } + + tags = ["frontend", "ssh"] + + metadata = { + enable-oslogin = "TRUE" + } +} + +resource "google_compute_instance" "instance_backend" { + name = "instance de backend" + 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" "instance_database" { + name = "instance de database" + machine_type = var.instance_type + zone = var.zone + + boot_disk { + initialize_params { + image = "debian-cloud/debian-11" + size = 10 + } + } + + 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 index e69de29..efeacb1 100644 --- a/terraform/modules/compute/outputs.tf +++ b/terraform/modules/compute/outputs.tf @@ -0,0 +1,19 @@ +output "instance_ip" { + value = { + frontend =google_compute_instance.instance_frontend.network_interface[0].network_ip + backend =google_compute_instance.instance_backend.network_interface[0].network_ip + database =google_compute_instance.instance_database.network_interface[0].network_ip + } +} + +output "private_ip_frontend" { + value = google_compute_instance.instance_frontend.network_interface[0].access_config[0].nat_ip +} + +output "name_instance" { + value = { + frontend = google_compute_instance.instance_frontend.name + backend = google_compute_instance.instance_backend.name + database = google_compute_instance.instance_database.name + } +} \ No newline at end of file diff --git a/terraform/modules/compute/variable.tf b/terraform/modules/compute/variable.tf index e69de29..f932195 100644 --- a/terraform/modules/compute/variable.tf +++ b/terraform/modules/compute/variable.tf @@ -0,0 +1,19 @@ +variable "instance_type" { + type = string +} + +variable "zone" { + type = string +} + +variable "frontend_subnet_id" { + type = string +} + +variable "backend_subnet_id" { + type = string +} + +variable "database_subnet_id" { + type = string +} diff --git a/terraform/modules/network/outputs.tf b/terraform/modules/network/outputs.tf index e69de29..b7921d7 100644 --- a/terraform/modules/network/outputs.tf +++ b/terraform/modules/network/outputs.tf @@ -0,0 +1,11 @@ +output "vpc_id" { + value = google_compute_network.vpc.id +} + +output "subnet_ids" { + value = { + frontend = google_compute_subnetwork.frontend.id + backend = google_compute_subnetwork.backend.id + database = google_compute_subnetwork.database.id + } +} \ No newline at end of file