diff --git a/terraform/modules/compute/main.tf b/terraform/modules/compute/main.tf index e69de29..af01b63 100644 --- a/terraform/modules/compute/main.tf +++ b/terraform/modules/compute/main.tf @@ -0,0 +1,72 @@ +resource "google_compute_instance" "frontend" { + name = "${var.project_name}-frontend-vm" + machine_type = var.instance_type + zone = var.zone + + boot_disk { + initialize_params { + image = "debian-cloud/debian-11" + size = 10 + } + } + + network_interface { + subnetwork = var.frontend_subnet_id + access_config {} + } + + tags = ["frontend", "ssh"] + + metadata = { + enable-oslogin = "TRUE" + startup-script = var.startup_script + } +} + +resource "google_compute_instance" "backend" { + name = "${var.project_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" + startup-script = var.startup_script + } +} + +resource "google_compute_instance" "database" { + name = "${var.project_name}-database-vm" + 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" + startup-script = var.startup_script + } +} diff --git a/terraform/modules/compute/outputs.tf b/terraform/modules/compute/outputs.tf index e69de29..e9898a0 100644 --- a/terraform/modules/compute/outputs.tf +++ b/terraform/modules/compute/outputs.tf @@ -0,0 +1,19 @@ +output "ip_internes" { + value = { + frontend = google_compute_instance.frontend.network_interface[0].network_ip + backend = google_compute_instance.backend.network_interface[0].network_ip + database = google_compute_instance.database.network_interface[0].network_ip + } +} + +output "ip_public_frontend" { + value = google_compute_instance.frontend.network_interface[0].access_config[0].nat_ip +} + +output "nom_instances" { + value = { + frontend = google_compute_instance.frontend.name + backend = google_compute_instance.backend.name + database = google_compute_instance.database.name + } +} diff --git a/terraform/modules/compute/variables.tf b/terraform/modules/compute/variables.tf index e69de29..06f760b 100644 --- a/terraform/modules/compute/variables.tf +++ b/terraform/modules/compute/variables.tf @@ -0,0 +1,27 @@ +variable "project_name" { + type = string +} + +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 +} + +variable "startup_script" { + type = string +}