# Définition du disque de démarrage
locals {
  disk_config = {
    frontend = 10
    backend  = 10
    database = 20 # 20GB pour la base de données
  }
}

# Instance Frontend (publique)
resource "google_compute_instance" "frontend_instance" {
  project      = var.project_id
  name         = "frontend-instance"
  machine_type = var.instance_type
  zone         = var.zone
  tags         = ["frontend", "ssh"] # Tags pour les règles de firewall

  boot_disk {
    initialize_params {
      image = var.image
      size  = local.disk_config.frontend
    }
  }

  network_interface {
    subnetwork = var.frontend_subnet_id
    # Configuration IP publique
    access_config {
      # Laissez vide pour IP éphémère
    }
  }

  metadata = {
    enable-oslogin = "TRUE" # OS Login enabled
  }
}

# Instance Backend (privée)
resource "google_compute_instance" "backend_instance" {
  project      = var.project_id
  name         = "backend-instance"
  machine_type = var.instance_type
  zone         = var.zone
  tags         = ["backend", "ssh"]

  boot_disk {
    initialize_params {
      image = var.image
      size  = local.disk_config.backend
    }
  }

  network_interface {
    subnetwork = var.backend_subnet_id
    # PAS de bloc access_config pour n'avoir qu'une IP interne
  }

  metadata = {
    enable-oslogin = "TRUE"
  }
}

# Instance Database (privée)
resource "google_compute_instance" "database_instance" {
  project      = var.project_id
  name         = "database-instance"
  machine_type = var.instance_type
  zone         = var.zone
  tags         = ["database", "ssh"]

  boot_disk {
    initialize_params {
      image = var.image
      size  = local.disk_config.database
    }
  }

  network_interface {
    subnetwork = var.database_subnet_id
    # PAS de bloc access_config pour n'avoir qu'une IP interne
  }

  metadata = {
    enable-oslogin = "TRUE"
  }
}