diff --git a/.github/actions/templates/avm-getWorkflowInput/action.yml b/.github/actions/templates/avm-getWorkflowInput/action.yml index b78c1eb7f9..8c686805d9 100644 --- a/.github/actions/templates/avm-getWorkflowInput/action.yml +++ b/.github/actions/templates/avm-getWorkflowInput/action.yml @@ -66,6 +66,11 @@ runs: # Output values to be accessed by next jobs $workflowInput = @{} foreach($parameterName in $parameters.Keys) { + if([String]::IsNullOrEmpty($parameters[$parameterName])) { + Write-Verbose "Skipping parameter [$parameterName] as it has no explicit or default value" -Verbose + continue + } + Write-Verbose ('Passing output [{0}] with value [{1}]' -f $parameterName, $parameters[$parameterName]) -Verbose $workflowInput[$parameterName] = $parameters[$parameterName] } @@ -88,6 +93,12 @@ runs: # Output values to be accessed by next jobs $workflowInput = @{} foreach($parameterName in $workflowParameters.Keys) { + + if([String]::IsNullOrEmpty($workflowParameters[$parameterName])) { + Write-Verbose "Skipping parameter [$parameterName] as it has no explicit or default value" -Verbose + continue + } + Write-Verbose ('Passing output [{0}] with value [{1}]' -f $parameterName, $workflowParameters[$parameterName]) -Verbose $workflowInput[$parameterName] = $workflowParameters[$parameterName].toString() } diff --git a/.github/actions/templates/avm-validateModuleDeployment/action.yml b/.github/actions/templates/avm-validateModuleDeployment/action.yml index 84dde50f32..e9c2ed3d87 100644 --- a/.github/actions/templates/avm-validateModuleDeployment/action.yml +++ b/.github/actions/templates/avm-validateModuleDeployment/action.yml @@ -14,13 +14,14 @@ ## |======================================================================================================================================================================================| ## | Parameter | Required | Default | Description | Example | ## |----------------------------|----------|---------|-------------------------------------------------------|----------------------------------------------------------------------------| -## | modulePath | true | '' | The path to the module file directory | 'modules/api-management/service/main.bicep' -## | templateFilePath | true | '' | The path to the template file to use for deployment | 'modules/api-management/service/tests/e2e/maix/main.test.bicep' | +## | modulePath | true | '' | The path to the module file directory | 'modules/api-management/service/main.bicep' | +## | templateFilePath | true | '' | The path to the template file to use for deployment | 'modules/api-management/service/tests/e2e/maix/main.test.bicep' | ## | deploymentMetadataLocation | true | '' | The location to store the deployment metadata | 'WestEurope' | ## | subscriptionId | false | '' | The subscriptionId to deploy to | '1a97b80a-4dda-4f50-ab53-349e29344654' | ## | managementGroupId | false | '' | The managementGroupId to deploy to | '1a97b80a-4dda-4f50-ab53-349e29344654' | ## | customTokens | false | '' | Additional token pairs in json format. | '{"tokenName":"tokenValue"}' | ## | removeDeployment | false | 'true' | Set "true" to set module up for removal | 'true' | +## | customLocation | false | | Custom location overwrite, if needed | 'WestEurope' | ## |======================================================================================================================================================================================| ## ######################################################### @@ -51,6 +52,9 @@ inputs: description: 'Set "true" to set module up for removal' default: "true" required: false + customLocation: + description: "Custom location overwrite, if needed" + required: false runs: using: "composite" @@ -73,7 +77,7 @@ runs: Write-Output '::group::Get Recommended Regions' # Load used functions - . (Join-Path $env:GITHUB_WORKSPACE 'avm' 'utilities' 'pipelines' 'e2eValidation' 'regionSelector' 'Get-AzAvailableResourceLocation.ps1') + . (Join-Path $env:GITHUB_WORKSPACE 'avm' 'utilities' 'pipelines' 'e2eValidation' 'regionSelector' 'Get-AvailableResourceLocation.ps1') # Set function input parameters $functionInput = @{ @@ -84,7 +88,12 @@ runs: Write-Verbose "Invoke function with" -Verbose Write-Verbose ($functionInput | ConvertTo-Json | Out-String) -Verbose - $resourceLocation = Get-AzAvailableResourceLocation @functionInput -Verbose + if([String]::IsNullOrEmpty('${{ inputs.customLocation }}')) { + $resourceLocation = Get-AvailableResourceLocation @functionInput -Verbose + } else { + $resourceLocation = '${{ inputs.customLocation }}' + Write-Verbose 'Using specified location [${{ inputs.customLocation }}]' -Verbose + } Write-Verbose ('{0}-{1}' -f 'resourceLocation', $resourceLocation) -Verbose Write-Output ('{0}={1}' -f 'resourceLocation', $resourceLocation) >> $env:GITHUB_OUTPUT diff --git a/.github/workflows/avm.ptn.authorization.policy-assignment.yml b/.github/workflows/avm.ptn.authorization.policy-assignment.yml index 89b9f28b0f..9f4c3c0b28 100644 --- a/.github/workflows/avm.ptn.authorization.policy-assignment.yml +++ b/.github/workflows/avm.ptn.authorization.policy-assignment.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.ptn.authorization.role-assignment.yml b/.github/workflows/avm.ptn.authorization.role-assignment.yml index c9ad828152..9ca50b1d04 100644 --- a/.github/workflows/avm.ptn.authorization.role-assignment.yml +++ b/.github/workflows/avm.ptn.authorization.role-assignment.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.ptn.policy-insights.remediation.yml b/.github/workflows/avm.ptn.policy-insights.remediation.yml index eecddf314c..91d2e8e4c5 100644 --- a/.github/workflows/avm.ptn.policy-insights.remediation.yml +++ b/.github/workflows/avm.ptn.policy-insights.remediation.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.ptn.security.security-center.yml b/.github/workflows/avm.ptn.security.security-center.yml index 3052d3e4bf..cf261de239 100644 --- a/.github/workflows/avm.ptn.security.security-center.yml +++ b/.github/workflows/avm.ptn.security.security-center.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.aad.domain-service.yml b/.github/workflows/avm.res.aad.domain-service.yml index b6c0a5883f..e98c043f0e 100644 --- a/.github/workflows/avm.res.aad.domain-service.yml +++ b/.github/workflows/avm.res.aad.domain-service.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.analysis-services.server.yml b/.github/workflows/avm.res.analysis-services.server.yml index f0423cebc1..1e96f00472 100644 --- a/.github/workflows/avm.res.analysis-services.server.yml +++ b/.github/workflows/avm.res.analysis-services.server.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.api-management.service.yml b/.github/workflows/avm.res.api-management.service.yml index e50143e5eb..3108be5b51 100644 --- a/.github/workflows/avm.res.api-management.service.yml +++ b/.github/workflows/avm.res.api-management.service.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.app-configuration.configuration-store.yml b/.github/workflows/avm.res.app-configuration.configuration-store.yml index 64007151e5..0463f85411 100644 --- a/.github/workflows/avm.res.app-configuration.configuration-store.yml +++ b/.github/workflows/avm.res.app-configuration.configuration-store.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.app.container-app.yml b/.github/workflows/avm.res.app.container-app.yml index eda9086f29..7cccd1a641 100644 --- a/.github/workflows/avm.res.app.container-app.yml +++ b/.github/workflows/avm.res.app.container-app.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.app.managed-environment.yml b/.github/workflows/avm.res.app.managed-environment.yml index 9870549e1b..d2351fcff6 100644 --- a/.github/workflows/avm.res.app.managed-environment.yml +++ b/.github/workflows/avm.res.app.managed-environment.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.automation.automation-account.yml b/.github/workflows/avm.res.automation.automation-account.yml index a1d821360d..af3f512979 100644 --- a/.github/workflows/avm.res.automation.automation-account.yml +++ b/.github/workflows/avm.res.automation.automation-account.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.batch.batch-account.yml b/.github/workflows/avm.res.batch.batch-account.yml index 9a6a729a15..b9b66adb18 100644 --- a/.github/workflows/avm.res.batch.batch-account.yml +++ b/.github/workflows/avm.res.batch.batch-account.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.cache.redis.yml b/.github/workflows/avm.res.cache.redis.yml index ac43a0e789..503e28b98f 100644 --- a/.github/workflows/avm.res.cache.redis.yml +++ b/.github/workflows/avm.res.cache.redis.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.cdn.profile.yml b/.github/workflows/avm.res.cdn.profile.yml index 59cc7b8ee8..6a8b29b889 100644 --- a/.github/workflows/avm.res.cdn.profile.yml +++ b/.github/workflows/avm.res.cdn.profile.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.cognitive-services.account.yml b/.github/workflows/avm.res.cognitive-services.account.yml index bf98e748fd..eeef979d0f 100644 --- a/.github/workflows/avm.res.cognitive-services.account.yml +++ b/.github/workflows/avm.res.cognitive-services.account.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.compute.availability-set.yml b/.github/workflows/avm.res.compute.availability-set.yml index 9d8262d723..8a2436c8e4 100644 --- a/.github/workflows/avm.res.compute.availability-set.yml +++ b/.github/workflows/avm.res.compute.availability-set.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.compute.disk-encryption-set.yml b/.github/workflows/avm.res.compute.disk-encryption-set.yml index d100ca82d4..546ae42703 100644 --- a/.github/workflows/avm.res.compute.disk-encryption-set.yml +++ b/.github/workflows/avm.res.compute.disk-encryption-set.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.compute.disk.yml b/.github/workflows/avm.res.compute.disk.yml index 532b8d3395..696d3988b0 100644 --- a/.github/workflows/avm.res.compute.disk.yml +++ b/.github/workflows/avm.res.compute.disk.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.compute.gallery.yml b/.github/workflows/avm.res.compute.gallery.yml index ecd2971eac..1e276eb8bf 100644 --- a/.github/workflows/avm.res.compute.gallery.yml +++ b/.github/workflows/avm.res.compute.gallery.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.compute.image.yml b/.github/workflows/avm.res.compute.image.yml index 34d2ddbf84..e924643b80 100644 --- a/.github/workflows/avm.res.compute.image.yml +++ b/.github/workflows/avm.res.compute.image.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.compute.proximity-placement-group.yml b/.github/workflows/avm.res.compute.proximity-placement-group.yml index 203bcda2f6..af48c165c1 100644 --- a/.github/workflows/avm.res.compute.proximity-placement-group.yml +++ b/.github/workflows/avm.res.compute.proximity-placement-group.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.compute.ssh-public-key.yml b/.github/workflows/avm.res.compute.ssh-public-key.yml index f6009ff23f..79b1157f62 100644 --- a/.github/workflows/avm.res.compute.ssh-public-key.yml +++ b/.github/workflows/avm.res.compute.ssh-public-key.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.compute.virtual-machine-scale-set.yml b/.github/workflows/avm.res.compute.virtual-machine-scale-set.yml index 6684d6ac6f..72d92d5a4c 100644 --- a/.github/workflows/avm.res.compute.virtual-machine-scale-set.yml +++ b/.github/workflows/avm.res.compute.virtual-machine-scale-set.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.compute.virtual-machine.yml b/.github/workflows/avm.res.compute.virtual-machine.yml index ea05134a0c..45e66007b2 100644 --- a/.github/workflows/avm.res.compute.virtual-machine.yml +++ b/.github/workflows/avm.res.compute.virtual-machine.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.consumption.budget.yml b/.github/workflows/avm.res.consumption.budget.yml index 90b490e86b..1472af059c 100644 --- a/.github/workflows/avm.res.consumption.budget.yml +++ b/.github/workflows/avm.res.consumption.budget.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.container-instance.container-group.yml b/.github/workflows/avm.res.container-instance.container-group.yml index 9782de00fa..fe04e5be9c 100644 --- a/.github/workflows/avm.res.container-instance.container-group.yml +++ b/.github/workflows/avm.res.container-instance.container-group.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.container-registry.registry.yml b/.github/workflows/avm.res.container-registry.registry.yml index 3337589732..d75e15cbc9 100644 --- a/.github/workflows/avm.res.container-registry.registry.yml +++ b/.github/workflows/avm.res.container-registry.registry.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.container-service.managed-cluster.yml b/.github/workflows/avm.res.container-service.managed-cluster.yml index 09fe56615a..69df988a96 100644 --- a/.github/workflows/avm.res.container-service.managed-cluster.yml +++ b/.github/workflows/avm.res.container-service.managed-cluster.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.data-factory.factory.yml b/.github/workflows/avm.res.data-factory.factory.yml index 85f84e0b07..4ba1391d76 100644 --- a/.github/workflows/avm.res.data-factory.factory.yml +++ b/.github/workflows/avm.res.data-factory.factory.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.data-protection.backup-vault.yml b/.github/workflows/avm.res.data-protection.backup-vault.yml index a7bb6a820b..532ab8ceb2 100644 --- a/.github/workflows/avm.res.data-protection.backup-vault.yml +++ b/.github/workflows/avm.res.data-protection.backup-vault.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.databricks.access-connector.yml b/.github/workflows/avm.res.databricks.access-connector.yml index 148b0f3b47..37e0affa14 100644 --- a/.github/workflows/avm.res.databricks.access-connector.yml +++ b/.github/workflows/avm.res.databricks.access-connector.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.databricks.workspace.yml b/.github/workflows/avm.res.databricks.workspace.yml index c77a174cc5..363a057cc0 100644 --- a/.github/workflows/avm.res.databricks.workspace.yml +++ b/.github/workflows/avm.res.databricks.workspace.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.db-for-my-sql.flexible-server.yml b/.github/workflows/avm.res.db-for-my-sql.flexible-server.yml index e3db3a2282..0e87dc75f0 100644 --- a/.github/workflows/avm.res.db-for-my-sql.flexible-server.yml +++ b/.github/workflows/avm.res.db-for-my-sql.flexible-server.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.db-for-postgre-sql.flexible-server.yml b/.github/workflows/avm.res.db-for-postgre-sql.flexible-server.yml index 1f1cc20472..a3c2d330b3 100644 --- a/.github/workflows/avm.res.db-for-postgre-sql.flexible-server.yml +++ b/.github/workflows/avm.res.db-for-postgre-sql.flexible-server.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.desktop-virtualization.application-group.yml b/.github/workflows/avm.res.desktop-virtualization.application-group.yml index cfaf4c73d1..1a44934c46 100644 --- a/.github/workflows/avm.res.desktop-virtualization.application-group.yml +++ b/.github/workflows/avm.res.desktop-virtualization.application-group.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.desktop-virtualization.host-pool.yml b/.github/workflows/avm.res.desktop-virtualization.host-pool.yml index acd977b9fc..32bf95419e 100644 --- a/.github/workflows/avm.res.desktop-virtualization.host-pool.yml +++ b/.github/workflows/avm.res.desktop-virtualization.host-pool.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.desktop-virtualization.scaling-plan.yml b/.github/workflows/avm.res.desktop-virtualization.scaling-plan.yml index 354e66c840..fa90aa158a 100644 --- a/.github/workflows/avm.res.desktop-virtualization.scaling-plan.yml +++ b/.github/workflows/avm.res.desktop-virtualization.scaling-plan.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.desktop-virtualization.workspace.yml b/.github/workflows/avm.res.desktop-virtualization.workspace.yml index a975191730..187250410a 100644 --- a/.github/workflows/avm.res.desktop-virtualization.workspace.yml +++ b/.github/workflows/avm.res.desktop-virtualization.workspace.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.dev-test-lab.lab.yml b/.github/workflows/avm.res.dev-test-lab.lab.yml index f21b83d851..279249ea82 100644 --- a/.github/workflows/avm.res.dev-test-lab.lab.yml +++ b/.github/workflows/avm.res.dev-test-lab.lab.yml @@ -20,7 +20,10 @@ on: description: "Remove deployed module" required: false default: true - + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.digital-twins.digital-twins-instance.yml b/.github/workflows/avm.res.digital-twins.digital-twins-instance.yml index fc9e6fb5da..5a35addd22 100644 --- a/.github/workflows/avm.res.digital-twins.digital-twins-instance.yml +++ b/.github/workflows/avm.res.digital-twins.digital-twins-instance.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.document-db.database-account.yml b/.github/workflows/avm.res.document-db.database-account.yml index 0256cf706b..a50ef58296 100644 --- a/.github/workflows/avm.res.document-db.database-account.yml +++ b/.github/workflows/avm.res.document-db.database-account.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.event-grid.domain.yml b/.github/workflows/avm.res.event-grid.domain.yml index 9381b46be3..69e41ab213 100644 --- a/.github/workflows/avm.res.event-grid.domain.yml +++ b/.github/workflows/avm.res.event-grid.domain.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.event-grid.namespace.yml b/.github/workflows/avm.res.event-grid.namespace.yml index 918be160e4..016af52fa5 100644 --- a/.github/workflows/avm.res.event-grid.namespace.yml +++ b/.github/workflows/avm.res.event-grid.namespace.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.event-grid.system-topic.yml b/.github/workflows/avm.res.event-grid.system-topic.yml index 91a39b0702..84a5780817 100644 --- a/.github/workflows/avm.res.event-grid.system-topic.yml +++ b/.github/workflows/avm.res.event-grid.system-topic.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.event-grid.topic.yml b/.github/workflows/avm.res.event-grid.topic.yml index c18831793c..54a4a8b3f6 100644 --- a/.github/workflows/avm.res.event-grid.topic.yml +++ b/.github/workflows/avm.res.event-grid.topic.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.event-hub.namespace.yml b/.github/workflows/avm.res.event-hub.namespace.yml index fdb60c6967..bf62295498 100644 --- a/.github/workflows/avm.res.event-hub.namespace.yml +++ b/.github/workflows/avm.res.event-hub.namespace.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.health-bot.health-bot.yml b/.github/workflows/avm.res.health-bot.health-bot.yml index 2816874657..ca78da1dd6 100644 --- a/.github/workflows/avm.res.health-bot.health-bot.yml +++ b/.github/workflows/avm.res.health-bot.health-bot.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.healthcare-apis.workspace.yml b/.github/workflows/avm.res.healthcare-apis.workspace.yml index 1bbb96d64b..6e10efdc87 100644 --- a/.github/workflows/avm.res.healthcare-apis.workspace.yml +++ b/.github/workflows/avm.res.healthcare-apis.workspace.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.insights.action-group.yml b/.github/workflows/avm.res.insights.action-group.yml index e1ab58c33d..ce0f46d29a 100644 --- a/.github/workflows/avm.res.insights.action-group.yml +++ b/.github/workflows/avm.res.insights.action-group.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.insights.activity-log-alert.yml b/.github/workflows/avm.res.insights.activity-log-alert.yml index 56909df497..589c3de435 100644 --- a/.github/workflows/avm.res.insights.activity-log-alert.yml +++ b/.github/workflows/avm.res.insights.activity-log-alert.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.insights.component.yml b/.github/workflows/avm.res.insights.component.yml index 9a050de1b3..c514b20d44 100644 --- a/.github/workflows/avm.res.insights.component.yml +++ b/.github/workflows/avm.res.insights.component.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.insights.data-collection-endpoint.yml b/.github/workflows/avm.res.insights.data-collection-endpoint.yml index 4378fd0524..af327a3620 100644 --- a/.github/workflows/avm.res.insights.data-collection-endpoint.yml +++ b/.github/workflows/avm.res.insights.data-collection-endpoint.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.insights.data-collection-rule.yml b/.github/workflows/avm.res.insights.data-collection-rule.yml index 38f40faa0f..079a74431b 100644 --- a/.github/workflows/avm.res.insights.data-collection-rule.yml +++ b/.github/workflows/avm.res.insights.data-collection-rule.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.insights.diagnostic-setting.yml b/.github/workflows/avm.res.insights.diagnostic-setting.yml index 795331cb39..4d92a2b3c3 100644 --- a/.github/workflows/avm.res.insights.diagnostic-setting.yml +++ b/.github/workflows/avm.res.insights.diagnostic-setting.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.insights.metric-alert.yml b/.github/workflows/avm.res.insights.metric-alert.yml index 9257fd9da0..909e71d901 100644 --- a/.github/workflows/avm.res.insights.metric-alert.yml +++ b/.github/workflows/avm.res.insights.metric-alert.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.insights.private-link-scope.yml b/.github/workflows/avm.res.insights.private-link-scope.yml index cef950e2d1..ba6ebbc4da 100644 --- a/.github/workflows/avm.res.insights.private-link-scope.yml +++ b/.github/workflows/avm.res.insights.private-link-scope.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.insights.scheduled-query-rule.yml b/.github/workflows/avm.res.insights.scheduled-query-rule.yml index cc8498a9e2..7752b8d828 100644 --- a/.github/workflows/avm.res.insights.scheduled-query-rule.yml +++ b/.github/workflows/avm.res.insights.scheduled-query-rule.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.insights.webtest.yml b/.github/workflows/avm.res.insights.webtest.yml index 56170b2b41..41d83bd0a8 100644 --- a/.github/workflows/avm.res.insights.webtest.yml +++ b/.github/workflows/avm.res.insights.webtest.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.key-vault.vault.yml b/.github/workflows/avm.res.key-vault.vault.yml index 5968981b0a..e5e36c4f18 100644 --- a/.github/workflows/avm.res.key-vault.vault.yml +++ b/.github/workflows/avm.res.key-vault.vault.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.kubernetes-configuration.extension.yml b/.github/workflows/avm.res.kubernetes-configuration.extension.yml index a64e3ec6ae..c5173cdeff 100644 --- a/.github/workflows/avm.res.kubernetes-configuration.extension.yml +++ b/.github/workflows/avm.res.kubernetes-configuration.extension.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.kubernetes-configuration.flux-configuration.yml b/.github/workflows/avm.res.kubernetes-configuration.flux-configuration.yml index c2b6639e50..265783bdf9 100644 --- a/.github/workflows/avm.res.kubernetes-configuration.flux-configuration.yml +++ b/.github/workflows/avm.res.kubernetes-configuration.flux-configuration.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.load-test-service.load-test.yml b/.github/workflows/avm.res.load-test-service.load-test.yml index 255a2abdca..dd4ca53802 100644 --- a/.github/workflows/avm.res.load-test-service.load-test.yml +++ b/.github/workflows/avm.res.load-test-service.load-test.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.logic.workflow.yml b/.github/workflows/avm.res.logic.workflow.yml index 4e26779ac4..46c01e28e2 100644 --- a/.github/workflows/avm.res.logic.workflow.yml +++ b/.github/workflows/avm.res.logic.workflow.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.machine-learning-services.workspace.yml b/.github/workflows/avm.res.machine-learning-services.workspace.yml index 0870695a7b..640c855679 100644 --- a/.github/workflows/avm.res.machine-learning-services.workspace.yml +++ b/.github/workflows/avm.res.machine-learning-services.workspace.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.maintenance.maintenance-configuration.yml b/.github/workflows/avm.res.maintenance.maintenance-configuration.yml index 557b54b823..4ec3807ca7 100644 --- a/.github/workflows/avm.res.maintenance.maintenance-configuration.yml +++ b/.github/workflows/avm.res.maintenance.maintenance-configuration.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.managed-identity.user-assigned-identity.yml b/.github/workflows/avm.res.managed-identity.user-assigned-identity.yml index 091029721e..32bd11123a 100644 --- a/.github/workflows/avm.res.managed-identity.user-assigned-identity.yml +++ b/.github/workflows/avm.res.managed-identity.user-assigned-identity.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.managed-services.registration-definition.yml b/.github/workflows/avm.res.managed-services.registration-definition.yml index 71332194d1..6445bd9ac5 100644 --- a/.github/workflows/avm.res.managed-services.registration-definition.yml +++ b/.github/workflows/avm.res.managed-services.registration-definition.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.management.management-group.yml b/.github/workflows/avm.res.management.management-group.yml index 2cba65a51f..fed43544c2 100644 --- a/.github/workflows/avm.res.management.management-group.yml +++ b/.github/workflows/avm.res.management.management-group.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.net-app.net-app-account.yml b/.github/workflows/avm.res.net-app.net-app-account.yml index 072606e52d..efeb3c22e7 100644 --- a/.github/workflows/avm.res.net-app.net-app-account.yml +++ b/.github/workflows/avm.res.net-app.net-app-account.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.application-gateway-web-application-firewall-policy.yml b/.github/workflows/avm.res.network.application-gateway-web-application-firewall-policy.yml index 3ada19eb96..2dbc3221f3 100644 --- a/.github/workflows/avm.res.network.application-gateway-web-application-firewall-policy.yml +++ b/.github/workflows/avm.res.network.application-gateway-web-application-firewall-policy.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.application-gateway.yml b/.github/workflows/avm.res.network.application-gateway.yml index c2c4c9f464..e280f4d4dd 100644 --- a/.github/workflows/avm.res.network.application-gateway.yml +++ b/.github/workflows/avm.res.network.application-gateway.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.application-security-group.yml b/.github/workflows/avm.res.network.application-security-group.yml index dd6a8ea197..5c2e8cd503 100644 --- a/.github/workflows/avm.res.network.application-security-group.yml +++ b/.github/workflows/avm.res.network.application-security-group.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.azure-firewall.yml b/.github/workflows/avm.res.network.azure-firewall.yml index e17568a3aa..2046301eaa 100644 --- a/.github/workflows/avm.res.network.azure-firewall.yml +++ b/.github/workflows/avm.res.network.azure-firewall.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.bastion-host.yml b/.github/workflows/avm.res.network.bastion-host.yml index 2200b41740..b1907a2471 100644 --- a/.github/workflows/avm.res.network.bastion-host.yml +++ b/.github/workflows/avm.res.network.bastion-host.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.connection.yml b/.github/workflows/avm.res.network.connection.yml index 66808c8311..ac83b293a1 100644 --- a/.github/workflows/avm.res.network.connection.yml +++ b/.github/workflows/avm.res.network.connection.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.ddos-protection-plan.yml b/.github/workflows/avm.res.network.ddos-protection-plan.yml index a496035ec7..6d848dbadf 100644 --- a/.github/workflows/avm.res.network.ddos-protection-plan.yml +++ b/.github/workflows/avm.res.network.ddos-protection-plan.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.dns-forwarding-ruleset.yml b/.github/workflows/avm.res.network.dns-forwarding-ruleset.yml index 09fd3b93bb..9fa3940071 100644 --- a/.github/workflows/avm.res.network.dns-forwarding-ruleset.yml +++ b/.github/workflows/avm.res.network.dns-forwarding-ruleset.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.dns-resolver.yml b/.github/workflows/avm.res.network.dns-resolver.yml index 8ade3fca08..3cb787510d 100644 --- a/.github/workflows/avm.res.network.dns-resolver.yml +++ b/.github/workflows/avm.res.network.dns-resolver.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.dns-zone.yml b/.github/workflows/avm.res.network.dns-zone.yml index 30a7251dd1..1e07cff6b8 100644 --- a/.github/workflows/avm.res.network.dns-zone.yml +++ b/.github/workflows/avm.res.network.dns-zone.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.express-route-circuit.yml b/.github/workflows/avm.res.network.express-route-circuit.yml index c0284316a4..f5b64f71bb 100644 --- a/.github/workflows/avm.res.network.express-route-circuit.yml +++ b/.github/workflows/avm.res.network.express-route-circuit.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.express-route-gateway.yml b/.github/workflows/avm.res.network.express-route-gateway.yml index cd309a876c..e5ac188c8f 100644 --- a/.github/workflows/avm.res.network.express-route-gateway.yml +++ b/.github/workflows/avm.res.network.express-route-gateway.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.firewall-policy.yml b/.github/workflows/avm.res.network.firewall-policy.yml index f9afa2c914..f219a26d37 100644 --- a/.github/workflows/avm.res.network.firewall-policy.yml +++ b/.github/workflows/avm.res.network.firewall-policy.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.front-door-web-application-firewall-policy.yml b/.github/workflows/avm.res.network.front-door-web-application-firewall-policy.yml index b0cf5b7adf..0588a346c1 100644 --- a/.github/workflows/avm.res.network.front-door-web-application-firewall-policy.yml +++ b/.github/workflows/avm.res.network.front-door-web-application-firewall-policy.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.front-door.yml b/.github/workflows/avm.res.network.front-door.yml index aeebe4b8e0..82c5a0c2da 100644 --- a/.github/workflows/avm.res.network.front-door.yml +++ b/.github/workflows/avm.res.network.front-door.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.ip-group.yml b/.github/workflows/avm.res.network.ip-group.yml index beae160b06..6b45ce9021 100644 --- a/.github/workflows/avm.res.network.ip-group.yml +++ b/.github/workflows/avm.res.network.ip-group.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.load-balancer.yml b/.github/workflows/avm.res.network.load-balancer.yml index 82d767037a..e92d462ce1 100644 --- a/.github/workflows/avm.res.network.load-balancer.yml +++ b/.github/workflows/avm.res.network.load-balancer.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.local-network-gateway.yml b/.github/workflows/avm.res.network.local-network-gateway.yml index 4bd6d37c06..3207ac68cd 100644 --- a/.github/workflows/avm.res.network.local-network-gateway.yml +++ b/.github/workflows/avm.res.network.local-network-gateway.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.nat-gateway.yml b/.github/workflows/avm.res.network.nat-gateway.yml index 34dd4c8ff9..8c62d7529a 100644 --- a/.github/workflows/avm.res.network.nat-gateway.yml +++ b/.github/workflows/avm.res.network.nat-gateway.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.network-interface.yml b/.github/workflows/avm.res.network.network-interface.yml index 9e7fd880dd..c1f1481d54 100644 --- a/.github/workflows/avm.res.network.network-interface.yml +++ b/.github/workflows/avm.res.network.network-interface.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.network-manager.yml b/.github/workflows/avm.res.network.network-manager.yml index de51d0761f..df7080fe48 100644 --- a/.github/workflows/avm.res.network.network-manager.yml +++ b/.github/workflows/avm.res.network.network-manager.yml @@ -20,7 +20,10 @@ on: description: "Remove deployed module" required: false default: true - + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.network-security-group.yml b/.github/workflows/avm.res.network.network-security-group.yml index daa4e72f0e..3532677245 100644 --- a/.github/workflows/avm.res.network.network-security-group.yml +++ b/.github/workflows/avm.res.network.network-security-group.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.network-watcher.yml b/.github/workflows/avm.res.network.network-watcher.yml index 823b4baf3e..ddbd5d8a19 100644 --- a/.github/workflows/avm.res.network.network-watcher.yml +++ b/.github/workflows/avm.res.network.network-watcher.yml @@ -20,7 +20,10 @@ on: description: "Remove deployed module" required: false default: true - + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.private-dns-zone.yml b/.github/workflows/avm.res.network.private-dns-zone.yml index 5a4e8317d9..452cf857d2 100644 --- a/.github/workflows/avm.res.network.private-dns-zone.yml +++ b/.github/workflows/avm.res.network.private-dns-zone.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.private-endpoint.yml b/.github/workflows/avm.res.network.private-endpoint.yml index 5d23ab8081..03fb4f9757 100644 --- a/.github/workflows/avm.res.network.private-endpoint.yml +++ b/.github/workflows/avm.res.network.private-endpoint.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.private-link-service.yml b/.github/workflows/avm.res.network.private-link-service.yml index c07fda9761..51b571e5f7 100644 --- a/.github/workflows/avm.res.network.private-link-service.yml +++ b/.github/workflows/avm.res.network.private-link-service.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.public-ip-address.yml b/.github/workflows/avm.res.network.public-ip-address.yml index db38984755..703938c44b 100644 --- a/.github/workflows/avm.res.network.public-ip-address.yml +++ b/.github/workflows/avm.res.network.public-ip-address.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.public-ip-prefix.yml b/.github/workflows/avm.res.network.public-ip-prefix.yml index efe48d6ba0..9f5d34f4f2 100644 --- a/.github/workflows/avm.res.network.public-ip-prefix.yml +++ b/.github/workflows/avm.res.network.public-ip-prefix.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.route-table.yml b/.github/workflows/avm.res.network.route-table.yml index 8dd1c6e2dd..dc8afc1f65 100644 --- a/.github/workflows/avm.res.network.route-table.yml +++ b/.github/workflows/avm.res.network.route-table.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.service-endpoint-policy.yml b/.github/workflows/avm.res.network.service-endpoint-policy.yml index 80e26edeac..1af7a2a717 100644 --- a/.github/workflows/avm.res.network.service-endpoint-policy.yml +++ b/.github/workflows/avm.res.network.service-endpoint-policy.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.trafficmanagerprofile.yml b/.github/workflows/avm.res.network.trafficmanagerprofile.yml index fe5f3c4216..1bd4e2a4e9 100644 --- a/.github/workflows/avm.res.network.trafficmanagerprofile.yml +++ b/.github/workflows/avm.res.network.trafficmanagerprofile.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.virtual-hub.yml b/.github/workflows/avm.res.network.virtual-hub.yml index 07eb5900cc..44326a6420 100644 --- a/.github/workflows/avm.res.network.virtual-hub.yml +++ b/.github/workflows/avm.res.network.virtual-hub.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.virtual-network-gateway.yml b/.github/workflows/avm.res.network.virtual-network-gateway.yml index f3603f6a93..e8bb321b02 100644 --- a/.github/workflows/avm.res.network.virtual-network-gateway.yml +++ b/.github/workflows/avm.res.network.virtual-network-gateway.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.virtual-network.yml b/.github/workflows/avm.res.network.virtual-network.yml index 19dcc10683..57e8ba620e 100644 --- a/.github/workflows/avm.res.network.virtual-network.yml +++ b/.github/workflows/avm.res.network.virtual-network.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.virtual-wan.yml b/.github/workflows/avm.res.network.virtual-wan.yml index 2e0cb52e58..879d2af07b 100644 --- a/.github/workflows/avm.res.network.virtual-wan.yml +++ b/.github/workflows/avm.res.network.virtual-wan.yml @@ -20,7 +20,10 @@ on: description: "Remove deployed module" required: false default: true - + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.vpn-gateway.yml b/.github/workflows/avm.res.network.vpn-gateway.yml index cad31de2f0..3f09789e57 100644 --- a/.github/workflows/avm.res.network.vpn-gateway.yml +++ b/.github/workflows/avm.res.network.vpn-gateway.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.network.vpn-site.yml b/.github/workflows/avm.res.network.vpn-site.yml index 9bd6329f4b..fb43b3ba05 100644 --- a/.github/workflows/avm.res.network.vpn-site.yml +++ b/.github/workflows/avm.res.network.vpn-site.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.operational-insights.workspace.yml b/.github/workflows/avm.res.operational-insights.workspace.yml index 58e95538ae..45afd8e76f 100644 --- a/.github/workflows/avm.res.operational-insights.workspace.yml +++ b/.github/workflows/avm.res.operational-insights.workspace.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.operations-management.solution.yml b/.github/workflows/avm.res.operations-management.solution.yml index d91fa4e81d..e7d0341c7f 100644 --- a/.github/workflows/avm.res.operations-management.solution.yml +++ b/.github/workflows/avm.res.operations-management.solution.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.power-bi-dedicated.capacity.yml b/.github/workflows/avm.res.power-bi-dedicated.capacity.yml index 318a6ac32e..ab480c7d9f 100644 --- a/.github/workflows/avm.res.power-bi-dedicated.capacity.yml +++ b/.github/workflows/avm.res.power-bi-dedicated.capacity.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.purview.account.yml b/.github/workflows/avm.res.purview.account.yml index a32032f4cc..2b3c88ed76 100644 --- a/.github/workflows/avm.res.purview.account.yml +++ b/.github/workflows/avm.res.purview.account.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.recovery-services.vault.yml b/.github/workflows/avm.res.recovery-services.vault.yml index 9d5a1dc1ff..08ee36a224 100644 --- a/.github/workflows/avm.res.recovery-services.vault.yml +++ b/.github/workflows/avm.res.recovery-services.vault.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.relay.namespace.yml b/.github/workflows/avm.res.relay.namespace.yml index 52e8a21ebf..83e0627d83 100644 --- a/.github/workflows/avm.res.relay.namespace.yml +++ b/.github/workflows/avm.res.relay.namespace.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.resource-graph.query.yml b/.github/workflows/avm.res.resource-graph.query.yml index cf6dbea554..5066241fde 100644 --- a/.github/workflows/avm.res.resource-graph.query.yml +++ b/.github/workflows/avm.res.resource-graph.query.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.resources.deployment-script.yml b/.github/workflows/avm.res.resources.deployment-script.yml index 83fe844bf5..9f690b1120 100644 --- a/.github/workflows/avm.res.resources.deployment-script.yml +++ b/.github/workflows/avm.res.resources.deployment-script.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.resources.resource-group.yml b/.github/workflows/avm.res.resources.resource-group.yml index 1029a71532..7efbefa09f 100644 --- a/.github/workflows/avm.res.resources.resource-group.yml +++ b/.github/workflows/avm.res.resources.resource-group.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.search.search-service.yml b/.github/workflows/avm.res.search.search-service.yml index bc1cee5a31..d61eadc6f9 100644 --- a/.github/workflows/avm.res.search.search-service.yml +++ b/.github/workflows/avm.res.search.search-service.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.service-bus.namespace.yml b/.github/workflows/avm.res.service-bus.namespace.yml index cc9f1d73e6..88318c8e27 100644 --- a/.github/workflows/avm.res.service-bus.namespace.yml +++ b/.github/workflows/avm.res.service-bus.namespace.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.service-fabric.cluster.yml b/.github/workflows/avm.res.service-fabric.cluster.yml index 2e2c93206c..c1ca69f2fb 100644 --- a/.github/workflows/avm.res.service-fabric.cluster.yml +++ b/.github/workflows/avm.res.service-fabric.cluster.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.signal-r-service.signal-r.yml b/.github/workflows/avm.res.signal-r-service.signal-r.yml index 4583283181..dcace6a7c5 100644 --- a/.github/workflows/avm.res.signal-r-service.signal-r.yml +++ b/.github/workflows/avm.res.signal-r-service.signal-r.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.signal-r-service.web-pub-sub.yml b/.github/workflows/avm.res.signal-r-service.web-pub-sub.yml index 63bfe1a0ae..63e950f713 100644 --- a/.github/workflows/avm.res.signal-r-service.web-pub-sub.yml +++ b/.github/workflows/avm.res.signal-r-service.web-pub-sub.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.sql.instance-pool.yml b/.github/workflows/avm.res.sql.instance-pool.yml index 659c39b82a..068c67372d 100644 --- a/.github/workflows/avm.res.sql.instance-pool.yml +++ b/.github/workflows/avm.res.sql.instance-pool.yml @@ -21,6 +21,10 @@ on: # We had to set this to false because the SQL Instance Pool takes more than 24 hours to get deleted required: false default: false + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.sql.managed-instance.yml b/.github/workflows/avm.res.sql.managed-instance.yml index 3e9ebac6f2..8f2be513b8 100644 --- a/.github/workflows/avm.res.sql.managed-instance.yml +++ b/.github/workflows/avm.res.sql.managed-instance.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.sql.server.yml b/.github/workflows/avm.res.sql.server.yml index 318c70f382..3d4492d861 100644 --- a/.github/workflows/avm.res.sql.server.yml +++ b/.github/workflows/avm.res.sql.server.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.storage.storage-account.yml b/.github/workflows/avm.res.storage.storage-account.yml index 5463a26207..7083867ec3 100644 --- a/.github/workflows/avm.res.storage.storage-account.yml +++ b/.github/workflows/avm.res.storage.storage-account.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.synapse.private-link-hub.yml b/.github/workflows/avm.res.synapse.private-link-hub.yml index 78d7f36082..3fd652f3ce 100644 --- a/.github/workflows/avm.res.synapse.private-link-hub.yml +++ b/.github/workflows/avm.res.synapse.private-link-hub.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.synapse.workspace.yml b/.github/workflows/avm.res.synapse.workspace.yml index 37dd6ce412..5a36b42e54 100644 --- a/.github/workflows/avm.res.synapse.workspace.yml +++ b/.github/workflows/avm.res.synapse.workspace.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.virtual-machine-images.image-template.yml b/.github/workflows/avm.res.virtual-machine-images.image-template.yml index 649b950f18..1577e940c2 100644 --- a/.github/workflows/avm.res.virtual-machine-images.image-template.yml +++ b/.github/workflows/avm.res.virtual-machine-images.image-template.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.web.connection.yml b/.github/workflows/avm.res.web.connection.yml index c3b8b69c55..05b0cb2663 100644 --- a/.github/workflows/avm.res.web.connection.yml +++ b/.github/workflows/avm.res.web.connection.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.web.hosting-environment.yml b/.github/workflows/avm.res.web.hosting-environment.yml index 76c245192b..93e53f1516 100644 --- a/.github/workflows/avm.res.web.hosting-environment.yml +++ b/.github/workflows/avm.res.web.hosting-environment.yml @@ -20,7 +20,10 @@ on: description: "Remove deployed module" required: false default: true - + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.web.serverfarm.yml b/.github/workflows/avm.res.web.serverfarm.yml index 49e6a91d0e..7e464d4256 100644 --- a/.github/workflows/avm.res.web.serverfarm.yml +++ b/.github/workflows/avm.res.web.serverfarm.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.web.site.yml b/.github/workflows/avm.res.web.site.yml index b0742ae772..27620ec577 100644 --- a/.github/workflows/avm.res.web.site.yml +++ b/.github/workflows/avm.res.web.site.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.res.web.static-site.yml b/.github/workflows/avm.res.web.static-site.yml index 111370620f..eb6fecbd35 100644 --- a/.github/workflows/avm.res.web.static-site.yml +++ b/.github/workflows/avm.res.web.static-site.yml @@ -20,6 +20,10 @@ on: description: "Remove deployed module" required: false default: true + customLocation: + type: string + description: "Default location overwrite (e.g., eastus)" + required: false push: branches: - main diff --git a/.github/workflows/avm.template.module.yml b/.github/workflows/avm.template.module.yml index 70eeb5ea5b..efb117c5f6 100644 --- a/.github/workflows/avm.template.module.yml +++ b/.github/workflows/avm.template.module.yml @@ -129,6 +129,7 @@ jobs: subscriptionId: "${{ secrets.ARM_SUBSCRIPTION_ID }}" managementGroupId: "${{ secrets.ARM_MGMTGROUP_ID }}" removeDeployment: "${{ fromJson(inputs.workflowInput).removeDeployment }}" + customLocation: "${{ fromJson(inputs.workflowInput).customLocation }}" env: AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }} @@ -140,6 +141,7 @@ jobs: runs-on: ubuntu-latest # Note: Below always() required in condition due to psrule jobs being skipped for ptn modules not having defaults or waf-aligned folders if: github.ref == 'refs/heads/main' && + github.repository == 'Azure/bicep-registry-modules' && always() && needs.job_module_static_validation.result == 'success' && needs.job_module_deploy_validation.result == 'success' diff --git a/avm/res/cognitive-services/account/README.md b/avm/res/cognitive-services/account/README.md index 820802cdb8..e5804e0da1 100644 --- a/avm/res/cognitive-services/account/README.md +++ b/avm/res/cognitive-services/account/README.md @@ -41,7 +41,13 @@ The following section provides usage examples for the module, which were used to ### Example 1: _Using `deployments` in parameter set_ -This instance deploys the module with the AI model deployment feature. +This instance deploys the module with the AI model deployment feature.' + +Note, this test is temporarily disabled as it needs to be enabled on the subscription. +As we don't want other contributions from being blocked by this, we disabled the test for now / rely on a manual execution outside the CI environemnt +You can find more information here: https://learn.microsoft.com/en-us/legal/cognitive-services/openai/limited-access +And register here: https://aka.ms/oai/access +
diff --git a/avm/res/cognitive-services/account/main.bicep b/avm/res/cognitive-services/account/main.bicep index 293821f9b8..07ffb63489 100644 --- a/avm/res/cognitive-services/account/main.bicep +++ b/avm/res/cognitive-services/account/main.bicep @@ -137,7 +137,7 @@ var formattedUserAssignedIdentities = reduce( var identity = !empty(managedIdentities) ? { type: (managedIdentities.?systemAssigned ?? false) - ? (!empty(managedIdentities.?userAssignedResourceIds ?? {}) ? 'SystemAssigned,UserAssigned' : 'SystemAssigned') + ? (!empty(managedIdentities.?userAssignedResourceIds ?? {}) ? 'SystemAssigned, UserAssigned' : 'SystemAssigned') : (!empty(managedIdentities.?userAssignedResourceIds ?? {}) ? 'UserAssigned' : null) userAssignedIdentities: !empty(formattedUserAssignedIdentities) ? formattedUserAssignedIdentities : null } diff --git a/avm/res/cognitive-services/account/main.json b/avm/res/cognitive-services/account/main.json index 7c8c756cb7..7c1ff98ca5 100644 --- a/avm/res/cognitive-services/account/main.json +++ b/avm/res/cognitive-services/account/main.json @@ -5,8 +5,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "2360701930449304487" + "version": "0.26.170.59819", + "templateHash": "5668118199015896027" }, "name": "Cognitive Services", "description": "This module deploys a Cognitive Service.", @@ -766,7 +766,7 @@ }, "variables": { "formattedUserAssignedIdentities": "[reduce(map(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createArray()), lambda('id', createObject(format('{0}', lambdaVariables('id')), createObject()))), createObject(), lambda('cur', 'next', union(lambdaVariables('cur'), lambdaVariables('next'))))]", - "identity": "[if(not(empty(parameters('managedIdentities'))), createObject('type', if(coalesce(tryGet(parameters('managedIdentities'), 'systemAssigned'), false()), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'SystemAssigned,UserAssigned', 'SystemAssigned'), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'UserAssigned', null())), 'userAssignedIdentities', if(not(empty(variables('formattedUserAssignedIdentities'))), variables('formattedUserAssignedIdentities'), null())), null())]", + "identity": "[if(not(empty(parameters('managedIdentities'))), createObject('type', if(coalesce(tryGet(parameters('managedIdentities'), 'systemAssigned'), false()), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'SystemAssigned, UserAssigned', 'SystemAssigned'), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'UserAssigned', null())), 'userAssignedIdentities', if(not(empty(variables('formattedUserAssignedIdentities'))), variables('formattedUserAssignedIdentities'), null())), null())]", "builtInRoleNames": { "Cognitive Services Contributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '25fbc0a9-bd7c-42a3-aa1a-3b75d497ee68')]", "Cognitive Services Custom Vision Contributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'c1ff6cc2-c111-46fe-8896-e0ef812ad9f3')]", diff --git a/avm/res/cognitive-services/account/tests/e2e/ai-model-deployment/main.test.bicep b/avm/res/cognitive-services/account/tests/e2e/ai-model-deployment/main.test.bicep index 7ee3f5be51..60d04523d3 100644 --- a/avm/res/cognitive-services/account/tests/e2e/ai-model-deployment/main.test.bicep +++ b/avm/res/cognitive-services/account/tests/e2e/ai-model-deployment/main.test.bicep @@ -1,7 +1,14 @@ targetScope = 'subscription' metadata name = 'Using `deployments` in parameter set' -metadata description = 'This instance deploys the module with the AI model deployment feature.' +metadata description = ''' +This instance deploys the module with the AI model deployment feature.' + +Note, this test is temporarily disabled as it needs to be enabled on the subscription. +As we don't want other contributions from being blocked by this, we disabled the test for now / rely on a manual execution outside the CI environemnt +You can find more information here: https://learn.microsoft.com/en-us/legal/cognitive-services/openai/limited-access +And register here: https://aka.ms/oai/access +''' // ========== // // Parameters // @@ -36,7 +43,7 @@ resource resourceGroup 'Microsoft.Resources/resourceGroups@2022-09-01' = { // ============== // module testDeployment '../../../main.bicep' = [ - for iteration in ['init', 'idem']: { + for iteration in ['init', 'idem']: if (true == false) { scope: resourceGroup name: '${uniqueString(deployment().name, resourceLocation)}-test-${serviceShort}-${iteration}-ai' params: { diff --git a/avm/res/cognitive-services/account/tests/e2e/ai-model-deployment/warning.tests.ps1 b/avm/res/cognitive-services/account/tests/e2e/ai-model-deployment/warning.tests.ps1 new file mode 100644 index 0000000000..21deb1f6a3 --- /dev/null +++ b/avm/res/cognitive-services/account/tests/e2e/ai-model-deployment/warning.tests.ps1 @@ -0,0 +1,24 @@ +###################################### +## Additional post-deployment tests ## +###################################### +## +## You can add any custom post-deployment validation tests you want here, or add them spread accross multiple test files in the test case folder. +## +########################### + +param ( + [Parameter(Mandatory = $false)] + [hashtable] $TestInputData = @{} +) + +Describe 'Warning' { + + It 'Disabled test' { + + Write-Output @{ + Warning = "Note, the OpenAI-Deployments test is temporarily disabled as it needs to be enabled on the subscription.
As we don't want other contributions from being blocked by this, we disabled the test for now / rely on a manual execution outside the CI environemnt. For more information please review the [offical docs](https://learn.microsoft.com/en-us/legal/cognitive-services/openai/limited-access) and or register [here](https://aka.ms/oai/access" + + } + } +} + diff --git a/avm/res/insights/webtest/ORPHANED.md b/avm/res/insights/webtest/ORPHANED.md deleted file mode 100644 index ef8fa911d2..0000000000 --- a/avm/res/insights/webtest/ORPHANED.md +++ /dev/null @@ -1,4 +0,0 @@ -⚠️THIS MODULE IS CURRENTLY ORPHANED.⚠️ - -- Only security and bug fixes are being handled by the AVM core team at present. -- If interested in becoming the module owner of this orphaned module (must be Microsoft FTE), please look for the related "orphaned module" GitHub issue [here](https://aka.ms/AVM/OrphanedModules)! \ No newline at end of file diff --git a/avm/res/insights/webtest/README.md b/avm/res/insights/webtest/README.md index 7b9a2349a0..e0acaac4bb 100644 --- a/avm/res/insights/webtest/README.md +++ b/avm/res/insights/webtest/README.md @@ -1,10 +1,5 @@ # Web Tests `[Microsoft.Insights/webtests]` -> ⚠️THIS MODULE IS CURRENTLY ORPHANED.⚠️ -> -> - Only security and bug fixes are being handled by the AVM core team at present. -> - If interested in becoming the module owner of this orphaned module (must be Microsoft FTE), please look for the related "orphaned module" GitHub issue [here](https://aka.ms/AVM/OrphanedModules)! - This module deploys a Web Test. ## Navigation diff --git a/avm/res/insights/webtest/main.json b/avm/res/insights/webtest/main.json index fbf790faf9..b5ece61cce 100644 --- a/avm/res/insights/webtest/main.json +++ b/avm/res/insights/webtest/main.json @@ -5,8 +5,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "279019710662992731" + "version": "0.26.170.59819", + "templateHash": "9763185230579436305" }, "name": "Web Tests", "description": "This module deploys a Web Test.", diff --git a/avm/res/network/virtual-network/README.md b/avm/res/network/virtual-network/README.md index 87cb1ddedc..2618d0811f 100644 --- a/avm/res/network/virtual-network/README.md +++ b/avm/res/network/virtual-network/README.md @@ -188,6 +188,13 @@ module virtualNetwork 'br/public:avm/res/network/virtual-network:' = { privateEndpointNetworkPolicies: 'Disabled' privateLinkServiceNetworkPolicies: 'Enabled' } + { + addressPrefix: '' + name: 'az-subnet-x-004' + natGatewayResourceId: '' + networkSecurityGroupResourceId: '' + routeTableResourceId: '' + } { addressPrefix: '' name: 'AzureBastionSubnet' @@ -319,6 +326,13 @@ module virtualNetwork 'br/public:avm/res/network/virtual-network:' = { "privateEndpointNetworkPolicies": "Disabled", "privateLinkServiceNetworkPolicies": "Enabled" }, + { + "addressPrefix": "", + "name": "az-subnet-x-004", + "natGatewayResourceId": "", + "networkSecurityGroupResourceId": "", + "routeTableResourceId": "" + }, { "addressPrefix": "", "name": "AzureBastionSubnet", diff --git a/avm/res/network/virtual-network/main.bicep b/avm/res/network/virtual-network/main.bicep index e1d6854e1c..2d272099bc 100644 --- a/avm/res/network/virtual-network/main.bicep +++ b/avm/res/network/virtual-network/main.bicep @@ -130,12 +130,12 @@ resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-04-01' = { : [] delegations: contains(subnet, 'delegations') ? subnet.delegations : [] ipAllocations: contains(subnet, 'ipAllocations') ? subnet.ipAllocations : [] - natGateway: contains(subnet, 'natGatewayResourceId') + natGateway: contains(subnet, 'natGatewayResourceId') && !empty(subnet.natGatewayResourceId) ? { id: subnet.natGatewayResourceId } : null - networkSecurityGroup: contains(subnet, 'networkSecurityGroupResourceId') + networkSecurityGroup: contains(subnet, 'networkSecurityGroupResourceId') && !empty(subnet.networkSecurityGroupResourceId) ? { id: subnet.networkSecurityGroupResourceId } @@ -146,7 +146,7 @@ resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-04-01' = { privateLinkServiceNetworkPolicies: contains(subnet, 'privateLinkServiceNetworkPolicies') ? subnet.privateLinkServiceNetworkPolicies : null - routeTable: contains(subnet, 'routeTableResourceId') + routeTable: contains(subnet, 'routeTableResourceId') && !empty(subnet.routeTableResourceId) ? { id: subnet.routeTableResourceId } diff --git a/avm/res/network/virtual-network/main.json b/avm/res/network/virtual-network/main.json index 8e3664e661..e6058d7533 100644 --- a/avm/res/network/virtual-network/main.json +++ b/avm/res/network/virtual-network/main.json @@ -5,8 +5,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "11377673418536997302" + "version": "0.26.170.59819", + "templateHash": "15351421638054038409" }, "name": "Virtual Networks", "description": "This module deploys a Virtual Network (vNet).", @@ -382,11 +382,11 @@ "applicationGatewayIPConfigurations": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'applicationGatewayIPConfigurations'), parameters('subnets')[copyIndex('subnets')].applicationGatewayIPConfigurations, createArray())]", "delegations": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'delegations'), parameters('subnets')[copyIndex('subnets')].delegations, createArray())]", "ipAllocations": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'ipAllocations'), parameters('subnets')[copyIndex('subnets')].ipAllocations, createArray())]", - "natGateway": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'natGatewayResourceId'), createObject('id', parameters('subnets')[copyIndex('subnets')].natGatewayResourceId), null())]", - "networkSecurityGroup": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'networkSecurityGroupResourceId'), createObject('id', parameters('subnets')[copyIndex('subnets')].networkSecurityGroupResourceId), null())]", + "natGateway": "[if(and(contains(parameters('subnets')[copyIndex('subnets')], 'natGatewayResourceId'), not(empty(parameters('subnets')[copyIndex('subnets')].natGatewayResourceId))), createObject('id', parameters('subnets')[copyIndex('subnets')].natGatewayResourceId), null())]", + "networkSecurityGroup": "[if(and(contains(parameters('subnets')[copyIndex('subnets')], 'networkSecurityGroupResourceId'), not(empty(parameters('subnets')[copyIndex('subnets')].networkSecurityGroupResourceId))), createObject('id', parameters('subnets')[copyIndex('subnets')].networkSecurityGroupResourceId), null())]", "privateEndpointNetworkPolicies": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'privateEndpointNetworkPolicies'), parameters('subnets')[copyIndex('subnets')].privateEndpointNetworkPolicies, null())]", "privateLinkServiceNetworkPolicies": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'privateLinkServiceNetworkPolicies'), parameters('subnets')[copyIndex('subnets')].privateLinkServiceNetworkPolicies, null())]", - "routeTable": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'routeTableResourceId'), createObject('id', parameters('subnets')[copyIndex('subnets')].routeTableResourceId), null())]", + "routeTable": "[if(and(contains(parameters('subnets')[copyIndex('subnets')], 'routeTableResourceId'), not(empty(parameters('subnets')[copyIndex('subnets')].routeTableResourceId))), createObject('id', parameters('subnets')[copyIndex('subnets')].routeTableResourceId), null())]", "serviceEndpoints": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'serviceEndpoints'), parameters('subnets')[copyIndex('subnets')].serviceEndpoints, createArray())]", "serviceEndpointPolicies": "[if(contains(parameters('subnets')[copyIndex('subnets')], 'serviceEndpointPolicies'), parameters('subnets')[copyIndex('subnets')].serviceEndpointPolicies, createArray())]" } @@ -523,8 +523,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "11309828149329550402" + "version": "0.26.170.59819", + "templateHash": "17306638026226376877" }, "name": "Virtual Network Subnets", "description": "This module deploys a Virtual Network Subnet.", @@ -849,8 +849,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "2926837656927862519" + "version": "0.26.170.59819", + "templateHash": "17624189975510507274" }, "name": "Virtual Network Peerings", "description": "This module deploys a Virtual Network Peering.", @@ -994,8 +994,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "2926837656927862519" + "version": "0.26.170.59819", + "templateHash": "17624189975510507274" }, "name": "Virtual Network Peerings", "description": "This module deploys a Virtual Network Peering.", diff --git a/avm/res/network/virtual-network/tests/e2e/max/main.test.bicep b/avm/res/network/virtual-network/tests/e2e/max/main.test.bicep index 0eff43a79d..6111d452f3 100644 --- a/avm/res/network/virtual-network/tests/e2e/max/main.test.bicep +++ b/avm/res/network/virtual-network/tests/e2e/max/main.test.bicep @@ -151,11 +151,18 @@ module testDeployment '../../../main.bicep' = [ } { addressPrefix: cidrSubnet(addressPrefix, 24, 4) + name: '${namePrefix}-az-subnet-x-004' + networkSecurityGroupResourceId: '' + natGatewayResourceId: '' + routeTableResourceId: '' + } + { + addressPrefix: cidrSubnet(addressPrefix, 24, 5) name: 'AzureBastionSubnet' networkSecurityGroupResourceId: nestedDependencies.outputs.networkSecurityGroupBastionResourceId } { - addressPrefix: cidrSubnet(addressPrefix, 24, 5) + addressPrefix: cidrSubnet(addressPrefix, 24, 6) name: 'AzureFirewallSubnet' } ] diff --git a/avm/res/web/site/README.md b/avm/res/web/site/README.md index fd8403c4f3..21971f56f9 100644 --- a/avm/res/web/site/README.md +++ b/avm/res/web/site/README.md @@ -2125,6 +2125,8 @@ Configuration details for private endpoints. For security reasons, it is recomme | [`name`](#parameter-privateendpointsname) | string | The name of the private endpoint. | | [`privateDnsZoneGroupName`](#parameter-privateendpointsprivatednszonegroupname) | string | The name of the private DNS zone group to create if `privateDnsZoneResourceIds` were provided. | | [`privateDnsZoneResourceIds`](#parameter-privateendpointsprivatednszoneresourceids) | array | The private DNS zone groups to associate the private endpoint with. A DNS zone group can support up to 5 DNS zones. | +| [`privateLinkServiceConnectionName`](#parameter-privateendpointsprivatelinkserviceconnectionname) | string | The name of the private link connection to create. | +| [`resourceGroupName`](#parameter-privateendpointsresourcegroupname) | string | Specify if you want to deploy the Private Endpoint into a different resource group than the main resource. | | [`roleAssignments`](#parameter-privateendpointsroleassignments) | array | Array of role assignments to create. | | [`service`](#parameter-privateendpointsservice) | string | The subresource to deploy the private endpoint for. For example "vault", "mysqlServer" or "dataFactory". | | [`tags`](#parameter-privateendpointstags) | object | Tags to be applied on all resources/resource groups in this deployment. | @@ -2320,6 +2322,20 @@ The private DNS zone groups to associate the private endpoint with. A DNS zone g - Required: No - Type: array +### Parameter: `privateEndpoints.privateLinkServiceConnectionName` + +The name of the private link connection to create. + +- Required: No +- Type: string + +### Parameter: `privateEndpoints.resourceGroupName` + +Specify if you want to deploy the Private Endpoint into a different resource group than the main resource. + +- Required: No +- Type: string + ### Parameter: `privateEndpoints.roleAssignments` Array of role assignments to create. @@ -2654,7 +2670,7 @@ This section gives you an overview of all local-referenced module files (i.e., o | Reference | Type | | :-- | :-- | -| `br/public:avm/res/network/private-endpoint:0.4.0` | Remote reference | +| `br/public:avm/res/network/private-endpoint:0.4.1` | Remote reference | ## Notes diff --git a/avm/res/web/site/basic-publishing-credentials-policy/main.bicep b/avm/res/web/site/basic-publishing-credentials-policy/main.bicep index de0e237cc3..f09d81edf7 100644 --- a/avm/res/web/site/basic-publishing-credentials-policy/main.bicep +++ b/avm/res/web/site/basic-publishing-credentials-policy/main.bicep @@ -2,17 +2,17 @@ metadata name = 'Web Site Basic Publishing Credentials Policies' metadata description = 'This module deploys a Web Site Basic Publishing Credentials Policy.' metadata owner = 'Azure/module-maintainers' -@sys.description('Required. The name of the resource.') +@description('Required. The name of the resource.') @allowed([ 'scm' 'ftp' ]) param name string -@sys.description('Optional. Set to true to enable or false to disable a publishing method.') +@description('Optional. Set to true to enable or false to disable a publishing method.') param allow bool = true -@sys.description('Conditional. The name of the parent web site. Required if the template is used in a standalone deployment.') +@description('Conditional. The name of the parent web site. Required if the template is used in a standalone deployment.') param webAppName string @description('Optional. Location for all Resources.') @@ -23,6 +23,7 @@ resource webApp 'Microsoft.Web/sites@2022-09-01' existing = { } resource basicPublishingCredentialsPolicy 'Microsoft.Web/sites/basicPublishingCredentialsPolicies@2022-09-01' = { + #disable-next-line BCP225 // False-positive. Value is required. name: name location: location parent: webApp @@ -31,14 +32,14 @@ resource basicPublishingCredentialsPolicy 'Microsoft.Web/sites/basicPublishingCr } } -@sys.description('The name of the basic publishing credential policy.') +@description('The name of the basic publishing credential policy.') output name string = basicPublishingCredentialsPolicy.name -@sys.description('The resource ID of the basic publishing credential policy.') +@description('The resource ID of the basic publishing credential policy.') output resourceId string = basicPublishingCredentialsPolicy.id -@sys.description('The name of the resource group the basic publishing credential policy was deployed into.') +@description('The name of the resource group the basic publishing credential policy was deployed into.') output resourceGroupName string = resourceGroup().name -@sys.description('The location the resource was deployed into.') +@description('The location the resource was deployed into.') output location string = basicPublishingCredentialsPolicy.location diff --git a/avm/res/web/site/basic-publishing-credentials-policy/main.json b/avm/res/web/site/basic-publishing-credentials-policy/main.json index cc6e4e5abb..d66be05607 100644 --- a/avm/res/web/site/basic-publishing-credentials-policy/main.json +++ b/avm/res/web/site/basic-publishing-credentials-policy/main.json @@ -4,8 +4,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "12379291046700283915" + "version": "0.26.170.59819", + "templateHash": "1590652329081458395" }, "name": "Web Site Basic Publishing Credentials Policies", "description": "This module deploys a Web Site Basic Publishing Credentials Policy.", diff --git a/avm/res/web/site/config--appsettings/main.json b/avm/res/web/site/config--appsettings/main.json index aa1a357e49..60bd2b692e 100644 --- a/avm/res/web/site/config--appsettings/main.json +++ b/avm/res/web/site/config--appsettings/main.json @@ -5,8 +5,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "18064037455551234601" + "version": "0.26.170.59819", + "templateHash": "12051629915105082529" }, "name": "Site App Settings", "description": "This module deploys a Site App Setting.", diff --git a/avm/res/web/site/config--authsettingsv2/main.json b/avm/res/web/site/config--authsettingsv2/main.json index 4a56803f1a..0c5c3fd8f3 100644 --- a/avm/res/web/site/config--authsettingsv2/main.json +++ b/avm/res/web/site/config--authsettingsv2/main.json @@ -4,8 +4,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "9660352953607316036" + "version": "0.26.170.59819", + "templateHash": "14303407385986258247" }, "name": "Site Auth Settings V2 Config", "description": "This module deploys a Site Auth Settings V2 Configuration.", diff --git a/avm/res/web/site/hybrid-connection-namespace/relay/main.json b/avm/res/web/site/hybrid-connection-namespace/relay/main.json index 9b76669f1b..149129143b 100644 --- a/avm/res/web/site/hybrid-connection-namespace/relay/main.json +++ b/avm/res/web/site/hybrid-connection-namespace/relay/main.json @@ -4,8 +4,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "12607693486765150465" + "version": "0.26.170.59819", + "templateHash": "15287918657229788223" }, "name": "Web/Function Apps Hybrid Connection Relay", "description": "This module deploys a Site Hybrid Connection Namespace Relay.", diff --git a/avm/res/web/site/main.bicep b/avm/res/web/site/main.bicep index 9c2aefa0e4..1d2c0cc3c0 100644 --- a/avm/res/web/site/main.bicep +++ b/avm/res/web/site/main.bicep @@ -168,7 +168,7 @@ var formattedUserAssignedIdentities = reduce( var identity = !empty(managedIdentities) ? { type: (managedIdentities.?systemAssigned ?? false) - ? (!empty(managedIdentities.?userAssignedResourceIds ?? {}) ? 'SystemAssigned,UserAssigned' : 'SystemAssigned') + ? (!empty(managedIdentities.?userAssignedResourceIds ?? {}) ? 'SystemAssigned, UserAssigned' : 'SystemAssigned') : (!empty(managedIdentities.?userAssignedResourceIds ?? {}) ? 'UserAssigned' : 'None') userAssignedIdentities: !empty(formattedUserAssignedIdentities) ? formattedUserAssignedIdentities : null } @@ -418,12 +418,13 @@ resource app_roleAssignments 'Microsoft.Authorization/roleAssignments@2022-04-01 } ] -module app_privateEndpoints 'br/public:avm/res/network/private-endpoint:0.4.0' = [ +module app_privateEndpoints 'br/public:avm/res/network/private-endpoint:0.4.1' = [ for (privateEndpoint, index) in (privateEndpoints ?? []): { - name: '${uniqueString(deployment().name, location)}-App-PrivateEndpoint-${index}' + name: '${uniqueString(deployment().name, location)}-app-PrivateEndpoint-${index}' + scope: resourceGroup(privateEndpoint.?resourceGroupName ?? '') params: { name: privateEndpoint.?name ?? 'pep-${last(split(app.id, '/'))}-${privateEndpoint.?service ?? 'sites'}-${index}' - privateLinkServiceConnections: privateEndpoint.?manualPrivateLinkServiceConnections != true + privateLinkServiceConnections: privateEndpoint.?isManualConnection != true ? [ { name: privateEndpoint.?privateLinkServiceConnectionName ?? '${last(split(app.id, '/'))}-${privateEndpoint.?service ?? 'sites'}-${index}' @@ -436,7 +437,7 @@ module app_privateEndpoints 'br/public:avm/res/network/private-endpoint:0.4.0' = } ] : null - manualPrivateLinkServiceConnections: privateEndpoint.?manualPrivateLinkServiceConnections == true + manualPrivateLinkServiceConnections: privateEndpoint.?isManualConnection == true ? [ { name: privateEndpoint.?privateLinkServiceConnectionName ?? '${last(split(app.id, '/'))}-${privateEndpoint.?service ?? 'sites'}-${index}' @@ -549,6 +550,9 @@ type privateEndpointType = { @description('Optional. The location to deploy the private endpoint to.') location: string? + @description('Optional. The name of the private link connection to create.') + privateLinkServiceConnectionName: string? + @description('Optional. The subresource to deploy the private endpoint for. For example "vault", "mysqlServer" or "dataFactory".') service: string? @@ -612,6 +616,9 @@ type privateEndpointType = { @description('Optional. Enable/Disable usage telemetry for module.') enableTelemetry: bool? + + @description('Optional. Specify if you want to deploy the Private Endpoint into a different resource group than the main resource.') + resourceGroupName: string? }[]? type diagnosticSettingType = { diff --git a/avm/res/web/site/main.json b/avm/res/web/site/main.json index 607d3adbb5..65d7ddc02c 100644 --- a/avm/res/web/site/main.json +++ b/avm/res/web/site/main.json @@ -6,7 +6,7 @@ "_generator": { "name": "bicep", "version": "0.26.170.59819", - "templateHash": "5830272725104890600" + "templateHash": "3119256984353816365" }, "name": "Web/Function Apps", "description": "This module deploys a Web or Function App.", @@ -146,6 +146,13 @@ "description": "Optional. The location to deploy the private endpoint to." } }, + "privateLinkServiceConnectionName": { + "type": "string", + "nullable": true, + "metadata": { + "description": "Optional. The name of the private link connection to create." + } + }, "service": { "type": "string", "nullable": true, @@ -305,6 +312,13 @@ "metadata": { "description": "Optional. Enable/Disable usage telemetry for module." } + }, + "resourceGroupName": { + "type": "string", + "nullable": true, + "metadata": { + "description": "Optional. Specify if you want to deploy the Private Endpoint into a different resource group than the main resource." + } } } }, @@ -747,7 +761,7 @@ }, "variables": { "formattedUserAssignedIdentities": "[reduce(map(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createArray()), lambda('id', createObject(format('{0}', lambdaVariables('id')), createObject()))), createObject(), lambda('cur', 'next', union(lambdaVariables('cur'), lambdaVariables('next'))))]", - "identity": "[if(not(empty(parameters('managedIdentities'))), createObject('type', if(coalesce(tryGet(parameters('managedIdentities'), 'systemAssigned'), false()), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'SystemAssigned,UserAssigned', 'SystemAssigned'), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'UserAssigned', 'None')), 'userAssignedIdentities', if(not(empty(variables('formattedUserAssignedIdentities'))), variables('formattedUserAssignedIdentities'), null())), null())]", + "identity": "[if(not(empty(parameters('managedIdentities'))), createObject('type', if(coalesce(tryGet(parameters('managedIdentities'), 'systemAssigned'), false()), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'SystemAssigned, UserAssigned', 'SystemAssigned'), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'UserAssigned', 'None')), 'userAssignedIdentities', if(not(empty(variables('formattedUserAssignedIdentities'))), variables('formattedUserAssignedIdentities'), null())), null())]", "builtInRoleNames": { "App Compliance Automation Administrator": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0f37683f-2463-46b6-9ce7-9b788b988ba2')]", "Contributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", @@ -1301,7 +1315,7 @@ "_generator": { "name": "bicep", "version": "0.26.170.59819", - "templateHash": "5665258089530156840" + "templateHash": "497999704181455009" }, "name": "Web/Function App Deployment Slots", "description": "This module deploys a Web or Function App Deployment Slot.", @@ -1441,6 +1455,13 @@ "description": "Optional. The location to deploy the private endpoint to." } }, + "privateLinkServiceConnectionName": { + "type": "string", + "nullable": true, + "metadata": { + "description": "Optional. The name of the private link connection to create." + } + }, "service": { "type": "string", "nullable": true, @@ -1600,6 +1621,13 @@ "metadata": { "description": "Optional. Enable/Disable usage telemetry for module." } + }, + "resourceGroupName": { + "type": "string", + "nullable": true, + "metadata": { + "description": "Optional. Specify if you want to deploy the Private Endpoint into a different resource group than the main resource." + } } } }, @@ -2035,7 +2063,7 @@ }, "variables": { "formattedUserAssignedIdentities": "[reduce(map(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createArray()), lambda('id', createObject(format('{0}', lambdaVariables('id')), createObject()))), createObject(), lambda('cur', 'next', union(lambdaVariables('cur'), lambdaVariables('next'))))]", - "identity": "[if(not(empty(parameters('managedIdentities'))), createObject('type', if(coalesce(tryGet(parameters('managedIdentities'), 'systemAssigned'), false()), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'SystemAssigned,UserAssigned', 'SystemAssigned'), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'UserAssigned', null())), 'userAssignedIdentities', if(not(empty(variables('formattedUserAssignedIdentities'))), variables('formattedUserAssignedIdentities'), null())), null())]", + "identity": "[if(not(empty(parameters('managedIdentities'))), createObject('type', if(coalesce(tryGet(parameters('managedIdentities'), 'systemAssigned'), false()), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'SystemAssigned, UserAssigned', 'SystemAssigned'), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'UserAssigned', null())), 'userAssignedIdentities', if(not(empty(variables('formattedUserAssignedIdentities'))), variables('formattedUserAssignedIdentities'), null())), null())]", "builtInRoleNames": { "App Compliance Automation Administrator": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0f37683f-2463-46b6-9ce7-9b788b988ba2')]", "Contributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", @@ -2708,7 +2736,8 @@ }, "type": "Microsoft.Resources/deployments", "apiVersion": "2022-09-01", - "name": "[format('{0}-Slot-PrivateEndpoint-{1}', uniqueString(deployment().name, parameters('location')), copyIndex())]", + "name": "[format('{0}-slot-PrivateEndpoint-{1}', uniqueString(deployment().name, parameters('location')), copyIndex())]", + "resourceGroup": "[coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'resourceGroupName'), '')]", "properties": { "expressionEvaluationOptions": { "scope": "inner" @@ -2716,10 +2745,10 @@ "mode": "Incremental", "parameters": { "name": { - "value": "[coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'name'), format('pep-{0}-{1}-{2}-{3}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), parameters('name'), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex()))]" + "value": "[coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'name'), format('pep-{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex()))]" }, - "privateLinkServiceConnections": "[if(not(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualPrivateLinkServiceConnections'), true())), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('appName')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name')))))))), createObject('value', null()))]", - "manualPrivateLinkServiceConnections": "[if(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualPrivateLinkServiceConnections'), true()), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('appName')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name')))), 'requestMessage', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualConnectionRequestMessage'), 'Manual approval required.'))))), createObject('value', null()))]", + "privateLinkServiceConnections": "[if(not(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'isManualConnection'), true())), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('appName')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name')))))))), createObject('value', null()))]", + "manualPrivateLinkServiceConnections": "[if(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'isManualConnection'), true()), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('appName')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name')))), 'requestMessage', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualConnectionRequestMessage'), 'Manual approval required.'))))), createObject('value', null()))]", "subnetResourceId": { "value": "[coalesce(parameters('privateEndpoints'), createArray())[copyIndex()].subnetResourceId]" }, @@ -2764,8 +2793,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.24.24.22086", - "templateHash": "2592884001616184297" + "version": "0.25.53.49325", + "templateHash": "4120048060064073955" }, "name": "Private Endpoints", "description": "This module deploys a Private Endpoint.", @@ -3130,7 +3159,7 @@ "condition": "[parameters('enableTelemetry')]", "type": "Microsoft.Resources/deployments", "apiVersion": "2023-07-01", - "name": "[format('46d3xbcp.res.network-privateendpoint.{0}.{1}', replace('0.4.0', '.', '-'), substring(uniqueString(deployment().name, parameters('location')), 0, 4))]", + "name": "[format('46d3xbcp.res.network-privateendpoint.{0}.{1}', replace('0.4.1', '.', '-'), substring(uniqueString(deployment().name, parameters('location')), 0, 4))]", "properties": { "mode": "Incremental", "template": { @@ -3235,8 +3264,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.24.24.22086", - "templateHash": "9321937464667207030" + "version": "0.25.53.49325", + "templateHash": "11244630631275470040" }, "name": "Private Endpoint Private DNS Zone Groups", "description": "This module deploys a Private Endpoint Private DNS Zone Group.", @@ -3637,7 +3666,8 @@ }, "type": "Microsoft.Resources/deployments", "apiVersion": "2022-09-01", - "name": "[format('{0}-App-PrivateEndpoint-{1}', uniqueString(deployment().name, parameters('location')), copyIndex())]", + "name": "[format('{0}-app-PrivateEndpoint-{1}', uniqueString(deployment().name, parameters('location')), copyIndex())]", + "resourceGroup": "[coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'resourceGroupName'), '')]", "properties": { "expressionEvaluationOptions": { "scope": "inner" @@ -3647,8 +3677,8 @@ "name": { "value": "[coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'name'), format('pep-{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('name')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), 'sites'), copyIndex()))]" }, - "privateLinkServiceConnections": "[if(not(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualPrivateLinkServiceConnections'), true())), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('name')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), 'sites'), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('name')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), 'sites')))))), createObject('value', null()))]", - "manualPrivateLinkServiceConnections": "[if(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualPrivateLinkServiceConnections'), true()), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('name')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), 'sites'), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('name')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), 'sites')), 'requestMessage', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualConnectionRequestMessage'), 'Manual approval required.'))))), createObject('value', null()))]", + "privateLinkServiceConnections": "[if(not(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'isManualConnection'), true())), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('name')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), 'sites'), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('name')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), 'sites')))))), createObject('value', null()))]", + "manualPrivateLinkServiceConnections": "[if(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'isManualConnection'), true()), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('name')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), 'sites'), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('name')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), 'sites')), 'requestMessage', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualConnectionRequestMessage'), 'Manual approval required.'))))), createObject('value', null()))]", "subnetResourceId": { "value": "[coalesce(parameters('privateEndpoints'), createArray())[copyIndex()].subnetResourceId]" }, @@ -3693,8 +3723,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.24.24.22086", - "templateHash": "2592884001616184297" + "version": "0.25.53.49325", + "templateHash": "4120048060064073955" }, "name": "Private Endpoints", "description": "This module deploys a Private Endpoint.", @@ -4059,7 +4089,7 @@ "condition": "[parameters('enableTelemetry')]", "type": "Microsoft.Resources/deployments", "apiVersion": "2023-07-01", - "name": "[format('46d3xbcp.res.network-privateendpoint.{0}.{1}', replace('0.4.0', '.', '-'), substring(uniqueString(deployment().name, parameters('location')), 0, 4))]", + "name": "[format('46d3xbcp.res.network-privateendpoint.{0}.{1}', replace('0.4.1', '.', '-'), substring(uniqueString(deployment().name, parameters('location')), 0, 4))]", "properties": { "mode": "Incremental", "template": { @@ -4164,8 +4194,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.24.24.22086", - "templateHash": "9321937464667207030" + "version": "0.25.53.49325", + "templateHash": "11244630631275470040" }, "name": "Private Endpoint Private DNS Zone Groups", "description": "This module deploys a Private Endpoint Private DNS Zone Group.", diff --git a/avm/res/web/site/slot/README.md b/avm/res/web/site/slot/README.md index d6bd88486f..35595b3439 100644 --- a/avm/res/web/site/slot/README.md +++ b/avm/res/web/site/slot/README.md @@ -517,6 +517,8 @@ Configuration details for private endpoints. | [`name`](#parameter-privateendpointsname) | string | The name of the private endpoint. | | [`privateDnsZoneGroupName`](#parameter-privateendpointsprivatednszonegroupname) | string | The name of the private DNS zone group to create if `privateDnsZoneResourceIds` were provided. | | [`privateDnsZoneResourceIds`](#parameter-privateendpointsprivatednszoneresourceids) | array | The private DNS zone groups to associate the private endpoint with. A DNS zone group can support up to 5 DNS zones. | +| [`privateLinkServiceConnectionName`](#parameter-privateendpointsprivatelinkserviceconnectionname) | string | The name of the private link connection to create. | +| [`resourceGroupName`](#parameter-privateendpointsresourcegroupname) | string | Specify if you want to deploy the Private Endpoint into a different resource group than the main resource. | | [`roleAssignments`](#parameter-privateendpointsroleassignments) | array | Array of role assignments to create. | | [`service`](#parameter-privateendpointsservice) | string | The subresource to deploy the private endpoint for. For example "vault", "mysqlServer" or "dataFactory". | | [`tags`](#parameter-privateendpointstags) | object | Tags to be applied on all resources/resource groups in this deployment. | @@ -712,6 +714,20 @@ The private DNS zone groups to associate the private endpoint with. A DNS zone g - Required: No - Type: array +### Parameter: `privateEndpoints.privateLinkServiceConnectionName` + +The name of the private link connection to create. + +- Required: No +- Type: string + +### Parameter: `privateEndpoints.resourceGroupName` + +Specify if you want to deploy the Private Endpoint into a different resource group than the main resource. + +- Required: No +- Type: string + ### Parameter: `privateEndpoints.roleAssignments` Array of role assignments to create. @@ -1034,7 +1050,7 @@ This section gives you an overview of all local-referenced module files (i.e., o | Reference | Type | | :-- | :-- | -| `br/public:avm/res/network/private-endpoint:0.4.0` | Remote reference | +| `br/public:avm/res/network/private-endpoint:0.4.1` | Remote reference | ## Notes diff --git a/avm/res/web/site/slot/basic-publishing-credentials-policy/main.bicep b/avm/res/web/site/slot/basic-publishing-credentials-policy/main.bicep index fc239412cc..327b4566cd 100644 --- a/avm/res/web/site/slot/basic-publishing-credentials-policy/main.bicep +++ b/avm/res/web/site/slot/basic-publishing-credentials-policy/main.bicep @@ -2,20 +2,20 @@ metadata name = 'Web Site Slot Basic Publishing Credentials Policies' metadata description = 'This module deploys a Web Site Slot Basic Publishing Credentials Policy.' metadata owner = 'Azure/module-maintainers' -@sys.description('Required. The name of the resource.') +@description('Required. The name of the resource.') @allowed([ 'scm' 'ftp' ]) param name string -@sys.description('Optional. Set to true to enable or false to disable a publishing method.') +@description('Optional. Set to true to enable or false to disable a publishing method.') param allow bool = true -@sys.description('Conditional. The name of the parent web site. Required if the template is used in a standalone deployment.') +@description('Conditional. The name of the parent web site. Required if the template is used in a standalone deployment.') param appName string -@sys.description('Conditional. The name of the parent web site slot. Required if the template is used in a standalone deployment.') +@description('Conditional. The name of the parent web site slot. Required if the template is used in a standalone deployment.') param slotName string @description('Optional. Location for all Resources.') @@ -30,6 +30,7 @@ resource app 'Microsoft.Web/sites@2022-09-01' existing = { } resource basicPublishingCredentialsPolicy 'Microsoft.Web/sites/slots/basicPublishingCredentialsPolicies@2022-09-01' = { + #disable-next-line BCP225 // False-positive. Value is required. name: name location: location parent: app::slot @@ -38,14 +39,14 @@ resource basicPublishingCredentialsPolicy 'Microsoft.Web/sites/slots/basicPublis } } -@sys.description('The name of the basic publishing credential policy.') +@description('The name of the basic publishing credential policy.') output name string = basicPublishingCredentialsPolicy.name -@sys.description('The resource ID of the basic publishing credential policy.') +@description('The resource ID of the basic publishing credential policy.') output resourceId string = basicPublishingCredentialsPolicy.id -@sys.description('The name of the resource group the basic publishing credential policy was deployed into.') +@description('The name of the resource group the basic publishing credential policy was deployed into.') output resourceGroupName string = resourceGroup().name -@sys.description('The location the resource was deployed into.') +@description('The location the resource was deployed into.') output location string = basicPublishingCredentialsPolicy.location diff --git a/avm/res/web/site/slot/basic-publishing-credentials-policy/main.json b/avm/res/web/site/slot/basic-publishing-credentials-policy/main.json index 5edba81498..a3a6ec2201 100644 --- a/avm/res/web/site/slot/basic-publishing-credentials-policy/main.json +++ b/avm/res/web/site/slot/basic-publishing-credentials-policy/main.json @@ -4,8 +4,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "2236066853450471067" + "version": "0.26.170.59819", + "templateHash": "4923254671011353973" }, "name": "Web Site Slot Basic Publishing Credentials Policies", "description": "This module deploys a Web Site Slot Basic Publishing Credentials Policy.", diff --git a/avm/res/web/site/slot/config--appsettings/main.json b/avm/res/web/site/slot/config--appsettings/main.json index 6f64bbb346..0ae972101e 100644 --- a/avm/res/web/site/slot/config--appsettings/main.json +++ b/avm/res/web/site/slot/config--appsettings/main.json @@ -5,8 +5,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "12764984503745572183" + "version": "0.26.170.59819", + "templateHash": "16550727222833899283" }, "name": "Site Slot App Settings", "description": "This module deploys a Site Slot App Setting.", diff --git a/avm/res/web/site/slot/config--authsettingsv2/main.json b/avm/res/web/site/slot/config--authsettingsv2/main.json index e066ea03ac..7853d2be24 100644 --- a/avm/res/web/site/slot/config--authsettingsv2/main.json +++ b/avm/res/web/site/slot/config--authsettingsv2/main.json @@ -4,8 +4,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "1333776366661137381" + "version": "0.26.170.59819", + "templateHash": "512112730780239094" }, "name": "Site Slot Auth Settings V2 Config", "description": "This module deploys a Site Auth Settings V2 Configuration.", diff --git a/avm/res/web/site/slot/hybrid-connection-namespace/relay/main.json b/avm/res/web/site/slot/hybrid-connection-namespace/relay/main.json index 34a8005abb..a1149dd204 100644 --- a/avm/res/web/site/slot/hybrid-connection-namespace/relay/main.json +++ b/avm/res/web/site/slot/hybrid-connection-namespace/relay/main.json @@ -4,8 +4,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "1058820827217282473" + "version": "0.26.170.59819", + "templateHash": "15033433727480709023" }, "name": "Web/Function Apps Slot Hybrid Connection Relay", "description": "This module deploys a Site Slot Hybrid Connection Namespace Relay.", diff --git a/avm/res/web/site/slot/main.bicep b/avm/res/web/site/slot/main.bicep index f5aa6cf5f1..5e580d7c14 100644 --- a/avm/res/web/site/slot/main.bicep +++ b/avm/res/web/site/slot/main.bicep @@ -160,7 +160,7 @@ var formattedUserAssignedIdentities = reduce( var identity = !empty(managedIdentities) ? { type: (managedIdentities.?systemAssigned ?? false) - ? (!empty(managedIdentities.?userAssignedResourceIds ?? {}) ? 'SystemAssigned,UserAssigned' : 'SystemAssigned') + ? (!empty(managedIdentities.?userAssignedResourceIds ?? {}) ? 'SystemAssigned, UserAssigned' : 'SystemAssigned') : (!empty(managedIdentities.?userAssignedResourceIds ?? {}) ? 'UserAssigned' : null) userAssignedIdentities: !empty(formattedUserAssignedIdentities) ? formattedUserAssignedIdentities : null } @@ -344,12 +344,13 @@ resource slot_roleAssignments 'Microsoft.Authorization/roleAssignments@2022-04-0 } ] -module slot_privateEndpoints 'br/public:avm/res/network/private-endpoint:0.4.0' = [ +module slot_privateEndpoints 'br/public:avm/res/network/private-endpoint:0.4.1' = [ for (privateEndpoint, index) in (privateEndpoints ?? []): { - name: '${uniqueString(deployment().name, location)}-Slot-PrivateEndpoint-${index}' + name: '${uniqueString(deployment().name, location)}-slot-PrivateEndpoint-${index}' + scope: resourceGroup(privateEndpoint.?resourceGroupName ?? '') params: { - name: privateEndpoint.?name ?? 'pep-${last(split(app.id, '/'))}-${name}-${privateEndpoint.?service ?? 'sites-${slot.name}'}-${index}' - privateLinkServiceConnections: privateEndpoint.?manualPrivateLinkServiceConnections != true + name: privateEndpoint.?name ?? 'pep-${last(split(app.id, '/'))}-${privateEndpoint.?service ?? 'sites-${slot.name}'}-${index}' + privateLinkServiceConnections: privateEndpoint.?isManualConnection != true ? [ { name: privateEndpoint.?privateLinkServiceConnectionName ?? '${last(split(app.id, '/'))}-${privateEndpoint.?service ?? 'sites-${slot.name}'}-${index}' @@ -362,7 +363,7 @@ module slot_privateEndpoints 'br/public:avm/res/network/private-endpoint:0.4.0' } ] : null - manualPrivateLinkServiceConnections: privateEndpoint.?manualPrivateLinkServiceConnections == true + manualPrivateLinkServiceConnections: privateEndpoint.?isManualConnection == true ? [ { name: privateEndpoint.?privateLinkServiceConnectionName ?? '${last(split(app.id, '/'))}-${privateEndpoint.?service ?? 'sites-${slot.name}'}-${index}' @@ -461,6 +462,9 @@ type privateEndpointType = { @description('Optional. The location to deploy the private endpoint to.') location: string? + @description('Optional. The name of the private link connection to create.') + privateLinkServiceConnectionName: string? + @description('Optional. The subresource to deploy the private endpoint for. For example "vault", "mysqlServer" or "dataFactory".') service: string? @@ -524,6 +528,9 @@ type privateEndpointType = { @description('Optional. Enable/Disable usage telemetry for module.') enableTelemetry: bool? + + @description('Optional. Specify if you want to deploy the Private Endpoint into a different resource group than the main resource.') + resourceGroupName: string? }[]? type diagnosticSettingType = { diff --git a/avm/res/web/site/slot/main.json b/avm/res/web/site/slot/main.json index ca03c4ee64..fbc2ce7afe 100644 --- a/avm/res/web/site/slot/main.json +++ b/avm/res/web/site/slot/main.json @@ -5,8 +5,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "7436278786647572492" + "version": "0.26.170.59819", + "templateHash": "497999704181455009" }, "name": "Web/Function App Deployment Slots", "description": "This module deploys a Web or Function App Deployment Slot.", @@ -146,6 +146,13 @@ "description": "Optional. The location to deploy the private endpoint to." } }, + "privateLinkServiceConnectionName": { + "type": "string", + "nullable": true, + "metadata": { + "description": "Optional. The name of the private link connection to create." + } + }, "service": { "type": "string", "nullable": true, @@ -305,6 +312,13 @@ "metadata": { "description": "Optional. Enable/Disable usage telemetry for module." } + }, + "resourceGroupName": { + "type": "string", + "nullable": true, + "metadata": { + "description": "Optional. Specify if you want to deploy the Private Endpoint into a different resource group than the main resource." + } } } }, @@ -740,7 +754,7 @@ }, "variables": { "formattedUserAssignedIdentities": "[reduce(map(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createArray()), lambda('id', createObject(format('{0}', lambdaVariables('id')), createObject()))), createObject(), lambda('cur', 'next', union(lambdaVariables('cur'), lambdaVariables('next'))))]", - "identity": "[if(not(empty(parameters('managedIdentities'))), createObject('type', if(coalesce(tryGet(parameters('managedIdentities'), 'systemAssigned'), false()), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'SystemAssigned,UserAssigned', 'SystemAssigned'), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'UserAssigned', null())), 'userAssignedIdentities', if(not(empty(variables('formattedUserAssignedIdentities'))), variables('formattedUserAssignedIdentities'), null())), null())]", + "identity": "[if(not(empty(parameters('managedIdentities'))), createObject('type', if(coalesce(tryGet(parameters('managedIdentities'), 'systemAssigned'), false()), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'SystemAssigned, UserAssigned', 'SystemAssigned'), if(not(empty(coalesce(tryGet(parameters('managedIdentities'), 'userAssignedResourceIds'), createObject()))), 'UserAssigned', null())), 'userAssignedIdentities', if(not(empty(variables('formattedUserAssignedIdentities'))), variables('formattedUserAssignedIdentities'), null())), null())]", "builtInRoleNames": { "App Compliance Automation Administrator": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0f37683f-2463-46b6-9ce7-9b788b988ba2')]", "Contributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]", @@ -913,8 +927,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "12764984503745572183" + "version": "0.26.170.59819", + "templateHash": "16550727222833899283" }, "name": "Site Slot App Settings", "description": "This module deploys a Site Slot App Setting.", @@ -1083,8 +1097,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "1333776366661137381" + "version": "0.26.170.59819", + "templateHash": "512112730780239094" }, "name": "Site Slot Auth Settings V2 Config", "description": "This module deploys a Site Auth Settings V2 Configuration.", @@ -1199,8 +1213,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "2236066853450471067" + "version": "0.26.170.59819", + "templateHash": "4923254671011353973" }, "name": "Web Site Slot Basic Publishing Credentials Policies", "description": "This module deploys a Web Site Slot Basic Publishing Credentials Policy.", @@ -1325,8 +1339,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.26.54.24096", - "templateHash": "1058820827217282473" + "version": "0.26.170.59819", + "templateHash": "15033433727480709023" }, "name": "Web/Function Apps Slot Hybrid Connection Relay", "description": "This module deploys a Site Slot Hybrid Connection Namespace Relay.", @@ -1413,7 +1427,8 @@ }, "type": "Microsoft.Resources/deployments", "apiVersion": "2022-09-01", - "name": "[format('{0}-Slot-PrivateEndpoint-{1}', uniqueString(deployment().name, parameters('location')), copyIndex())]", + "name": "[format('{0}-slot-PrivateEndpoint-{1}', uniqueString(deployment().name, parameters('location')), copyIndex())]", + "resourceGroup": "[coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'resourceGroupName'), '')]", "properties": { "expressionEvaluationOptions": { "scope": "inner" @@ -1421,10 +1436,10 @@ "mode": "Incremental", "parameters": { "name": { - "value": "[coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'name'), format('pep-{0}-{1}-{2}-{3}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), parameters('name'), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex()))]" + "value": "[coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'name'), format('pep-{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex()))]" }, - "privateLinkServiceConnections": "[if(not(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualPrivateLinkServiceConnections'), true())), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('appName')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name')))))))), createObject('value', null()))]", - "manualPrivateLinkServiceConnections": "[if(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualPrivateLinkServiceConnections'), true()), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('appName')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name')))), 'requestMessage', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualConnectionRequestMessage'), 'Manual approval required.'))))), createObject('value', null()))]", + "privateLinkServiceConnections": "[if(not(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'isManualConnection'), true())), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('appName')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name')))))))), createObject('value', null()))]", + "manualPrivateLinkServiceConnections": "[if(equals(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'isManualConnection'), true()), createObject('value', createArray(createObject('name', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'privateLinkServiceConnectionName'), format('{0}-{1}-{2}', last(split(resourceId('Microsoft.Web/sites', parameters('appName')), '/')), coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name'))), copyIndex())), 'properties', createObject('privateLinkServiceId', resourceId('Microsoft.Web/sites', parameters('appName')), 'groupIds', createArray(coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'service'), format('sites-{0}', parameters('name')))), 'requestMessage', coalesce(tryGet(coalesce(parameters('privateEndpoints'), createArray())[copyIndex()], 'manualConnectionRequestMessage'), 'Manual approval required.'))))), createObject('value', null()))]", "subnetResourceId": { "value": "[coalesce(parameters('privateEndpoints'), createArray())[copyIndex()].subnetResourceId]" }, @@ -1469,8 +1484,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.24.24.22086", - "templateHash": "2592884001616184297" + "version": "0.25.53.49325", + "templateHash": "4120048060064073955" }, "name": "Private Endpoints", "description": "This module deploys a Private Endpoint.", @@ -1835,7 +1850,7 @@ "condition": "[parameters('enableTelemetry')]", "type": "Microsoft.Resources/deployments", "apiVersion": "2023-07-01", - "name": "[format('46d3xbcp.res.network-privateendpoint.{0}.{1}', replace('0.4.0', '.', '-'), substring(uniqueString(deployment().name, parameters('location')), 0, 4))]", + "name": "[format('46d3xbcp.res.network-privateendpoint.{0}.{1}', replace('0.4.1', '.', '-'), substring(uniqueString(deployment().name, parameters('location')), 0, 4))]", "properties": { "mode": "Incremental", "template": { @@ -1940,8 +1955,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.24.24.22086", - "templateHash": "9321937464667207030" + "version": "0.25.53.49325", + "templateHash": "11244630631275470040" }, "name": "Private Endpoint Private DNS Zone Groups", "description": "This module deploys a Private Endpoint Private DNS Zone Group.", diff --git a/avm/utilities/pipelines/e2eValidation/regionSelector/Get-AzAvailableResourceLocation.ps1 b/avm/utilities/pipelines/e2eValidation/regionSelector/Get-AvailableResourceLocation.ps1 similarity index 96% rename from avm/utilities/pipelines/e2eValidation/regionSelector/Get-AzAvailableResourceLocation.ps1 rename to avm/utilities/pipelines/e2eValidation/regionSelector/Get-AvailableResourceLocation.ps1 index fea03eb471..1ec7dc12c3 100644 --- a/avm/utilities/pipelines/e2eValidation/regionSelector/Get-AzAvailableResourceLocation.ps1 +++ b/avm/utilities/pipelines/e2eValidation/regionSelector/Get-AvailableResourceLocation.ps1 @@ -21,12 +21,12 @@ Optional. The root path of the repository. Required. The location of the resource group where the global resources will be deployed. .EXAMPLE -Get-AzAvailableResourceLocation -ModuleRoot ".\avm\res\resources\resource-group" -repoRoot .\ +Get-AvailableResourceLocation -ModuleRoot ".\avm\res\resources\resource-group" -repoRoot .\ Get the recommended paired regions available for the service. #> -function Get-AzAvailableResourceLocation { +function Get-AvailableResourceLocation { param ( [Parameter(Mandatory = $false)] @@ -58,7 +58,6 @@ function Get-AzAvailableResourceLocation { 'switzerlandnorth', 'uaenorth', 'westeurope', - 'westus2', 'westus2' ) )