terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 6.12.0"
    }
  }
}

provider "google" {
  project = var.project_id
  region  = var.region
}

# ------------------------
# Module NETWORK
# ------------------------

module "network" {
  source            = "../../modules/network"
  project_name      = var.project_name
  region           = var.region
  frontend_cidr    = var.frontend_cidr
  backend_cidr     = var.backend_cidr
  database_cidr    = var.database_cidr
  ssh_source_ranges = var.ssh_source_ranges
}

# ------------------------
# Module COMPUTE
# ------------------------

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"]
}

# ------------------------
# Module IAM
# ------------------------

module "iam" {
  source     = "../../modules/iam"
  project_id = var.project_id
}

# ------------------------
# Fichier template Ansible
# ------------------------

data "templatefile" "ansible_cfg" {
  template = file("../../template/ansible.cfg.tpl")

  vars = {
    frontend_ip = module.compute.frontend_public_ip
    backend_ip  = module.compute.internal_ips["backend"]
    db_ip       = module.compute.internal_ips["database"]
  }
}
