terraform { required_providers { google = { source = "hashicorp/google" version = ">= 6.27.0" } } } provider "google" { # Configuration options region = var.hub.region zone = var.hub.zone project = var.hub.project } module "hub_network" { source = "./modules/network" name = "${var.hub.name}-vpc" subnets = [{ name = "${var.hub.name}-network" cidr = var.hub.cidr region = var.hub.region }] } module "spoke_network" { source = "./modules/network" name = "${var.spoke.name}-vpc" subnets = [ { name = "${var.spoke.name}-network" cidr = var.spoke.cidr region = var.spoke.region } ] } module "hub_to_spoke_peering" { source = "./modules/network-peering" left = { project_id = var.hub.project network_id = module.hub_network.id network_name = module.hub_network.name } right = { project_id = var.spoke.project network_id = module.spoke_network.id network_name = module.spoke_network.name } hub_spoke = true depends_on = [ module.hub_network, module.spoke_network ] } module "vm-hub" { source = "./modules/linux-vm" name = "vm-${var.hub.name}" network_name = "${var.hub.name}-vpc" subnet_name = "${var.hub.name}-network" ssh = var.ssh depends_on = [module.hub_network] } module "vm-spoke" { source = "./modules/linux-vm" name = "vm-${var.spoke.name}" network_name = "${var.spoke.name}-vpc" subnet_name = "${var.spoke.name}-network" ssh = var.ssh depends_on = [module.spoke_network] }