scenarios/aca-internal/terraform/modules/01-hub/main.tf (89 lines of code) (raw):

resource "random_string" "random" { length = 5 special = false lower = true } module "naming" { source = "../../../../shared/terraform/modules/naming" uniqueId = random_string.random.result environment = var.environment workloadName = var.workloadName location = var.location } resource "azurerm_resource_group" "hubResourceGroup" { name = var.hubResourceGroupName != "" ? var.hubResourceGroupName : module.naming.resourceNames["rgHubName"] location = var.location tags = var.tags } module "vnet" { source = "../../../../shared/terraform/modules/networking/vnet" networkName = module.naming.resourceNames["vnetHub"] location = var.location resourceGroupName = azurerm_resource_group.hubResourceGroup.name addressSpace = var.vnetAddressPrefixes tags = var.tags ddosProtectionPlanId = var.ddosProtectionPlanId subnets = [ { name = var.gatewaySubnetName addressPrefixes = [var.gatewaySubnetAddressPrefix] }, { name = var.azureFirewallSubnetName addressPrefixes = [var.azureFirewallSubnetAddressPrefix] }, { name = var.azureFirewallSubnetManagementName addressPrefixes = [var.azureFirewallSubnetManagementAddressPrefix] } ] } module "firewall" { source = "../../../../shared/terraform/modules/firewall" firewallName = module.naming.resourceNames["firewall"] location = var.location hubResourceGroupName = azurerm_resource_group.hubResourceGroup.name subnetFirewallId = module.vnet.subnetIds[var.azureFirewallSubnetName] subnetFirewallManagementId = module.vnet.subnetIds[var.azureFirewallSubnetManagementName] publicIpFirewallName = module.naming.resourceNames["firewallPip"] publicIpFirewallManagementName = module.naming.resourceNames["firewallManagementPip"] firewallPolicyName = module.naming.resourceNames["firewallPolicy"] firewallPolicyRuleCollectionGroups = local.firewallPolicyRuleCollectionGroups tags = var.tags } module "bastion" { source = "../../../../shared/terraform/modules/bastion" vnetName = module.vnet.vnetName vnetResourceGroupName = azurerm_resource_group.hubResourceGroup.name location = var.location bastionNsgName = module.naming.resourceNames["bastionNsg"] addressPrefixes = var.bastionSubnetAddressPrefixes bastionPipName = module.naming.resourceNames["bastionPip"] tags = var.tags bastionHostName = module.naming.resourceNames["bastion"] } module "logAnalyticsWorkspace" { source = "../../../../shared/terraform/modules/monitoring/log-analytics" resourceGroupName = azurerm_resource_group.hubResourceGroup.name location = var.location workspaceName = module.naming.resourceNames["logAnalyticsWorkspace"] tags = var.tags } module "diagnostics" { source = "../../../../shared/terraform/modules/diagnostics" logAnalyticsWorkspaceId = module.logAnalyticsWorkspace.workspaceId resources = [ { type = "firewall-hub" id = module.firewall.firewallId }, { type = "vnet-hub" id = module.vnet.vnetId }, { type = "bastion" id = module.bastion.bastionHostId } ] }