Scenarios/Secure-Baseline/terraform/main.tf (102 lines of code) (raw):
data "azurerm_subscription" "current" {}
data "azurerm_client_config" "current" {}
# Resource Groups
resource "azurerm_resource_group" "hub" {
name = var.hub_name
location = lower(var.location)
}
resource "azurerm_resource_group" "spoke" {
name = var.spoke_name
location = lower(var.location)
}
resource "azurerm_log_analytics_workspace" "la" {
name = var.hub_name
location = var.location
resource_group_name = azurerm_resource_group.hub.name
sku = "PerGB2018"
}
module "vnet" {
source = "./modules/vnet"
hub_name = var.hub_name
hub_rg_name = azurerm_resource_group.hub.name
spoke_name = var.spoke_name
spoke_rg_name = azurerm_resource_group.spoke.name
fw_name = "azfw-${random_string.random.result}"
diag_name = "${var.hub_name}${random_string.random.result}"
location = lower(var.location)
la_id = azurerm_log_analytics_workspace.la.id
}
module "kv" {
source = "./modules/keyvault"
kv_name = "${var.hub_name}${random_string.random.result}"
location = var.location
resource_group_name = azurerm_resource_group.hub.name
vm_admin_password = random_password.pw.result
}
module "vm" {
source = "./modules/vm"
resource_group_name = azurerm_resource_group.hub.name
location = var.location
bastion_subnet_id = module.vnet.bastion_subnet_id
kv_id = module.kv.kv_id
vm_subnet_id = module.vnet.vm_subnet_id
vm_admin_username = var.vm_admin_username
}
module "supporting" {
source = "./modules/supporting"
location = var.location
hub_vnet_id = module.vnet.hub_vnet_id
spoke_vnet_id = module.vnet.spoke_vnet_id
private_endpoint_subnet_id = module.vnet.private_endpoint_subnet_id
spoke_rg_name = azurerm_resource_group.spoke.name
hub_rg_name = azurerm_resource_group.hub.name
depends_on = [
module.vnet
]
}
module "serviceprincipal" {
source = "./modules/serviceprincipal"
spoke_name = var.spoke_name
aro_spn_name = var.aro_spn_name
spoke_rg_name = azurerm_resource_group.spoke.name
hub_rg_name = azurerm_resource_group.hub.name
depends_on = [
module.vnet
]
}
module "aro" {
source = "./modules/aro"
location = var.location
spoke_vnet_id = module.vnet.spoke_vnet_id
master_subnet_id = module.vnet.master_subnet_id
worker_subnet_id = module.vnet.worker_subnet_id
rh_pull_secret = var.rh_pull_secret
sp_client_id = module.serviceprincipal.sp_client_id
sp_client_secret = module.serviceprincipal.sp_client_secret
aro_rp_object_id = var.aro_rp_object_id
spoke_rg_name = azurerm_resource_group.spoke.name
base_name = var.aro_base_name
domain = var.aro_domain
depends_on = [
module.serviceprincipal
]
}
module "frontdoor" {
source = "./modules/frontdoor"
location = var.location
aro_worker_subnet_id = module.vnet.worker_subnet_id
la_id = azurerm_log_analytics_workspace.la.id
random = random_string.random.result
aro_resource_group_name = module.aro.aro_resource_group_name
spoke_rg_name = azurerm_resource_group.spoke.name
ingress_ip = module.aro.ingress_ip
depends_on = [
module.aro
]
}
module "containerinsights" {
source = "./modules/containerinsights"
location = azurerm_log_analytics_workspace.la.location
workspace_resource_id = azurerm_log_analytics_workspace.la.id
workspace_name = azurerm_log_analytics_workspace.la.name
spoke_rg_name = azurerm_resource_group.hub.name
}