scenarios/aca-internal/terraform/main.tf (123 lines of code) (raw):

module "hub" { source = "./modules/01-hub" workloadName = var.workloadName environment = var.environment hubResourceGroupName = var.hubResourceGroupName location = var.location vnetAddressPrefixes = var.hubVnetAddressPrefixes enableBastion = var.enableBastion bastionSubnetAddressPrefixes = var.bastionSubnetAddressPrefixes gatewaySubnetAddressPrefix = var.gatewaySubnetAddressPrefix azureFirewallSubnetAddressPrefix = var.azureFirewallSubnetAddressPrefix azureFirewallSubnetManagementAddressPrefix = var.azureFirewallSubnetManagementAddressPrefix infraSubnetAddressPrefix = var.infraSubnetAddressPrefix tags = var.tags } module "spoke" { source = "./modules/02-spoke" workloadName = var.workloadName environment = var.environment spokeResourceGroupName = var.spokeResourceGroupName location = var.location vnetAddressPrefixes = var.spokeVnetAddressPrefixes infraSubnetAddressPrefix = var.infraSubnetAddressPrefix infraSubnetName = var.infraSubnetName privateEndpointsSubnetAddressPrefix = var.privateEndpointsSubnetAddressPrefix applicationGatewaySubnetAddressPrefix = var.applicationGatewaySubnetAddressPrefix hubVnetId = module.hub.hubVnetId vmSize = var.vmSize vmAdminUsername = var.vmAdminUsername vmAdminPassword = var.vmAdminPassword vmLinuxSshAuthorizedKeys = var.vmLinuxSshAuthorizedKeys vmLinuxAuthenticationType = var.vmLinuxAuthenticationType vmJumpboxOSType = var.vmJumpboxOSType jumpboxSubnetAddressPrefix = var.vmJumpBoxSubnetAddressPrefix firewallPrivateIp = module.hub.firewallPrivateIp tags = var.tags routeSpokeTrafficInternally = var.routeSpokeTrafficInternally } module "supportingServices" { source = "./modules/03-supporting-services" workloadName = var.workloadName environment = var.environment location = var.location spokeResourceGroupName = module.spoke.spokeResourceGroupName aRecords = var.aRecords hubResourceGroupName = module.hub.hubResourceGroupName hubVnetId = module.hub.hubVnetId spokeVnetId = module.spoke.spokeVNetId spokePrivateEndpointSubnetId = module.spoke.spokePrivateEndpointsSubnetId containerRegistryPullRoleAssignment = var.containerRegistryPullRoleAssignment keyVaultPullRoleAssignment = var.keyVaultPullRoleAssignment clientIP = var.clientIP logAnalyticsWorkspaceId = module.spoke.logAnalyticsWorkspaceId supportingResourceGroupName = var.supportingResourceGroupName vnetLinks = [ { "name" = module.spoke.spokeVNetName "vnetId" = module.spoke.spokeVNetId "resourceGroupName" = module.spoke.spokeResourceGroupName "registrationEnabled" = false }, { "name" = module.hub.hubVnetName "vnetId" = module.hub.hubVnetId "resourceGroupName" = module.hub.hubResourceGroupName "registrationEnabled" = false }] tags = var.tags } module "containerAppsEnvironment" { source = "./modules/04-container-apps-environment" workloadName = var.workloadName environment = var.environment location = var.location spokeResourceGroupName = module.spoke.spokeResourceGroupName hubResourceGroupName = module.hub.hubResourceGroupName appInsightsName = var.appInsightsName hubVnetId = module.hub.hubVnetId spokeVnetId = module.spoke.spokeVNetId spokeInfraSubnetId = module.spoke.spokeInfraSubnetId logAnalyticsWorkspaceId = module.spoke.logAnalyticsWorkspaceId workloadProfiles = var.workloadProfiles tags = var.tags vnetLinks = [ { name = module.spoke.spokeVNetName vnetId = module.spoke.spokeVNetId resourceGroupName = module.spoke.spokeResourceGroupName registrationEnabled = false }, { name = module.hub.hubVnetName vnetId = module.hub.hubVnetId resourceGroupName = module.hub.hubResourceGroupName registrationEnabled = false }] } module "helloWorldApp" { source = "./modules/05-hello-world-sample-app" deployApp = var.deployHelloWorldSample resourceGroupName = module.spoke.spokeResourceGroupName helloWorldContainerAppName = var.helloWorldContainerAppName containerAppsEnvironmentId = module.containerAppsEnvironment.containerAppsEnvironmentId containerRegistryUserAssignedIdentityId = module.supportingServices.containerRegistryUserAssignedIdentityId workloadProfileName = var.workloadProfiles != [] ? var.workloadProfiles.0.name : "Consumption" tags = var.tags } # If you would like to deploy an Application Gateway and have provided your IP address for KeyVault access, leave this module uncommented # If you would like to keep your KeyVault private, comment out this module module "applicationGateway" { source = "./modules/06-application-gateway" workloadName = var.workloadName environment = var.environment location = var.location resourceGroupName = module.spoke.spokeResourceGroupName keyVaultName = module.supportingServices.keyVaultName appGatewayCertificateKeyName = var.appGatewayCertificateKeyName appGatewayFQDN = var.appGatewayFQDN appGatewayPrimaryBackendEndFQDN = module.helloWorldApp.helloWorldAppFQDN appGatewaySubnetId = module.spoke.spokeApplicationGatewaySubnetId appGatewayLogAnalyticsId = module.spoke.logAnalyticsWorkspaceId appGatewayCertificatePath = var.appGatewayCertificatePath logAnalyticsWorkspaceId = module.spoke.logAnalyticsWorkspaceId tags = var.tags }