85 lines
1.6 KiB
Terraform
85 lines
1.6 KiB
Terraform
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]
|
|
}
|