diff --git a/.azuredevops/pipelineTemplates/jobs.publishModule.yml b/.azuredevops/pipelineTemplates/jobs.publishModule.yml index df9df5bc86..164d1dfdda 100644 --- a/.azuredevops/pipelineTemplates/jobs.publishModule.yml +++ b/.azuredevops/pipelineTemplates/jobs.publishModule.yml @@ -27,7 +27,8 @@ ## | vmImage | '$(vmImage)' | You can provide either a [poolname] or [vmImage] to run the job on | 'ubuntu20.04' | ## | defaultJobTimeoutInMinutes | 120 | The timeout for the job in this pipeline | 120 | ## | modulePath | '$(modulePath)' | The path to the module to deploy. E.g. [c:/KeyVault] | 'c:/KeyVault' | -## | publishLatest | '$(publishLatest)' | Flag to indicate whether or not to publish a "latest" version to Bicep Registry and Template Specs | true | +## | publishLatest | '$(publishLatest)' | Flag to indicate whether or not to publish a "latest" version to Bicep Registry and Template Specs | true | +## | useApiSpecsAlignedName | '$(useApiSpecsAlignedName)' | Flag to indicate whether or not to publish module using their REST API, or their folder path name | true | ## | templateSpecsRGName | '$(templateSpecsRGName)' | Required to publish to template spec. ResourceGroup of the template spec to publish to | 'mgmt-rg' | ## | templateSpecsRGLocation | '$(templateSpecsRGLocation)' | Required to publish to template spec. Location of the template spec resource group | 'West Europe' | ## | templateSpecsDescription | '$(templateSpecsDescription)' | Required to publish to template spec. Description of the template spec to publish to | 'IaCs module' | @@ -60,6 +61,7 @@ parameters: # Shared publishLatest: '$(publishLatest)' + useApiSpecsAlignedName: '$(useApiSpecsAlignedName)' ## TemplateSpec-related templateSpecsDoPublish: '$(templateSpecsDoPublish)' @@ -164,10 +166,11 @@ jobs: ############################# # Add all modules that don't exist in the target location $missingInputObject = @{ - TemplateFilePath = $TemplateFilePath - VstsOrganizationUri = '${{ parameters.vstsOrganizationUri }}' - VstsFeedProject = '${{ parameters.vstsFeedProject }}' - VstsFeedName = '${{ parameters.vstsFeedName }}' + TemplateFilePath = $TemplateFilePath + VstsOrganizationUri = '${{ parameters.vstsOrganizationUri }}' + VstsFeedProject = '${{ parameters.vstsFeedProject }}' + VstsFeedName = '${{ parameters.vstsFeedName }}' + UseApiSpecsAlignedName = [System.Convert]::ToBoolean('${{ parameters.useApiSpecsAlignedName }}') } Write-Verbose "Invoke Get-ModulesMissingFromUniversalArtifactsFeed with" -Verbose @@ -181,6 +184,12 @@ jobs: } } + # Filter modules to publish 'prerelease' only if branch is not main/master + if ('$(Build.SourceBranch)' -ne 'refs/heads/main' -or '$(Build.SourceBranch)' -ne 'refs/heads/master') { + Write-Verbose "Filtering modules to only publish [prerelease] as current branch [$(Build.SourceBranch)] is not [main/master]." -Verbose + $modulesToPublish = $modulesToPublish | Where-Object -Property version -like '*-prerelease' + } + ################# ## Publish ## ################# @@ -189,11 +198,12 @@ jobs: Write-Host "##[group]$(' - [{0}] [{1}]' -f $RelPath, $moduleToPublish.Version)" $functionInput = @{ - TemplateFilePath = $moduleToPublish.TemplateFilePath - VstsOrganizationUri = '${{ parameters.vstsOrganizationUri }}' - VstsFeedProject = '${{ parameters.vstsFeedProject }}' - VstsFeedName = '${{ parameters.vstsFeedName }}' - ModuleVersion = $moduleToPublish.Version + TemplateFilePath = $moduleToPublish.TemplateFilePath + VstsOrganizationUri = '${{ parameters.vstsOrganizationUri }}' + VstsFeedProject = '${{ parameters.vstsFeedProject }}' + VstsFeedName = '${{ parameters.vstsFeedName }}' + ModuleVersion = $moduleToPublish.Version + UseApiSpecsAlignedName = [System.Convert]::ToBoolean('${{ parameters.useApiSpecsAlignedName }}') } Write-Verbose "Invoke Publish-ModuleToUniversalArtifactsFeed with" -Verbose @@ -241,7 +251,7 @@ jobs: ################################ $functionInput = @{ TemplateFilePath = $TemplateFilePath - PublishLatest = [bool] '${{ parameters.publishLatest }}' + PublishLatest = [System.Convert]::ToBoolean('${{ parameters.publishLatest }}') } Write-Verbose "Invoke Get-ModulesToPublish with" -Verbose @@ -258,9 +268,10 @@ jobs: # Add all modules that don't exist in the target location $missingInputObject = @{ - TemplateFilePath = $TemplateFilePath - TemplateSpecsRGName = '${{ parameters.templateSpecsRgName }}' - PublishLatest = [bool] '${{ parameters.bicepRegistryRgName }}' + TemplateFilePath = $TemplateFilePath + TemplateSpecsRGName = '${{ parameters.templateSpecsRgName }}' + PublishLatest = [System.Convert]::ToBoolean('${{ parameters.publishLatest }}') + UseApiSpecsAlignedName = [System.Convert]::ToBoolean('${{ parameters.useApiSpecsAlignedName }}') } Write-Verbose "Invoke Get-ModulesMissingFromTemplateSpecsRG with" -Verbose @@ -274,6 +285,12 @@ jobs: } } + # Filter modules to publish 'prerelease' only if branch is not main/master + if ('$(Build.SourceBranch)' -ne 'refs/heads/main' -or '$(Build.SourceBranch)' -ne 'refs/heads/master') { + Write-Verbose "Filtering modules to only publish [prerelease] as current branch [$(Build.SourceBranch)] is not [main/master]." -Verbose + $modulesToPublish = $modulesToPublish | Where-Object -Property version -like '*-prerelease' + } + ################# ## Publish ## ################# @@ -287,6 +304,7 @@ jobs: TemplateSpecsRgLocation = '${{ parameters.templateSpecsRgLocation }}' TemplateSpecsDescription = '${{ parameters.templateSpecsDescription }}' ModuleVersion = $moduleToPublish.Version + UseApiSpecsAlignedName = [System.Convert]::ToBoolean('${{ parameters.useApiSpecsAlignedName }}') } Write-Verbose "Invoke Publish-ModuleToTemplateSpecsRG with" -Verbose @@ -336,7 +354,7 @@ jobs: ################################ $functionInput = @{ TemplateFilePath = $TemplateFilePath - PublishLatest = [bool] '${{ parameters.publishLatest }}' + PublishLatest = [System.Convert]::ToBoolean('${{ parameters.publishLatest }}') } Write-Verbose "Invoke Get-ModulesToPublish with" -Verbose @@ -352,10 +370,11 @@ jobs: ############################# # Add all modules that don't exist in the target location $missingInputObject = @{ - TemplateFilePath = $TemplateFilePath - BicepRegistryName = '${{ parameters.bicepRegistryName }}' - BicepRegistryRgName = '${{ parameters.bicepRegistryRgName }}' - PublishLatest = [bool] '${{ parameters.bicepRegistryRgName }}' + TemplateFilePath = $TemplateFilePath + BicepRegistryName = '${{ parameters.bicepRegistryName }}' + BicepRegistryRgName = '${{ parameters.bicepRegistryRgName }}' + PublishLatest = [System.Convert]::ToBoolean('${{ parameters.publishLatest }}') + UseApiSpecsAlignedName = [System.Convert]::ToBoolean('${{ parameters.useApiSpecsAlignedName }}') } Write-Verbose "Invoke Get-ModulesMissingFromPrivateBicepRegistry with" -Verbose @@ -369,6 +388,12 @@ jobs: } } + # Filter modules to publish 'prerelease' only if branch is not main/master + if ('$(Build.SourceBranch)' -ne 'refs/heads/main' -or '$(Build.SourceBranch)' -ne 'refs/heads/master') { + Write-Verbose "Filtering modules to only publish [prerelease] as current branch [$(Build.SourceBranch)] is not [main/master]." -Verbose + $modulesToPublish = $modulesToPublish | Where-Object -Property version -like '*-prerelease' + } + ################# ## Publish ## ################# @@ -382,6 +407,7 @@ jobs: BicepRegistryRgName = '${{ parameters.bicepRegistryRgName }}' BicepRegistryRgLocation = '${{ parameters.bicepRegistryRgLocation }}' ModuleVersion = $moduleToPublish.Version + UseApiSpecsAlignedName = [System.Convert]::ToBoolean('${{ parameters.useApiSpecsAlignedName }}') } Write-Verbose "Invoke Publish-ModuleToPrivateBicepRegistry with" -Verbose diff --git a/.github/actions/templates/publishModule/action.yml b/.github/actions/templates/publishModule/action.yml index 49d8241f57..7aa6ef9356 100644 --- a/.github/actions/templates/publishModule/action.yml +++ b/.github/actions/templates/publishModule/action.yml @@ -12,21 +12,22 @@ ## ACTION PARAMETERS ## ##-------------------------------------------## ## -## |===========================================================================================================================================================================================================| -## | Parameter | Required | Default | Description | Example | -## |--------------------------|----------|---------|--------------------------------------------------------------------------------------------------|--------------------------------------------------------| -## | templateFilePath | true | '' | The path to the template file to publish | 'modules/api-management/service/main.bicep' | -## | subscriptionId | false | '' | The ID of the subscription to publish to | '11111111-1111-1111-1111-111111111111' | -## | templateSpecsRgName | false | '' | Required to publish to template spec. ResourceGroup of the template spec to publish to | 'artifacts-rg' | -## | templateSpecsRgLocation | false | '' | Required to publish to template spec. Location of the template spec resource group | 'WestEurope' | -## | templateSpecsDescription | false | '' | Required to publish to template spec. Description of the template spec to publish to | 'This is an API-Management service template' | -## | templateSpecsDoPublish | false | 'false' | Flag to indicate whether or not to publish to template specs | 'true' | -## | bicepRegistryName | false | '' | Required to publish to private bicep registry. Name of the container registry to publish to | 'myacr' | -## | bicepRegistryRgName | false | '' | Required to publish to private bicep registry. Name of the container registry resource group | 'artifacts-rg' | -## | bicepRegistryRgLocation | false | '' | Required to publish to private bicep registry. Location of the container registry resource group | 'WestEurope' | -## | bicepRegistryDoPublish | false | 'false' | Flag to indicate whether or not to publish to the private bicep registry | 'true' | -## | publishLatest | false | 'true' | Flag to indicate whether or not to publish a "latest" version | 'true' | -## |===========================================================================================================================================================================================================| +## |==============================================================================================================================================================================================================| +## | Parameter | Required | Default | Description | Example | +## |----------------------------|----------|---------|---------------------------------------------------------------------------------------------------|--------------------------------------------------------| +## | templateFilePath | true | '' | The path to the template file to publish | 'modules/api-management/service/main.bicep' | +## | subscriptionId | false | '' | The ID of the subscription to publish to | '11111111-1111-1111-1111-111111111111' | +## | templateSpecsRgName | false | '' | Required to publish to template spec. ResourceGroup of the template spec to publish to | 'artifacts-rg' | +## | templateSpecsRgLocation | false | '' | Required to publish to template spec. Location of the template spec resource group | 'WestEurope' | +## | templateSpecsDescription | false | '' | Required to publish to template spec. Description of the template spec to publish to | 'This is an API-Management service template' | +## | templateSpecsDoPublish | false | 'false' | Flag to indicate whether or not to publish to template specs | 'true' | +## | bicepRegistryName | false | '' | Required to publish to private bicep registry. Name of the container registry to publish to | 'myacr' | +## | bicepRegistryRgName | false | '' | Required to publish to private bicep registry. Name of the container registry resource group | 'artifacts-rg' | +## | bicepRegistryRgLocation | false | '' | Required to publish to private bicep registry. Location of the container registry resource group | 'WestEurope' | +## | bicepRegistryDoPublish | false | 'false' | Flag to indicate whether or not to publish to the private bicep registry | 'true' | +## | publishLatest | false | 'true' | Flag to indicate whether or not to publish a "latest" version | 'true' | +## | useApiSpecsAlignedName | false | 'false' | Flag to indicate whether or not to publish module using their REST API, or their folder path name | 'true' | +## |==============================================================================================================================================================================================================| ## ##---------------------------------------------## name: 'Publishing' @@ -69,6 +70,10 @@ inputs: description: 'Flag to indicate whether or not to publish a "latest" version' default: 'true' required: false + useApiSpecsAlignedName: + description: 'Flag to indicate whether or not to publish module using their REST API, or their folder path name' + default: 'false' + required: false runs: using: 'composite' @@ -105,7 +110,7 @@ runs: ################################ $functionInput = @{ TemplateFilePath = Join-Path $env:GITHUB_WORKSPACE "${{ inputs.templateFilePath }}" - PublishLatest = [bool] "${{ inputs.publishLatest }}" + PublishLatest = [System.Convert]::ToBoolean("${{ inputs.publishLatest }}") } Write-Verbose "Invoke task with" -Verbose @@ -122,7 +127,7 @@ runs: $missingInputObject = @{ TemplateFilePath = Join-Path $env:GITHUB_WORKSPACE "${{ inputs.templateFilePath }}" TemplateSpecsRGName = '${{ inputs.templateSpecsRgName }}' - PublishLatest = [bool] "${{ inputs.publishLatest }}" + PublishLatest = [System.Convert]::ToBoolean("${{ inputs.publishLatest }}") } Write-Verbose "Invoke Get-ModulesMissingFromTemplateSpecsRG with" -Verbose @@ -136,6 +141,12 @@ runs: } } + # Filter modules to publish 'prerelease' only if branch is not main/master + if ('$env:GITHUB_REF_NAME' -ne 'refs/heads/main' -or '$env:GITHUB_REF_NAME' -ne 'refs/heads/master') { + Write-Verbose "Filtering modules to only publish [prerelease] as current branch [$env:GITHUB_REF_NAME] is not [main/master]." -Verbose + $modulesToPublish = $modulesToPublish | Where-Object -Property version -like '*-prerelease' + } + ################# ## Publish ## ################# @@ -149,6 +160,7 @@ runs: TemplateSpecsRgLocation = '${{ inputs.templateSpecsRgLocation }}' TemplateSpecsDescription = '${{ inputs.templateSpecsDescription }}' ModuleVersion = $moduleToPublish.Version + UseApiSpecsAlignedName = [System.Convert]::ToBoolean('${{ inputs.useApiSpecsAlignedName }}') } Write-Verbose "Invoke task with" -Verbose @@ -185,7 +197,7 @@ runs: ################################ $functionInput = @{ TemplateFilePath = Join-Path $env:GITHUB_WORKSPACE "${{ inputs.templateFilePath }}" - PublishLatest = [bool] "${{ inputs.publishLatest }}" + PublishLatest = [System.Convert]::ToBoolean("${{ inputs.publishLatest }}") } Write-Verbose "Invoke task with" -Verbose @@ -202,7 +214,7 @@ runs: TemplateFilePath = Join-Path $env:GITHUB_WORKSPACE "${{ inputs.templateFilePath }}" BicepRegistryName = '${{ inputs.bicepRegistryName }}' BicepRegistryRgName = '${{ inputs.bicepRegistryRgName }}' - PublishLatest = [bool] "${{ inputs.publishLatest }}" + PublishLatest = [System.Convert]::ToBoolean("${{ inputs.publishLatest }}") } Write-Verbose "Invoke Get-ModulesMissingFromPrivateBicepRegistry with" -Verbose @@ -216,6 +228,12 @@ runs: } } + # Filter modules to publish 'prerelease' only if branch is not main/master + if ('$env:GITHUB_REF_NAME' -ne 'refs/heads/main' -or '$env:GITHUB_REF_NAME' -ne 'refs/heads/master') { + Write-Verbose "Filtering modules to only publish [prerelease] as current branch [$env:GITHUB_REF_NAME] is not [main/master]." -Verbose + $modulesToPublish = $modulesToPublish | Where-Object -Property version -like '*-prerelease' + } + ################# ## Publish ## ################# @@ -229,6 +247,7 @@ runs: BicepRegistryRgName = '${{ inputs.bicepRegistryRgName }}' BicepRegistryRgLocation = '${{ inputs.bicepRegistryRgLocation }}' ModuleVersion = $moduleToPublish.Version + UseApiSpecsAlignedName = [System.Convert]::ToBoolean('${{ inputs.useApiSpecsAlignedName }}') } Write-Verbose "Invoke task with" -Verbose diff --git a/.github/workflows/template.module.yml b/.github/workflows/template.module.yml index 180935b1b8..d1dd1d4c4f 100644 --- a/.github/workflows/template.module.yml +++ b/.github/workflows/template.module.yml @@ -140,3 +140,4 @@ jobs: bicepRegistryRgLocation: '${{ env.bicepRegistryRgLocation }}' bicepRegistryDoPublish: '${{ env.bicepRegistryDoPublish }}' publishLatest: '${{ env.publishLatest }}' + useApiSpecsAlignedName: '${{ env.useApiSpecsAlignedName }}' diff --git a/README.md b/README.md index 74f12be566..ba6859ce8b 100644 --- a/README.md +++ b/README.md @@ -29,137 +29,139 @@ For more details, please refer to the issue #3131. | Provider namespace | Resource Type | Name | Deploy | | - | - | - | - | -| `Microsoft.AAD` | [domainServices](https://github.com/Azure/ResourceModules/tree/main/modules/aad/domain-services) | [Azure Active Directory Domain Services](https://github.com/Azure/ResourceModules/tree/main/modules/aad/domain-services) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.AnalysisServices` | [servers](https://github.com/Azure/ResourceModules/tree/main/modules/analysis-services/servers) | [Analysis Services Servers](https://github.com/Azure/ResourceModules/tree/main/modules/analysis-services/servers) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.AAD` | [domainServices](https://github.com/Azure/ResourceModules/tree/main/modules/aad/domain-service) | [Azure Active Directory Domain Services](https://github.com/Azure/ResourceModules/tree/main/modules/aad/domain-service) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.AnalysisServices` | [servers](https://github.com/Azure/ResourceModules/tree/main/modules/analysis-services/server) | [Analysis Services Servers](https://github.com/Azure/ResourceModules/tree/main/modules/analysis-services/server) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | | `Microsoft.ApiManagement` | [service](https://github.com/Azure/ResourceModules/tree/main/modules/api-management/service) | [API Management Services](https://github.com/Azure/ResourceModules/tree/main/modules/api-management/service) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.App` | [containerApps](https://github.com/Azure/ResourceModules/tree/main/modules/app/container-apps) | [Container Apps](https://github.com/Azure/ResourceModules/tree/main/modules/app/container-apps) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [managedEnvironments](https://github.com/Azure/ResourceModules/tree/main/modules/app/managed-environments) | [App ManagedEnvironments](https://github.com/Azure/ResourceModules/tree/main/modules/app/managed-environments) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.AppConfiguration` | [configurationStores](https://github.com/Azure/ResourceModules/tree/main/modules/app-configuration/configuration-stores) | [App Configuration Stores](https://github.com/Azure/ResourceModules/tree/main/modules/app-configuration/configuration-stores) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Authorization` | [locks](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/locks) | [Authorization Locks (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/locks) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [policyAssignments](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-assignments) | [Policy Assignments (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-assignments) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [policyDefinitions](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-definitions) | [Policy Definitions (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-definitions) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [policyExemptions](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-exemptions) | [Policy Exemptions (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-exemptions) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [policySetDefinitions](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-set-definitions) | [Policy Set Definitions (Initiatives) (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-set-definitions) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [roleAssignmentApprovals](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/role-assignments) | [Role Assignments (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/role-assignments) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [roleDefinitions](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/role-definitions) | [Role Definitions (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/role-definitions) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Automation` | [automationAccounts](https://github.com/Azure/ResourceModules/tree/main/modules/automation/automation-accounts) | [Automation Accounts](https://github.com/Azure/ResourceModules/tree/main/modules/automation/automation-accounts) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Batch` | [batchAccounts](https://github.com/Azure/ResourceModules/tree/main/modules/batch/batch-accounts) | [Batch Accounts](https://github.com/Azure/ResourceModules/tree/main/modules/batch/batch-accounts) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.App` | [containerApps](https://github.com/Azure/ResourceModules/tree/main/modules/app/container-app) | [Container Apps](https://github.com/Azure/ResourceModules/tree/main/modules/app/container-app) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [managedEnvironments](https://github.com/Azure/ResourceModules/tree/main/modules/app/managed-environment) | [App ManagedEnvironments](https://github.com/Azure/ResourceModules/tree/main/modules/app/managed-environment) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.AppConfiguration` | [configurationStores](https://github.com/Azure/ResourceModules/tree/main/modules/app-configuration/configuration-store) | [App Configuration Stores](https://github.com/Azure/ResourceModules/tree/main/modules/app-configuration/configuration-store) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Authorization` | [locks](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/lock) | [Authorization Locks (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/lock) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [policyAssignments](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-assignment) | [Policy Assignments (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-assignment) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [policyDefinitions](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-definition) | [Policy Definitions (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-definition) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [policyExemptions](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-exemption) | [Policy Exemptions (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-exemption) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [policySetDefinitions](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-set-definition) | [Policy Set Definitions (Initiatives) (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/policy-set-definition) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [roleAssignments](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/role-assignment) | [Role Assignments (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/role-assignment) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [roleDefinitions](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/role-definition) | [Role Definitions (All scopes)](https://github.com/Azure/ResourceModules/tree/main/modules/authorization/role-definition) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Automation` | [automationAccounts](https://github.com/Azure/ResourceModules/tree/main/modules/automation/automation-account) | [Automation Accounts](https://github.com/Azure/ResourceModules/tree/main/modules/automation/automation-account) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Batch` | [batchAccounts](https://github.com/Azure/ResourceModules/tree/main/modules/batch/batch-account) | [Batch Accounts](https://github.com/Azure/ResourceModules/tree/main/modules/batch/batch-account) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | | `Microsoft.Cache` | [Redis](https://github.com/Azure/ResourceModules/tree/main/modules/cache/redis) | [Redis Cache](https://github.com/Azure/ResourceModules/tree/main/modules/cache/redis) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Cdn` | [profiles](https://github.com/Azure/ResourceModules/tree/main/modules/cdn/profiles) | [CDN Profiles](https://github.com/Azure/ResourceModules/tree/main/modules/cdn/profiles) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.CognitiveServices` | [accounts](https://github.com/Azure/ResourceModules/tree/main/modules/cognitive-services/accounts) | [Cognitive Services](https://github.com/Azure/ResourceModules/tree/main/modules/cognitive-services/accounts) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Compute` | [availabilitySets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/availability-sets) | [Availability Sets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/availability-sets) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [diskEncryptionSets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/disk-encryption-sets) | [Disk Encryption Sets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/disk-encryption-sets) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [diskAccesses](https://github.com/Azure/ResourceModules/tree/main/modules/compute/disks) | [Compute Disks](https://github.com/Azure/ResourceModules/tree/main/modules/compute/disks) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [galleries](https://github.com/Azure/ResourceModules/tree/main/modules/compute/galleries) | [Azure Compute Galleries](https://github.com/Azure/ResourceModules/tree/main/modules/compute/galleries) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [images](https://github.com/Azure/ResourceModules/tree/main/modules/compute/images) | [Images](https://github.com/Azure/ResourceModules/tree/main/modules/compute/images) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [proximityPlacementGroups](https://github.com/Azure/ResourceModules/tree/main/modules/compute/proximity-placement-groups) | [Proximity Placement Groups](https://github.com/Azure/ResourceModules/tree/main/modules/compute/proximity-placement-groups) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [sshPublicKeys](https://github.com/Azure/ResourceModules/tree/main/modules/compute/ssh-public-keys) | [Public SSH Keys](https://github.com/Azure/ResourceModules/tree/main/modules/compute/ssh-public-keys) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [virtualMachineScaleSets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/virtual-machine-scale-sets) | [Virtual Machine Scale Sets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/virtual-machine-scale-sets) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [virtualMachines](https://github.com/Azure/ResourceModules/tree/main/modules/compute/virtual-machines) | [Virtual Machines](https://github.com/Azure/ResourceModules/tree/main/modules/compute/virtual-machines) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Consumption` | [budgets](https://github.com/Azure/ResourceModules/tree/main/modules/consumption/budgets) | [Consumption Budgets](https://github.com/Azure/ResourceModules/tree/main/modules/consumption/budgets) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.ContainerInstance` | [containerGroups](https://github.com/Azure/ResourceModules/tree/main/modules/container-instance/container-groups) | [Container Instances Container Groups](https://github.com/Azure/ResourceModules/tree/main/modules/container-instance/container-groups) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.ContainerRegistry` | [registries](https://github.com/Azure/ResourceModules/tree/main/modules/container-registry/registries) | [Azure Container Registries (ACR)](https://github.com/Azure/ResourceModules/tree/main/modules/container-registry/registries) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.ContainerService` | [managedClusters](https://github.com/Azure/ResourceModules/tree/main/modules/container-service/managed-clusters) | [Azure Kubernetes Service (AKS) Managed Clusters](https://github.com/Azure/ResourceModules/tree/main/modules/container-service/managed-clusters) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.DataFactory` | [factories](https://github.com/Azure/ResourceModules/tree/main/modules/data-factory/factories) | [Data Factories](https://github.com/Azure/ResourceModules/tree/main/modules/data-factory/factories) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.DataProtection` | [backupVaults](https://github.com/Azure/ResourceModules/tree/main/modules/data-protection/backup-vaults) | [Data Protection Backup Vaults](https://github.com/Azure/ResourceModules/tree/main/modules/data-protection/backup-vaults) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Databricks` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/databricks/workspaces) | [Azure Databricks Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/databricks/workspaces) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.DBforMySQL` | [flexibleServers](https://github.com/Azure/ResourceModules/tree/main/modules/db-for-my-sql/flexible-servers) | [DBforMySQL Flexible Servers](https://github.com/Azure/ResourceModules/tree/main/modules/db-for-my-sql/flexible-servers) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.DBforPostgreSQL` | [flexibleServers](https://github.com/Azure/ResourceModules/tree/main/modules/db-for-postgre-sql/flexible-servers) | [DBforPostgreSQL Flexible Servers](https://github.com/Azure/ResourceModules/tree/main/modules/db-for-postgre-sql/flexible-servers) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.DesktopVirtualization` | [applicationGroups](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/application-groups) | [Azure Virtual Desktop (AVD) Application Groups](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/application-groups) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [hostPools](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/host-pools) | [Azure Virtual Desktop (AVD) Host Pools](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/host-pools) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [scalingPlans](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/scaling-plans) | [Azure Virtual Desktop (AVD) Scaling Plans](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/scaling-plans) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/workspaces) | [Azure Virtual Desktop (AVD) Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/workspaces) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.DevTestLab` | [labs](https://github.com/Azure/ResourceModules/tree/main/modules/dev-test-lab/labs) | [DevTest Labs](https://github.com/Azure/ResourceModules/tree/main/modules/dev-test-lab/labs) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.DigitalTwins` | [digitalTwinsInstances](https://github.com/Azure/ResourceModules/tree/main/modules/digital-twins/digital-twins-instances) | [Digital Twins Instances](https://github.com/Azure/ResourceModules/tree/main/modules/digital-twins/digital-twins-instances) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.DocumentDB` | [databaseAccountNames](https://github.com/Azure/ResourceModules/tree/main/modules/document-db/database-accounts) | [DocumentDB Database Accounts](https://github.com/Azure/ResourceModules/tree/main/modules/document-db/database-accounts) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.EventGrid` | [domains](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/domains) | [Event Grid Domains](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/domains) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [systemTopics](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/system-topics) | [Event Grid System Topics](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/system-topics) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [topics](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/topics) | [Event Grid Topics](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/topics) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.EventHub` | [namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/event-hub/namespaces) | [Event Hub Namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/event-hub/namespaces) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.HealthBot` | [healthBots](https://github.com/Azure/ResourceModules/tree/main/modules/health-bot/health-bots) | [Azure Health Bots](https://github.com/Azure/ResourceModules/tree/main/modules/health-bot/health-bots) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.HealthcareApis` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/healthcare-apis/workspaces) | [Healthcare API Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/healthcare-apis/workspaces) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Insights` | [actionGroups](https://github.com/Azure/ResourceModules/tree/main/modules/insights/action-groups) | [Action Groups](https://github.com/Azure/ResourceModules/tree/main/modules/insights/action-groups) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [activityLogAlerts](https://github.com/Azure/ResourceModules/tree/main/modules/insights/activity-log-alerts) | [Activity Log Alerts](https://github.com/Azure/ResourceModules/tree/main/modules/insights/activity-log-alerts) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [components](https://github.com/Azure/ResourceModules/tree/main/modules/insights/components) | [Application Insights](https://github.com/Azure/ResourceModules/tree/main/modules/insights/components) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [dataCollectionEndpoints](https://github.com/Azure/ResourceModules/tree/main/modules/insights/data-collection-endpoints) | [Data Collection Endpoints](https://github.com/Azure/ResourceModules/tree/main/modules/insights/data-collection-endpoints) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [dataCollectionRuleAssociations](https://github.com/Azure/ResourceModules/tree/main/modules/insights/data-collection-rules) | [Data Collection Rules](https://github.com/Azure/ResourceModules/tree/main/modules/insights/data-collection-rules) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [diagnosticSettings](https://github.com/Azure/ResourceModules/tree/main/modules/insights/diagnostic-settings) | [Diagnostic Settings (Activity Logs) for Azure Subscriptions](https://github.com/Azure/ResourceModules/tree/main/modules/insights/diagnostic-settings) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [metricAlerts](https://github.com/Azure/ResourceModules/tree/main/modules/insights/metric-alerts) | [Metric Alerts](https://github.com/Azure/ResourceModules/tree/main/modules/insights/metric-alerts) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [privateLinkScopeOperationStatuses](https://github.com/Azure/ResourceModules/tree/main/modules/insights/private-link-scopes) | [Azure Monitor Private Link Scopes](https://github.com/Azure/ResourceModules/tree/main/modules/insights/private-link-scopes) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [scheduledQueryRules](https://github.com/Azure/ResourceModules/tree/main/modules/insights/scheduled-query-rules) | [Scheduled Query Rules](https://github.com/Azure/ResourceModules/tree/main/modules/insights/scheduled-query-rules) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [webtests](https://github.com/Azure/ResourceModules/tree/main/modules/insights/webtests) | [Web Tests](https://github.com/Azure/ResourceModules/tree/main/modules/insights/webtests) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.KeyVault` | [vaults](https://github.com/Azure/ResourceModules/tree/main/modules/key-vault/vaults) | [Key Vaults](https://github.com/Azure/ResourceModules/tree/main/modules/key-vault/vaults) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.KubernetesConfiguration` | [extensions](https://github.com/Azure/ResourceModules/tree/main/modules/kubernetes-configuration/extensions) | [Kubernetes Configuration Extensions](https://github.com/Azure/ResourceModules/tree/main/modules/kubernetes-configuration/extensions) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [fluxConfigurations](https://github.com/Azure/ResourceModules/tree/main/modules/kubernetes-configuration/flux-configurations) | [Kubernetes Configuration Flux Configurations](https://github.com/Azure/ResourceModules/tree/main/modules/kubernetes-configuration/flux-configurations) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Logic` | [workflows](https://github.com/Azure/ResourceModules/tree/main/modules/logic/workflows) | [Logic Apps (Workflows)](https://github.com/Azure/ResourceModules/tree/main/modules/logic/workflows) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.MachineLearningServices` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/machine-learning-services/workspaces) | [Machine Learning Services Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/machine-learning-services/workspaces) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Maintenance` | [maintenanceConfigurations](https://github.com/Azure/ResourceModules/tree/main/modules/maintenance/maintenance-configurations) | [Maintenance Configurations](https://github.com/Azure/ResourceModules/tree/main/modules/maintenance/maintenance-configurations) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.ManagedIdentity` | [userAssignedIdentities](https://github.com/Azure/ResourceModules/tree/main/modules/managed-identity/user-assigned-identities) | [User Assigned Identities](https://github.com/Azure/ResourceModules/tree/main/modules/managed-identity/user-assigned-identities) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.ManagedServices` | [registrationDefinitions](https://github.com/Azure/ResourceModules/tree/main/modules/managed-services/registration-definitions) | [Registration Definitions](https://github.com/Azure/ResourceModules/tree/main/modules/managed-services/registration-definitions) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Management` | [managementGroups](https://github.com/Azure/ResourceModules/tree/main/modules/management/management-groups) | [Management Groups](https://github.com/Azure/ResourceModules/tree/main/modules/management/management-groups) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.NetApp` | [netAppAccounts](https://github.com/Azure/ResourceModules/tree/main/modules/net-app/net-app-accounts) | [Azure NetApp Files](https://github.com/Azure/ResourceModules/tree/main/modules/net-app/net-app-accounts) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Network` | [ApplicationGatewayWebApplicationFirewallPolicies](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-gateway-web-application-firewall-policies) | [Application Gateway Web Application Firewall (WAF) Policies](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-gateway-web-application-firewall-policies) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [applicationGatewayAvailableRequestHeaders](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-gateways) | [Network Application Gateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-gateways) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [applicationSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-security-groups) | [Application Security Groups (ASG)](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-security-groups) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [azureFirewallFqdnTags](https://github.com/Azure/ResourceModules/tree/main/modules/network/azure-firewalls) | [Azure Firewalls](https://github.com/Azure/ResourceModules/tree/main/modules/network/azure-firewalls) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [bastionHosts](https://github.com/Azure/ResourceModules/tree/main/modules/network/bastion-hosts) | [Bastion Hosts](https://github.com/Azure/ResourceModules/tree/main/modules/network/bastion-hosts) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [connections](https://github.com/Azure/ResourceModules/tree/main/modules/network/connections) | [Virtual Network Gateway Connections](https://github.com/Azure/ResourceModules/tree/main/modules/network/connections) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [ddosProtectionPlans](https://github.com/Azure/ResourceModules/tree/main/modules/network/ddos-protection-plans) | [DDoS Protection Plans](https://github.com/Azure/ResourceModules/tree/main/modules/network/ddos-protection-plans) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [dnsForwardingRulesets](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-forwarding-rulesets) | [Dns Forwarding Rulesets](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-forwarding-rulesets) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [dnsResolvers](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-resolvers) | [DNS Resolvers](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-resolvers) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [dnsZones](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-zones) | [Public DNS Zones](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-zones) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [expressRouteCircuits](https://github.com/Azure/ResourceModules/tree/main/modules/network/express-route-circuits) | [ExpressRoute Circuits](https://github.com/Azure/ResourceModules/tree/main/modules/network/express-route-circuits) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Cdn` | [profiles](https://github.com/Azure/ResourceModules/tree/main/modules/cdn/profile) | [CDN Profiles](https://github.com/Azure/ResourceModules/tree/main/modules/cdn/profile) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.CognitiveServices` | [accounts](https://github.com/Azure/ResourceModules/tree/main/modules/cognitive-services/account) | [Cognitive Services](https://github.com/Azure/ResourceModules/tree/main/modules/cognitive-services/account) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Compute` | [availabilitySets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/availability-set) | [Availability Sets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/availability-set) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [disks](https://github.com/Azure/ResourceModules/tree/main/modules/compute/disk) | [Compute Disks](https://github.com/Azure/ResourceModules/tree/main/modules/compute/disk) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [diskEncryptionSets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/disk-encryption-set) | [Disk Encryption Sets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/disk-encryption-set) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [galleries](https://github.com/Azure/ResourceModules/tree/main/modules/compute/gallery) | [Azure Compute Galleries](https://github.com/Azure/ResourceModules/tree/main/modules/compute/gallery) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [images](https://github.com/Azure/ResourceModules/tree/main/modules/compute/image) | [Images](https://github.com/Azure/ResourceModules/tree/main/modules/compute/image) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [proximityPlacementGroups](https://github.com/Azure/ResourceModules/tree/main/modules/compute/proximity-placement-group) | [Proximity Placement Groups](https://github.com/Azure/ResourceModules/tree/main/modules/compute/proximity-placement-group) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [sshPublicKeys](https://github.com/Azure/ResourceModules/tree/main/modules/compute/ssh-public-key) | [Public SSH Keys](https://github.com/Azure/ResourceModules/tree/main/modules/compute/ssh-public-key) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [virtualMachines](https://github.com/Azure/ResourceModules/tree/main/modules/compute/virtual-machine) | [Virtual Machines](https://github.com/Azure/ResourceModules/tree/main/modules/compute/virtual-machine) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [virtualMachineScaleSets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/virtual-machine-scale-set) | [Virtual Machine Scale Sets](https://github.com/Azure/ResourceModules/tree/main/modules/compute/virtual-machine-scale-set) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Consumption` | [budgets](https://github.com/Azure/ResourceModules/tree/main/modules/consumption/budget) | [Consumption Budgets](https://github.com/Azure/ResourceModules/tree/main/modules/consumption/budget) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.ContainerInstance` | [containerGroups](https://github.com/Azure/ResourceModules/tree/main/modules/container-instance/container-group) | [Container Instances Container Groups](https://github.com/Azure/ResourceModules/tree/main/modules/container-instance/container-group) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.ContainerRegistry` | [registries](https://github.com/Azure/ResourceModules/tree/main/modules/container-registry/registry) | [Azure Container Registries (ACR)](https://github.com/Azure/ResourceModules/tree/main/modules/container-registry/registry) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.ContainerService` | [managedClusters](https://github.com/Azure/ResourceModules/tree/main/modules/container-service/managed-cluster) | [Azure Kubernetes Service (AKS) Managed Clusters](https://github.com/Azure/ResourceModules/tree/main/modules/container-service/managed-cluster) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.DataFactory` | [factories](https://github.com/Azure/ResourceModules/tree/main/modules/data-factory/factory) | [Data Factories](https://github.com/Azure/ResourceModules/tree/main/modules/data-factory/factory) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.DataProtection` | [backupVaults](https://github.com/Azure/ResourceModules/tree/main/modules/data-protection/backup-vault) | [Data Protection Backup Vaults](https://github.com/Azure/ResourceModules/tree/main/modules/data-protection/backup-vault) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Databricks` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/databricks/workspace) | [Azure Databricks Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/databricks/workspace) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.DBforMySQL` | [flexibleServers](https://github.com/Azure/ResourceModules/tree/main/modules/db-for-my-sql/flexible-server) | [DBforMySQL Flexible Servers](https://github.com/Azure/ResourceModules/tree/main/modules/db-for-my-sql/flexible-server) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.DBforPostgreSQL` | [flexibleServers](https://github.com/Azure/ResourceModules/tree/main/modules/db-for-postgre-sql/flexible-server) | [DBforPostgreSQL Flexible Servers](https://github.com/Azure/ResourceModules/tree/main/modules/db-for-postgre-sql/flexible-server) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.DesktopVirtualization` | [applicationGroups](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/application-group) | [Azure Virtual Desktop (AVD) Application Groups](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/application-group) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [hostPools](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/host-pool) | [Azure Virtual Desktop (AVD) Host Pools](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/host-pool) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [scalingPlans](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/scaling-plan) | [Azure Virtual Desktop (AVD) Scaling Plans](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/scaling-plan) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/workspace) | [Azure Virtual Desktop (AVD) Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/desktop-virtualization/workspace) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.DevTestLab` | [labs](https://github.com/Azure/ResourceModules/tree/main/modules/dev-test-lab/lab) | [DevTest Labs](https://github.com/Azure/ResourceModules/tree/main/modules/dev-test-lab/lab) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.DigitalTwins` | [digitalTwinsInstances](https://github.com/Azure/ResourceModules/tree/main/modules/digital-twins/digital-twins-instance) | [Digital Twins Instances](https://github.com/Azure/ResourceModules/tree/main/modules/digital-twins/digital-twins-instance) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.DocumentDB` | [databaseAccounts](https://github.com/Azure/ResourceModules/tree/main/modules/document-db/database-account) | [DocumentDB Database Accounts](https://github.com/Azure/ResourceModules/tree/main/modules/document-db/database-account) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.EventGrid` | [domains](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/domain) | [Event Grid Domains](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/domain) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [systemTopics](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/system-topic) | [Event Grid System Topics](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/system-topic) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [topics](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/topic) | [Event Grid Topics](https://github.com/Azure/ResourceModules/tree/main/modules/event-grid/topic) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.EventHub` | [namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/event-hub/namespace) | [Event Hub Namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/event-hub/namespace) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.HealthBot` | [healthBots](https://github.com/Azure/ResourceModules/tree/main/modules/health-bot/health-bot) | [Azure Health Bots](https://github.com/Azure/ResourceModules/tree/main/modules/health-bot/health-bot) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.HealthcareApis` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/healthcare-apis/workspace) | [Healthcare API Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/healthcare-apis/workspace) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Insights` | [actionGroups](https://github.com/Azure/ResourceModules/tree/main/modules/insights/action-group) | [Action Groups](https://github.com/Azure/ResourceModules/tree/main/modules/insights/action-group) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [activityLogAlerts](https://github.com/Azure/ResourceModules/tree/main/modules/insights/activity-log-alert) | [Activity Log Alerts](https://github.com/Azure/ResourceModules/tree/main/modules/insights/activity-log-alert) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [components](https://github.com/Azure/ResourceModules/tree/main/modules/insights/component) | [Application Insights](https://github.com/Azure/ResourceModules/tree/main/modules/insights/component) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [dataCollectionEndpoints](https://github.com/Azure/ResourceModules/tree/main/modules/insights/data-collection-endpoint) | [Data Collection Endpoints](https://github.com/Azure/ResourceModules/tree/main/modules/insights/data-collection-endpoint) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [dataCollectionRules](https://github.com/Azure/ResourceModules/tree/main/modules/insights/data-collection-rule) | [Data Collection Rules](https://github.com/Azure/ResourceModules/tree/main/modules/insights/data-collection-rule) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [diagnosticSettings](https://github.com/Azure/ResourceModules/tree/main/modules/insights/diagnostic-setting) | [Diagnostic Settings (Activity Logs) for Azure Subscriptions](https://github.com/Azure/ResourceModules/tree/main/modules/insights/diagnostic-setting) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [metricAlerts](https://github.com/Azure/ResourceModules/tree/main/modules/insights/metric-alert) | [Metric Alerts](https://github.com/Azure/ResourceModules/tree/main/modules/insights/metric-alert) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [privateLinkScopes](https://github.com/Azure/ResourceModules/tree/main/modules/insights/private-link-scope) | [Azure Monitor Private Link Scopes](https://github.com/Azure/ResourceModules/tree/main/modules/insights/private-link-scope) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [scheduledQueryRules](https://github.com/Azure/ResourceModules/tree/main/modules/insights/scheduled-query-rule) | [Scheduled Query Rules](https://github.com/Azure/ResourceModules/tree/main/modules/insights/scheduled-query-rule) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [webtests](https://github.com/Azure/ResourceModules/tree/main/modules/insights/webtest) | [Web Tests](https://github.com/Azure/ResourceModules/tree/main/modules/insights/webtest) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.KeyVault` | [vaults](https://github.com/Azure/ResourceModules/tree/main/modules/key-vault/vault) | [Key Vaults](https://github.com/Azure/ResourceModules/tree/main/modules/key-vault/vault) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.KubernetesConfiguration` | [extensions](https://github.com/Azure/ResourceModules/tree/main/modules/kubernetes-configuration/extension) | [Kubernetes Configuration Extensions](https://github.com/Azure/ResourceModules/tree/main/modules/kubernetes-configuration/extension) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [fluxConfigurations](https://github.com/Azure/ResourceModules/tree/main/modules/kubernetes-configuration/flux-configuration) | [Kubernetes Configuration Flux Configurations](https://github.com/Azure/ResourceModules/tree/main/modules/kubernetes-configuration/flux-configuration) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Logic` | [workflows](https://github.com/Azure/ResourceModules/tree/main/modules/logic/workflow) | [Logic Apps (Workflows)](https://github.com/Azure/ResourceModules/tree/main/modules/logic/workflow) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.MachineLearningServices` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/machine-learning-services/workspace) | [Machine Learning Services Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/machine-learning-services/workspace) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Maintenance` | [maintenanceConfigurations](https://github.com/Azure/ResourceModules/tree/main/modules/maintenance/maintenance-configuration) | [Maintenance Configurations](https://github.com/Azure/ResourceModules/tree/main/modules/maintenance/maintenance-configuration) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.ManagedIdentity` | [userAssignedIdentities](https://github.com/Azure/ResourceModules/tree/main/modules/managed-identity/user-assigned-identity) | [User Assigned Identities](https://github.com/Azure/ResourceModules/tree/main/modules/managed-identity/user-assigned-identity) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.ManagedServices` | [registrationDefinitions](https://github.com/Azure/ResourceModules/tree/main/modules/managed-services/registration-definition) | [Registration Definitions](https://github.com/Azure/ResourceModules/tree/main/modules/managed-services/registration-definition) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Management` | [managementGroups](https://github.com/Azure/ResourceModules/tree/main/modules/management/management-group) | [Management Groups](https://github.com/Azure/ResourceModules/tree/main/modules/management/management-group) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.NetApp` | [netAppAccounts](https://github.com/Azure/ResourceModules/tree/main/modules/net-app/net-app-account) | [Azure NetApp Files](https://github.com/Azure/ResourceModules/tree/main/modules/net-app/net-app-account) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Network` | [applicationGateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-gateway) | [Network Application Gateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-gateway) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [ApplicationGatewayWebApplicationFirewallPolicies](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-gateway-web-application-firewall-policy) | [Application Gateway Web Application Firewall (WAF) Policies](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-gateway-web-application-firewall-policy) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [applicationSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-security-group) | [Application Security Groups (ASG)](https://github.com/Azure/ResourceModules/tree/main/modules/network/application-security-group) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [azureFirewalls](https://github.com/Azure/ResourceModules/tree/main/modules/network/azure-firewall) | [Azure Firewalls](https://github.com/Azure/ResourceModules/tree/main/modules/network/azure-firewall) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [bastionHosts](https://github.com/Azure/ResourceModules/tree/main/modules/network/bastion-host) | [Bastion Hosts](https://github.com/Azure/ResourceModules/tree/main/modules/network/bastion-host) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [connections](https://github.com/Azure/ResourceModules/tree/main/modules/network/connection) | [Virtual Network Gateway Connections](https://github.com/Azure/ResourceModules/tree/main/modules/network/connection) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [ddosProtectionPlans](https://github.com/Azure/ResourceModules/tree/main/modules/network/ddos-protection-plan) | [DDoS Protection Plans](https://github.com/Azure/ResourceModules/tree/main/modules/network/ddos-protection-plan) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [dnsForwardingRulesets](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-forwarding-ruleset) | [Dns Forwarding Rulesets](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-forwarding-ruleset) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [dnsResolvers](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-resolver) | [DNS Resolvers](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-resolver) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [dnsZones](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-zone) | [Public DNS Zones](https://github.com/Azure/ResourceModules/tree/main/modules/network/dns-zone) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [expressRouteCircuits](https://github.com/Azure/ResourceModules/tree/main/modules/network/express-route-circuit) | [ExpressRoute Circuits](https://github.com/Azure/ResourceModules/tree/main/modules/network/express-route-circuit) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | | | [expressRouteGateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/express-route-gateway) | [Express Route Gateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/express-route-gateway) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [firewallPolicies](https://github.com/Azure/ResourceModules/tree/main/modules/network/firewall-policies) | [Firewall Policies](https://github.com/Azure/ResourceModules/tree/main/modules/network/firewall-policies) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [frontdoorOperationResults](https://github.com/Azure/ResourceModules/tree/main/modules/network/front-doors) | [Azure Front Doors](https://github.com/Azure/ResourceModules/tree/main/modules/network/front-doors) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [ipGroups](https://github.com/Azure/ResourceModules/tree/main/modules/network/ip-groups) | [IP Groups](https://github.com/Azure/ResourceModules/tree/main/modules/network/ip-groups) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [loadBalancers](https://github.com/Azure/ResourceModules/tree/main/modules/network/load-balancers) | [Load Balancers](https://github.com/Azure/ResourceModules/tree/main/modules/network/load-balancers) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [localNetworkGateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/local-network-gateways) | [Local Network Gateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/local-network-gateways) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [natGateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/nat-gateways) | [NAT Gateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/nat-gateways) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [networkInterfaces](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-interfaces) | [Network Interface](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-interfaces) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [networkManagerConnections](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-managers) | [Network Managers](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-managers) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [networkSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-security-groups) | [Network Security Groups](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-security-groups) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [networkWatchers](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-watchers) | [Network Watchers](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-watchers) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [privateDnsZones](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-dns-zones) | [Private DNS Zones](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-dns-zones) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [privateEndpointRedirectMaps](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-endpoints) | [Private Endpoints](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-endpoints) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [privateLinkServices](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-link-services) | [Private Link Services](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-link-services) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [publicIPAddresses](https://github.com/Azure/ResourceModules/tree/main/modules/network/public-ip-addresses) | [Public IP Addresses](https://github.com/Azure/ResourceModules/tree/main/modules/network/public-ip-addresses) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [publicIPPrefixes](https://github.com/Azure/ResourceModules/tree/main/modules/network/public-ip-prefixes) | [Public IP Prefixes](https://github.com/Azure/ResourceModules/tree/main/modules/network/public-ip-prefixes) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [routeTables](https://github.com/Azure/ResourceModules/tree/main/modules/network/route-tables) | [Route Tables](https://github.com/Azure/ResourceModules/tree/main/modules/network/route-tables) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [serviceEndpointPolicies](https://github.com/Azure/ResourceModules/tree/main/modules/network/service-endpoint-policies) | [Service Endpoint Policies](https://github.com/Azure/ResourceModules/tree/main/modules/network/service-endpoint-policies) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [trafficmanagerprofiles](https://github.com/Azure/ResourceModules/tree/main/modules/network/trafficmanagerprofiles) | [Traffic Manager Profiles](https://github.com/Azure/ResourceModules/tree/main/modules/network/trafficmanagerprofiles) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [virtualHubs](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-hubs) | [Virtual Hubs](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-hubs) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [virtualNetworkGateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-network-gateways) | [Virtual Network Gateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-network-gateways) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [virtualNetworkGateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-networks) | [Virtual Networks](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-networks) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [virtualWans](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-wans) | [Virtual WANs](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-wans) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [vpnGateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/vpn-gateways) | [VPN Gateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/vpn-gateways) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [vpnSites](https://github.com/Azure/ResourceModules/tree/main/modules/network/vpn-sites) | [VPN Sites](https://github.com/Azure/ResourceModules/tree/main/modules/network/vpn-sites) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.OperationalInsights` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/operational-insights/workspaces) | [Log Analytics Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/operational-insights/workspaces) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.OperationsManagement` | [solutions](https://github.com/Azure/ResourceModules/tree/main/modules/operations-management/solutions) | [Operations Management Solutions](https://github.com/Azure/ResourceModules/tree/main/modules/operations-management/solutions) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.PolicyInsights` | [remediations](https://github.com/Azure/ResourceModules/tree/main/modules/policy-insights/remediations) | [Policy Insights Remediations](https://github.com/Azure/ResourceModules/tree/main/modules/policy-insights/remediations) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.PowerBIDedicated` | [capacities](https://github.com/Azure/ResourceModules/tree/main/modules/power-bi-dedicated/capacities) | [Power BI Dedicated Capacities](https://github.com/Azure/ResourceModules/tree/main/modules/power-bi-dedicated/capacities) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Purview` | [accounts](https://github.com/Azure/ResourceModules/tree/main/modules/purview/accounts) | [Purview Accounts](https://github.com/Azure/ResourceModules/tree/main/modules/purview/accounts) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.RecoveryServices` | [vaults](https://github.com/Azure/ResourceModules/tree/main/modules/recovery-services/vaults) | [Recovery Services Vaults](https://github.com/Azure/ResourceModules/tree/main/modules/recovery-services/vaults) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Relay` | [namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/relay/namespaces) | [Relay Namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/relay/namespaces) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Resources` | [deploymentScripts](https://github.com/Azure/ResourceModules/tree/main/modules/resources/deployment-scripts) | [Deployment Scripts](https://github.com/Azure/ResourceModules/tree/main/modules/resources/deployment-scripts) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [resourceGroups](https://github.com/Azure/ResourceModules/tree/main/modules/resources/resource-groups) | [Resource Groups](https://github.com/Azure/ResourceModules/tree/main/modules/resources/resource-groups) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [tagNamespaceOperationResults](https://github.com/Azure/ResourceModules/tree/main/modules/resources/tags) | [Resources Tags](https://github.com/Azure/ResourceModules/tree/main/modules/resources/tags) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Security` | [security](https://github.com/Azure/ResourceModules/tree/main/modules/security/azure-security-center) | [Azure Security Center (Defender for Cloud)](https://github.com/Azure/ResourceModules/tree/main/modules/security/azure-security-center) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.ServiceBus` | [namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/service-bus/namespaces) | [Service Bus Namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/service-bus/namespaces) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.ServiceFabric` | [clusters](https://github.com/Azure/ResourceModules/tree/main/modules/service-fabric/clusters) | [Service Fabric Clusters](https://github.com/Azure/ResourceModules/tree/main/modules/service-fabric/clusters) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [firewallPolicies](https://github.com/Azure/ResourceModules/tree/main/modules/network/firewall-policy) | [Firewall Policies](https://github.com/Azure/ResourceModules/tree/main/modules/network/firewall-policy) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [frontDoors](https://github.com/Azure/ResourceModules/tree/main/modules/network/front-door) | [Azure Front Doors](https://github.com/Azure/ResourceModules/tree/main/modules/network/front-door) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [FrontDoorWebApplicationFirewallPolicies](https://github.com/Azure/ResourceModules/tree/main/modules/network/front-door-web-application-firewall-policy) | [Front Door Web Application Firewall (WAF) Policies](https://github.com/Azure/ResourceModules/tree/main/modules/network/front-door-web-application-firewall-policy) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [ipGroups](https://github.com/Azure/ResourceModules/tree/main/modules/network/ip-group) | [IP Groups](https://github.com/Azure/ResourceModules/tree/main/modules/network/ip-group) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [loadBalancers](https://github.com/Azure/ResourceModules/tree/main/modules/network/load-balancer) | [Load Balancers](https://github.com/Azure/ResourceModules/tree/main/modules/network/load-balancer) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [localNetworkGateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/local-network-gateway) | [Local Network Gateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/local-network-gateway) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [natGateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/nat-gateway) | [NAT Gateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/nat-gateway) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [networkInterfaces](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-interface) | [Network Interface](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-interface) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [networkManagers](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-manager) | [Network Managers](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-manager) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [networkSecurityGroups](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-security-group) | [Network Security Groups](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-security-group) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [networkWatchers](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-watcher) | [Network Watchers](https://github.com/Azure/ResourceModules/tree/main/modules/network/network-watcher) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [privateDnsZones](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-dns-zone) | [Private DNS Zones](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-dns-zone) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [privateEndpoints](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-endpoint) | [Private Endpoints](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-endpoint) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [privateLinkServices](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-link-service) | [Private Link Services](https://github.com/Azure/ResourceModules/tree/main/modules/network/private-link-service) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [publicIPAddresses](https://github.com/Azure/ResourceModules/tree/main/modules/network/public-ip-address) | [Public IP Addresses](https://github.com/Azure/ResourceModules/tree/main/modules/network/public-ip-address) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [publicIPPrefixes](https://github.com/Azure/ResourceModules/tree/main/modules/network/public-ip-prefix) | [Public IP Prefixes](https://github.com/Azure/ResourceModules/tree/main/modules/network/public-ip-prefix) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [routeTables](https://github.com/Azure/ResourceModules/tree/main/modules/network/route-table) | [Route Tables](https://github.com/Azure/ResourceModules/tree/main/modules/network/route-table) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [serviceEndpointPolicies](https://github.com/Azure/ResourceModules/tree/main/modules/network/service-endpoint-policy) | [Service Endpoint Policies](https://github.com/Azure/ResourceModules/tree/main/modules/network/service-endpoint-policy) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [trafficmanagerprofiles](https://github.com/Azure/ResourceModules/tree/main/modules/network/trafficmanagerprofile) | [Traffic Manager Profiles](https://github.com/Azure/ResourceModules/tree/main/modules/network/trafficmanagerprofile) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [virtualHubs](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-hub) | [Virtual Hubs](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-hub) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [virtualNetworks](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-network) | [Virtual Networks](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-network) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [virtualNetworkGateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-network-gateway) | [Virtual Network Gateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-network-gateway) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [virtualWans](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-wan) | [Virtual WANs](https://github.com/Azure/ResourceModules/tree/main/modules/network/virtual-wan) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [vpnGateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/vpn-gateway) | [VPN Gateways](https://github.com/Azure/ResourceModules/tree/main/modules/network/vpn-gateway) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [vpnSites](https://github.com/Azure/ResourceModules/tree/main/modules/network/vpn-site) | [VPN Sites](https://github.com/Azure/ResourceModules/tree/main/modules/network/vpn-site) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.OperationalInsights` | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/operational-insights/workspace) | [Log Analytics Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/operational-insights/workspace) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.OperationsManagement` | [solutions](https://github.com/Azure/ResourceModules/tree/main/modules/operations-management/solution) | [Operations Management Solutions](https://github.com/Azure/ResourceModules/tree/main/modules/operations-management/solution) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.PolicyInsights` | [remediations](https://github.com/Azure/ResourceModules/tree/main/modules/policy-insights/remediation) | [Policy Insights Remediations](https://github.com/Azure/ResourceModules/tree/main/modules/policy-insights/remediation) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.PowerBIDedicated` | [capacities](https://github.com/Azure/ResourceModules/tree/main/modules/power-bi-dedicated/capacity) | [Power BI Dedicated Capacities](https://github.com/Azure/ResourceModules/tree/main/modules/power-bi-dedicated/capacity) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Purview` | [accounts](https://github.com/Azure/ResourceModules/tree/main/modules/purview/account) | [Purview Accounts](https://github.com/Azure/ResourceModules/tree/main/modules/purview/account) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.RecoveryServices` | [vaults](https://github.com/Azure/ResourceModules/tree/main/modules/recovery-services/vault) | [Recovery Services Vaults](https://github.com/Azure/ResourceModules/tree/main/modules/recovery-services/vault) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Relay` | [namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/relay/namespace) | [Relay Namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/relay/namespace) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.ResourceGraph` | [queries](https://github.com/Azure/ResourceModules/tree/main/modules/resource-graph/query) | [Resource Graph Queries](https://github.com/Azure/ResourceModules/tree/main/modules/resource-graph/query) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Resources` | [deploymentScripts](https://github.com/Azure/ResourceModules/tree/main/modules/resources/deployment-script) | [Deployment Scripts](https://github.com/Azure/ResourceModules/tree/main/modules/resources/deployment-script) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [resourceGroups](https://github.com/Azure/ResourceModules/tree/main/modules/resources/resource-group) | [Resource Groups](https://github.com/Azure/ResourceModules/tree/main/modules/resources/resource-group) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [tags](https://github.com/Azure/ResourceModules/tree/main/modules/resources/tags) | [Resources Tags](https://github.com/Azure/ResourceModules/tree/main/modules/resources/tags) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Security` | [azuresecuritycenter](https://github.com/Azure/ResourceModules/tree/main/modules/security/azure-security-center) | [Azure Security Center (Defender for Cloud)](https://github.com/Azure/ResourceModules/tree/main/modules/security/azure-security-center) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.ServiceBus` | [namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/service-bus/namespace) | [Service Bus Namespaces](https://github.com/Azure/ResourceModules/tree/main/modules/service-bus/namespace) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.ServiceFabric` | [clusters](https://github.com/Azure/ResourceModules/tree/main/modules/service-fabric/cluster) | [Service Fabric Clusters](https://github.com/Azure/ResourceModules/tree/main/modules/service-fabric/cluster) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | | `Microsoft.SignalRService` | [signalR](https://github.com/Azure/ResourceModules/tree/main/modules/signal-r-service/signal-r) | [SignalR Service SignalR](https://github.com/Azure/ResourceModules/tree/main/modules/signal-r-service/signal-r) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | | | [webPubSub](https://github.com/Azure/ResourceModules/tree/main/modules/signal-r-service/web-pub-sub) | [SignalR Web PubSub Services](https://github.com/Azure/ResourceModules/tree/main/modules/signal-r-service/web-pub-sub) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Sql` | [managedInstances](https://github.com/Azure/ResourceModules/tree/main/modules/sql/managed-instances) | [SQL Managed Instances](https://github.com/Azure/ResourceModules/tree/main/modules/sql/managed-instances) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [servers](https://github.com/Azure/ResourceModules/tree/main/modules/sql/servers) | [Azure SQL Servers](https://github.com/Azure/ResourceModules/tree/main/modules/sql/servers) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Storage` | [storageAccounts](https://github.com/Azure/ResourceModules/tree/main/modules/storage/storage-accounts) | [Storage Accounts](https://github.com/Azure/ResourceModules/tree/main/modules/storage/storage-accounts) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Synapse` | [privateLinkHubs](https://github.com/Azure/ResourceModules/tree/main/modules/synapse/private-link-hubs) | [Azure Synapse Analytics](https://github.com/Azure/ResourceModules/tree/main/modules/synapse/private-link-hubs) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/synapse/workspaces) | [Synapse Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/synapse/workspaces) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.VirtualMachineImages` | [imageTemplates](https://github.com/Azure/ResourceModules/tree/main/modules/virtual-machine-images/image-templates) | [Virtual Machine Image Templates](https://github.com/Azure/ResourceModules/tree/main/modules/virtual-machine-images/image-templates) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| `Microsoft.Web` | [connectionGateways](https://github.com/Azure/ResourceModules/tree/main/modules/web/connections) | [API Connections](https://github.com/Azure/ResourceModules/tree/main/modules/web/connections) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [hostingEnvironments](https://github.com/Azure/ResourceModules/tree/main/modules/web/hosting-environments) | [App Service Environments](https://github.com/Azure/ResourceModules/tree/main/modules/web/hosting-environments) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [serverfarms](https://github.com/Azure/ResourceModules/tree/main/modules/web/serverfarms) | [App Service Plans](https://github.com/Azure/ResourceModules/tree/main/modules/web/serverfarms) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [sites](https://github.com/Azure/ResourceModules/tree/main/modules/web/sites) | [Web/Function Apps](https://github.com/Azure/ResourceModules/tree/main/modules/web/sites) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | -| | [staticSites](https://github.com/Azure/ResourceModules/tree/main/modules/web/static-sites) | [Static Web Apps](https://github.com/Azure/ResourceModules/tree/main/modules/web/static-sites) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Sql` | [managedInstances](https://github.com/Azure/ResourceModules/tree/main/modules/sql/managed-instance) | [SQL Managed Instances](https://github.com/Azure/ResourceModules/tree/main/modules/sql/managed-instance) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [servers](https://github.com/Azure/ResourceModules/tree/main/modules/sql/server) | [Azure SQL Servers](https://github.com/Azure/ResourceModules/tree/main/modules/sql/server) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Storage` | [storageAccounts](https://github.com/Azure/ResourceModules/tree/main/modules/storage/storage-account) | [Storage Accounts](https://github.com/Azure/ResourceModules/tree/main/modules/storage/storage-account) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Synapse` | [privateLinkHubs](https://github.com/Azure/ResourceModules/tree/main/modules/synapse/private-link-hub) | [Azure Synapse Analytics](https://github.com/Azure/ResourceModules/tree/main/modules/synapse/private-link-hub) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/synapse/workspace) | [Synapse Workspaces](https://github.com/Azure/ResourceModules/tree/main/modules/synapse/workspace) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.VirtualMachineImages` | [imageTemplates](https://github.com/Azure/ResourceModules/tree/main/modules/virtual-machine-images/image-template) | [Virtual Machine Image Templates](https://github.com/Azure/ResourceModules/tree/main/modules/virtual-machine-images/image-template) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| `Microsoft.Web` | [connections](https://github.com/Azure/ResourceModules/tree/main/modules/web/connection) | [API Connections](https://github.com/Azure/ResourceModules/tree/main/modules/web/connection) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [hostingEnvironments](https://github.com/Azure/ResourceModules/tree/main/modules/web/hosting-environment) | [App Service Environments](https://github.com/Azure/ResourceModules/tree/main/modules/web/hosting-environment) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [serverfarms](https://github.com/Azure/ResourceModules/tree/main/modules/web/serverfarm) | [App Service Plans](https://github.com/Azure/ResourceModules/tree/main/modules/web/serverfarm) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [sites](https://github.com/Azure/ResourceModules/tree/main/modules/web/site) | [Web/Function Apps](https://github.com/Azure/ResourceModules/tree/main/modules/web/site) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | +| | [staticSites](https://github.com/Azure/ResourceModules/tree/main/modules/web/static-site) | [Static Web Apps](https://github.com/Azure/ResourceModules/tree/main/modules/web/static-site) | [![Deploy to Azure](/docs/media/deploytoazure.svg?sanitize=true)]() | ## Platform diff --git a/docs/wiki/The library - Module overview.md b/docs/wiki/The library - Module overview.md index fc0d80ecda..e88494575b 100644 --- a/docs/wiki/The library - Module overview.md +++ b/docs/wiki/The library - Module overview.md @@ -13,138 +13,140 @@ This section provides an overview of the library's feature set. | # | Module | Status | RBAC | Locks | Tags | Diag | PE | PIP | # children | # lines | | - | - | - | - | - | - | - | - | - | - | - | -| 1 | aad

domain-services | [![AAD - DomainServices](https://github.com/Azure/ResourceModules/workflows/AAD%20-%20DomainServices/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.aad.domainservices.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 238 | -| 2 | analysis-services

servers | [![AnalysisServices - Servers](https://github.com/Azure/ResourceModules/workflows/AnalysisServices%20-%20Servers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.analysisservices.servers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 157 | -| 3 | api-management

service | [![ApiManagement - Service](https://github.com/Azure/ResourceModules/workflows/ApiManagement%20-%20Service/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.apimanagement.service.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:11, L2:3] | 433 | -| 4 | app-configuration

configuration-stores | [![AppConfiguration - ConfigurationStores](https://github.com/Azure/ResourceModules/workflows/AppConfiguration%20-%20ConfigurationStores/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.appconfiguration.configurationstores.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:1] | 222 | -| 5 | app

container-apps | [![App - ContainerApps](https://github.com/Azure/ResourceModules/workflows/App%20-%20ContainerApps/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.app.containerapps.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 176 | -| 6 | app

managed-environments | [![App - Managed Environments](https://github.com/Azure/ResourceModules/workflows/App%20-%20Managed%20Environments/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.app.managedenvironments.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 135 | -| 7 | authorization

locks | [![Authorization - Locks](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20Locks/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.locks.yml) | | | | | | | [L1:2] | 62 | -| 8 | authorization

policy-assignments | [![Authorization - PolicyAssignments](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20PolicyAssignments/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policyassignments.yml) | | | | | | | [L1:3] | 143 | -| 9 | authorization

policy-definitions | [![Authorization - PolicyDefinitions](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20PolicyDefinitions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policydefinitions.yml) | | | | | | | [L1:2] | 86 | -| 10 | authorization

policy-exemptions | [![Authorization - PolicyExemptions](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20PolicyExemptions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policyexemptions.yml) | | | | | | | [L1:3] | 114 | -| 11 | authorization

policy-set-definitions | [![Authorization - PolicySetDefinitions](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20PolicySetDefinitions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policysetdefinitions.yml) | | | | | | | [L1:2] | 76 | -| 12 | authorization

role-assignments | [![Authorization - RoleAssignments](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20RoleAssignments/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.roleassignments.yml) | | | | | | | [L1:3] | 107 | -| 13 | authorization

role-definitions | [![Authorization - RoleDefinitions](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20RoleDefinitions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.roledefinitions.yml) | | | | | | | [L1:3] | 94 | -| 14 | automation

automation-accounts | [![Automation - AutomationAccounts](https://github.com/Azure/ResourceModules/workflows/Automation%20-%20AutomationAccounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.automation.automationaccounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:6] | 381 | -| 15 | batch

batch-accounts | [![Batch - BatchAccounts](https://github.com/Azure/ResourceModules/workflows/Batch%20-%20BatchAccounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.batch.batchaccounts.yml) | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | 243 | -| 16 | cache

redis | [![Cache - Redis](https://github.com/Azure/ResourceModules/workflows/Cache%20-%20Redis/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.cache.redis.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | 256 | -| 17 | cdn

profiles | [![CDN - Profiles](https://github.com/Azure/ResourceModules/workflows/CDN%20-%20Profiles/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.cdn.profiles.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:1, L2:1] | 109 | -| 18 | cognitive-services

accounts | [![CognitiveServices - Accounts](https://github.com/Azure/ResourceModules/workflows/CognitiveServices%20-%20Accounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.cognitiveservices.accounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | 298 | -| 19 | compute

availability-sets | [![Compute - AvailabilitySets](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20AvailabilitySets/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.availabilitysets.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 83 | -| 20 | compute

disk-encryption-sets | [![Compute - DiskEncryptionSets](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20DiskEncryptionSets/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.diskencryptionsets.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 129 | -| 21 | compute

disks | [![Compute - Disks](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20Disks/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.disks.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 185 | -| 22 | compute

galleries | [![Compute - Galleries](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20Galleries/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.galleries.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:2] | 126 | -| 23 | compute

images | [![Compute - Images](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20Images/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.images.yml) | :white_check_mark: | | :white_check_mark: | | | | | 110 | -| 24 | compute

proximity-placement-groups | [![Compute - ProximityPlacementGroups](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20ProximityPlacementGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.proximityplacementgroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 83 | -| 25 | compute

ssh-public-keys | [![Compute - SshPublicKeys](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20SshPublicKeys/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.sshpublickeys.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 71 | -| 26 | compute

virtual-machine-scale-sets | [![Compute - VirtualMachineScaleSets](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20VirtualMachineScaleSets/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.virtualmachinescalesets.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 565 | -| 27 | compute

virtual-machines | [![Compute - VirtualMachines](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20VirtualMachines/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.virtualmachines.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 644 | -| 28 | consumption

budgets | [![Consumption - Budgets](https://github.com/Azure/ResourceModules/workflows/Consumption%20-%20Budgets/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.consumption.budgets.yml) | | | | | | | | 92 | -| 29 | container-instance

container-groups | [![ContainerInstance - ContainerGroups](https://github.com/Azure/ResourceModules/workflows/ContainerInstance%20-%20ContainerGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerinstance.containergroups.yml) | | :white_check_mark: | :white_check_mark: | | | | | 160 | -| 30 | container-registry

registries | [![ContainerRegistry - Registries](https://github.com/Azure/ResourceModules/workflows/ContainerRegistry%20-%20Registries/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerregistry.registries.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:2] | 353 | -| 31 | container-service

managed-clusters | [![ContainerService - ManagedClusters](https://github.com/Azure/ResourceModules/workflows/ContainerService%20-%20ManagedClusters/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerservice.managedclusters.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 564 | -| 32 | data-factory

factories | [![DataFactory - Factories](https://github.com/Azure/ResourceModules/workflows/DataFactory%20-%20Factories/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.datafactory.factories.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:2, L2:1] | 270 | -| 33 | data-protection

backup-vaults | [![DataProtection - BackupVaults](https://github.com/Azure/ResourceModules/workflows/DataProtection%20-%20BackupVaults/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.dataprotection.backupvaults.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:1] | 119 | -| 34 | databricks

workspaces | [![Databricks - Workspaces](https://github.com/Azure/ResourceModules/workflows/Databricks%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.databricks.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 147 | -| 35 | db-for-my-sql

flexible-servers | [![DbForMySQL - FlexibleServers](https://github.com/Azure/ResourceModules/workflows/DbForMySQL%20-%20FlexibleServers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.dbformysql.flexibleservers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:2] | 344 | -| 36 | db-for-postgre-sql

flexible-servers | [![DbForPostgreSQL - FlexibleServers](https://github.com/Azure/ResourceModules/workflows/DbForPostgreSQL%20-%20FlexibleServers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.dbforpostgresql.flexibleservers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:3] | 318 | -| 37 | desktop-virtualization

application-groups | [![DesktopVirtualization - ApplicationGroups](https://github.com/Azure/ResourceModules/workflows/DesktopVirtualization%20-%20ApplicationGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.applicationgroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 160 | -| 38 | desktop-virtualization

host-pools | [![DesktopVirtualization - HostPools](https://github.com/Azure/ResourceModules/workflows/DesktopVirtualization%20-%20HostPools/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.hostpools.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 218 | -| 39 | desktop-virtualization

scaling-plans | [![DesktopVirtualization - Scalingplans](https://github.com/Azure/ResourceModules/workflows/DesktopVirtualization%20-%20Scalingplans/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.scalingplans.yml) | :white_check_mark: | | :white_check_mark: | :white_check_mark: | | | | 166 | -| 40 | desktop-virtualization

workspaces | [![DesktopVirtualization - Workspaces](https://github.com/Azure/ResourceModules/workflows/DesktopVirtualization%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 131 | -| 41 | dev-test-lab

labs | [![DevTestLab - Labs](https://github.com/Azure/ResourceModules/workflows/DevTestLab%20-%20Labs/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.devtestlab.labs.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:6, L2:1] | 265 | -| 42 | digital-twins

digital-twins-instances | [![DigitalTwins - DigitalTwinsInstances](https://github.com/Azure/ResourceModules/workflows/DigitalTwins%20-%20DigitalTwinsInstances/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.digitaltwins.digitaltwinsinstances.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:3] | 237 | -| 43 | document-db

database-accounts | [![DocumentDB - DatabaseAccounts](https://github.com/Azure/ResourceModules/workflows/DocumentDB%20-%20DatabaseAccounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.documentdb.databaseaccounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:3, L2:3] | 348 | -| 44 | event-grid

domains | [![EventGrid - Domains](https://github.com/Azure/ResourceModules/workflows/EventGrid%20-%20Domains/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventgrid.domains.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:1] | 190 | -| 45 | event-grid

system-topics | [![EventGrid - System Topics](https://github.com/Azure/ResourceModules/workflows/EventGrid%20-%20System%20Topics/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventgrid.systemtopics.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 175 | -| 46 | event-grid

topics | [![EventGrid - Topics](https://github.com/Azure/ResourceModules/workflows/EventGrid%20-%20Topics/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventgrid.topics.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:1] | 194 | -| 47 | event-hub

namespaces | [![EventHub - Namespaces](https://github.com/Azure/ResourceModules/workflows/EventHub%20-%20Namespaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventhub.namespaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:4, L2:2] | 344 | -| 48 | health-bot

health-bots | [![HealthBot - HealthBots](https://github.com/Azure/ResourceModules/workflows/HealthBot%20-%20HealthBots/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.healthbot.healthbots.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 84 | -| 49 | healthcare-apis

workspaces | [![HealthcareApis - Workspaces](https://github.com/Azure/ResourceModules/workflows/HealthcareApis%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.healthcareapis.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:3, L2:1] | 178 | -| 50 | insights

action-groups | [![Insights - ActionGroups](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20ActionGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.actiongroups.yml) | :white_check_mark: | | :white_check_mark: | | | | | 88 | -| 51 | insights

activity-log-alerts | [![Insights - ActivityLogAlerts](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20ActivityLogAlerts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.activitylogalerts.yml) | :white_check_mark: | | :white_check_mark: | | | | | 77 | -| 52 | insights

components | [![Insights - Components](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20Components/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.components.yml) | :white_check_mark: | | :white_check_mark: | :white_check_mark: | | | | 181 | -| 53 | insights

data-collection-endpoints | [![Insights - DataCollectionEndpoints](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20DataCollectionEndpoints/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.datacollectionendpoints.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 92 | -| 54 | insights

data-collection-rules | [![Insights - DataCollectionRules](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20DataCollectionRules/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.datacollectionrules.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 101 | -| 55 | insights

diagnostic-settings | [![Insights - DiagnosticSettings](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20DiagnosticSettings/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.diagnosticsettings.yml) | | | | :white_check_mark: | | | | 87 | -| 56 | insights

metric-alerts | [![Insights - MetricAlerts](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20MetricAlerts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.metricalerts.yml) | :white_check_mark: | | :white_check_mark: | | | | | 125 | -| 57 | insights

private-link-scopes | [![Insights - PrivateLinkScopes](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20PrivateLinkScopes/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.privatelinkscopes.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | [L1:1] | 103 | -| 58 | insights

scheduled-query-rules | [![Insights - ScheduledQueryRules](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20ScheduledQueryRules/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.scheduledqueryrules.yml) | :white_check_mark: | | :white_check_mark: | | | | | 109 | -| 59 | insights

webtests | [![Insights - Web Tests](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20Web%20Tests/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.webtests.yml) | :white_check_mark: | :white_check_mark: | | | | | | 124 | -| 60 | key-vault

vaults | [![KeyVault - Vaults](https://github.com/Azure/ResourceModules/workflows/KeyVault%20-%20Vaults/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.keyvault.vaults.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:3] | 284 | -| 61 | kubernetes-configuration

extensions | [![KubernetesConfiguration - Extensions](https://github.com/Azure/ResourceModules/workflows/KubernetesConfiguration%20-%20Extensions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.kubernetesconfiguration.extensions.yml) | | | | | | | | 88 | -| 62 | kubernetes-configuration

flux-configurations | [![KubernetesConfiguration - FluxConfigurations](https://github.com/Azure/ResourceModules/workflows/KubernetesConfiguration%20-%20FluxConfigurations/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.kubernetesconfiguration.fluxconfigurations.yml) | | | | | | | | 71 | -| 63 | logic

workflows | [![Logic - Workflows](https://github.com/Azure/ResourceModules/workflows/Logic%20-%20Workflows/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.logic.workflows.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 211 | -| 64 | machine-learning-services

workspaces | [![MachineLearningServices - Workspaces](https://github.com/Azure/ResourceModules/workflows/MachineLearningServices%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.machinelearningservices.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:1] | 288 | -| 65 | maintenance

maintenance-configurations | [![Maintenance - MaintenanceConfigurations](https://github.com/Azure/ResourceModules/workflows/Maintenance%20-%20MaintenanceConfigurations/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.maintenance.maintenanceconfigurations.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 104 | -| 66 | managed-identity

user-assigned-identities | [![ManagedIdentity - UserAssignedIdentities](https://github.com/Azure/ResourceModules/workflows/ManagedIdentity%20-%20UserAssignedIdentities/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.managedidentity.userassignedidentities.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 69 | -| 67 | managed-services

registration-definitions | [![ManagedServices - RegistrationDefinitions](https://github.com/Azure/ResourceModules/workflows/ManagedServices%20-%20RegistrationDefinitions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.managedservices.registrationdefinitions.yml) | | | | | | | | 67 | -| 68 | management

management-groups | [![Management - ManagementGroups](https://github.com/Azure/ResourceModules/workflows/Management%20-%20ManagementGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.management.managementgroups.yml) | | | | | | | | 50 | -| 69 | net-app

net-app-accounts | [![NetApp - NetAppAccounts](https://github.com/Azure/ResourceModules/workflows/NetApp%20-%20NetAppAccounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.netapp.netappaccounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:1, L2:1] | 117 | -| 70 | network

application-gateway-web-application-firewall-policies | [![Network - ApplicationGatewayWebApplicationFirewallPolicies](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ApplicationGatewayWebApplicationFirewallPolicies/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.applicationgatewaywebapplicationfirewallpolicies.yml) | | | :white_check_mark: | | | | | 47 | -| 71 | network

application-gateways | [![Network - ApplicationGateways](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ApplicationGateways/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.applicationgateways.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 338 | -| 72 | network

application-security-groups | [![Network - ApplicationSecurityGroups](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ApplicationSecurityGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.applicationsecuritygroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 66 | -| 73 | network

azure-firewalls | [![Network - AzureFirewalls](https://github.com/Azure/ResourceModules/workflows/Network%20-%20AzureFirewalls/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.azurefirewalls.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | 285 | -| 74 | network

bastion-hosts | [![Network - BastionHosts](https://github.com/Azure/ResourceModules/workflows/Network%20-%20BastionHosts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.bastionhosts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | 222 | -| 75 | network

connections | [![Network - Connections](https://github.com/Azure/ResourceModules/workflows/Network%20-%20Connections/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.connections.yml) | | :white_check_mark: | :white_check_mark: | | | | | 142 | -| 76 | network

ddos-protection-plans | [![Network - DdosProtectionPlans](https://github.com/Azure/ResourceModules/workflows/Network%20-%20DdosProtectionPlans/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.ddosprotectionplans.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 67 | -| 77 | network

dns-forwarding-rulesets | [![Network - DNS Forwarding Rulesets](https://github.com/Azure/ResourceModules/workflows/Network%20-%20DNS%20Forwarding%20Rulesets/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.dnsforwardingrulesets.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:2] | 94 | -| 78 | network

dns-resolvers | [![Network - DNS Resolvers](https://github.com/Azure/ResourceModules/workflows/Network%20-%20DNS%20Resolvers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.dnsresolvers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 103 | -| 79 | network

dns-zones | [![Network - Public DnsZones](https://github.com/Azure/ResourceModules/workflows/Network%20-%20Public%20DnsZones/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.dnszones.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:10] | 214 | -| 80 | network

express-route-circuits | [![Network - ExpressRouteCircuits](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ExpressRouteCircuits/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.expressroutecircuits.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 213 | -| 81 | network

express-route-gateway | [![Network - ExpressRouteGateway](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ExpressRouteGateway/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.expressroutegateway.yml) | | | :white_check_mark: | | | | | 59 | -| 82 | network

firewall-policies | [![Network - FirewallPolicies](https://github.com/Azure/ResourceModules/workflows/Network%20-%20FirewallPolicies/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.firewallpolicies.yml) | | | :white_check_mark: | | | | [L1:1] | 166 | -| 83 | network

front-doors | [![Network - Frontdoors](https://github.com/Azure/ResourceModules/workflows/Network%20-%20Frontdoors/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.frontdoors.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 165 | -| 84 | network

ip-groups | [![Network - IpGroups](https://github.com/Azure/ResourceModules/workflows/Network%20-%20IpGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.ipgroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 71 | -| 85 | network

load-balancers | [![Network - LoadBalancers](https://github.com/Azure/ResourceModules/workflows/Network%20-%20LoadBalancers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.loadbalancers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:2] | 242 | -| 86 | network

local-network-gateways | [![Network - LocalNetworkGateways](https://github.com/Azure/ResourceModules/workflows/Network%20-%20LocalNetworkGateways/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.localnetworkgateways.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 91 | -| 87 | network

nat-gateways | [![Network - NatGateways](https://github.com/Azure/ResourceModules/workflows/Network%20-%20NatGateways/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.natgateways.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 156 | -| 88 | network

network-interfaces | [![Network - NetworkInterfaces](https://github.com/Azure/ResourceModules/workflows/Network%20-%20NetworkInterfaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networkinterfaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 158 | -| 89 | network

network-managers | [![Network - Network Managers](https://github.com/Azure/ResourceModules/workflows/Network%20-%20Network%20Managers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networkmanagers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:4, L2:2, L3:1] | 136 | -| 90 | network

network-security-groups | [![Network - NetworkSecurityGroups](https://github.com/Azure/ResourceModules/workflows/Network%20-%20NetworkSecurityGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networksecuritygroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 169 | -| 91 | network

network-watchers | [![Network - NetworkWatchers](https://github.com/Azure/ResourceModules/workflows/Network%20-%20NetworkWatchers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networkwatchers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:2] | 100 | -| 92 | network

private-dns-zones | [![Network - PrivateDnsZones](https://github.com/Azure/ResourceModules/workflows/Network%20-%20PrivateDnsZones/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.privatednszones.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:9] | 192 | -| 93 | network

private-endpoints | [![Network - PrivateEndpoints](https://github.com/Azure/ResourceModules/workflows/Network%20-%20PrivateEndpoints/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.privateendpoints.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:1] | 111 | -| 94 | network

private-link-services | [![Network - PrivateLinkServices](https://github.com/Azure/ResourceModules/workflows/Network%20-%20PrivateLinkServices/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.privatelinkservices.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 88 | -| 95 | network

public-ip-addresses | [![Network - PublicIpAddresses](https://github.com/Azure/ResourceModules/workflows/Network%20-%20PublicIpAddresses/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.publicipaddresses.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 191 | -| 96 | network

public-ip-prefixes | [![Network - PublicIpPrefixes](https://github.com/Azure/ResourceModules/workflows/Network%20-%20PublicIpPrefixes/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.publicipprefixes.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 80 | -| 97 | network

route-tables | [![Network - RouteTables](https://github.com/Azure/ResourceModules/workflows/Network%20-%20RouteTables/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.routetables.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 73 | -| 98 | network

service-endpoint-policies | [![Network - ServiceEndpointPolicies](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ServiceEndpointPolicies/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.serviceendpointpolicies.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 76 | -| 99 | network

trafficmanagerprofiles | [![Network - TrafficManagerProfiles](https://github.com/Azure/ResourceModules/workflows/Network%20-%20TrafficManagerProfiles/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.trafficmanagerprofiles.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 179 | -| 100 | network

virtual-hubs | [![Network - VirtualHubs](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VirtualHubs/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualhubs.yml) | | :white_check_mark: | :white_check_mark: | | | | [L1:2] | 147 | -| 101 | network

virtual-network-gateways | [![Network - VirtualNetworkGateways](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VirtualNetworkGateways/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualnetworkgateways.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 410 | -| 102 | network

virtual-networks | [![Network - VirtualNetworks](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VirtualNetworks/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualnetworks.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:2] | 263 | -| 103 | network

virtual-wans | [![Network - VirtualWans](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VirtualWans/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualwans.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 83 | -| 104 | network

vpn-gateways | [![Network - VPNGateways](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VPNGateways/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.vpngateways.yml) | | :white_check_mark: | :white_check_mark: | | | | [L1:2] | 107 | -| 105 | network

vpn-sites | [![Network - VPN Sites](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VPN%20Sites/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.vpnsites.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 91 | -| 106 | operational-insights

workspaces | [![OperationalInsights - Workspaces](https://github.com/Azure/ResourceModules/workflows/OperationalInsights%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.operationalinsights.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:7] | 325 | -| 107 | operations-management

solutions | [![OperationsManagement - Solutions](https://github.com/Azure/ResourceModules/workflows/OperationsManagement%20-%20Solutions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.operationsmanagement.solutions.yml) | | | | | | | | 53 | -| 108 | policy-insights

remediations | [![PolicyInsights - Remediations](https://github.com/Azure/ResourceModules/workflows/PolicyInsights%20-%20Remediations/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.policyinsights.remediations.yml) | | | | | | | [L1:3] | 106 | -| 109 | power-bi-dedicated

capacities | [![PowerBiDedicated - Capacities](https://github.com/Azure/ResourceModules/workflows/PowerBiDedicated%20-%20Capacities/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.powerbidedicated.capacities.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 99 | -| 110 | purview

accounts | [![Purview - Accounts](https://github.com/Azure/ResourceModules/workflows/Purview%20-%20Accounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.purview.accounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 294 | -| 111 | recovery-services

vaults | [![RecoveryServices - Vaults](https://github.com/Azure/ResourceModules/workflows/RecoveryServices%20-%20Vaults/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.recoveryservices.vaults.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:7, L2:2, L3:2] | 303 | -| 112 | relay

namespaces | [![Relay - Namespaces](https://github.com/Azure/ResourceModules/workflows/Relay%20-%20Namespaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.relay.namespaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:4, L2:2] | 274 | -| 113 | resources

deployment-scripts | [![Resources - DeploymentScripts](https://github.com/Azure/ResourceModules/workflows/Resources%20-%20DeploymentScripts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.resources.deploymentscripts.yml) | | :white_check_mark: | :white_check_mark: | | | | | 124 | -| 114 | resources

resource-groups | [![Resources - ResourceGroups](https://github.com/Azure/ResourceModules/workflows/Resources%20-%20ResourceGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.resources.resourcegroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 69 | -| 115 | resources

tags | [![Resources - Tags](https://github.com/Azure/ResourceModules/workflows/Resources%20-%20Tags/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.resources.tags.yml) | | | :white_check_mark: | | | | [L1:2] | 54 | -| 116 | security

azure-security-center | [![Security - AzureSecurityCenter](https://github.com/Azure/ResourceModules/workflows/Security%20-%20AzureSecurityCenter/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.security.azuresecuritycenter.yml) | | | | | | | | 220 | -| 117 | service-bus

namespaces | [![ServiceBus - Namespaces](https://github.com/Azure/ResourceModules/workflows/ServiceBus%20-%20Namespaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.servicebus.namespaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:6, L2:2] | 343 | -| 118 | service-fabric

clusters | [![ServiceFabric - Clusters](https://github.com/Azure/ResourceModules/workflows/ServiceFabric%20-%20Clusters/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.servicefabric.clusters.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:1] | 284 | -| 119 | signal-r-service

signal-r | [![SignalRService - SignalR](https://github.com/Azure/ResourceModules/workflows/SignalRService%20-%20SignalR/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.signalrservice.signalr.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | | 189 | -| 120 | signal-r-service

web-pub-sub | [![SignalRService - WebPubSub](https://github.com/Azure/ResourceModules/workflows/SignalRService%20-%20WebPubSub/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.signalrservice.webpubsub.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | | 159 | -| 121 | sql

managed-instances | [![Sql - ManagedInstances](https://github.com/Azure/ResourceModules/workflows/Sql%20-%20ManagedInstances/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.sql.managedinstances.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:6, L2:2] | 351 | -| 122 | sql

servers | [![Sql - Servers](https://github.com/Azure/ResourceModules/workflows/Sql%20-%20Servers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.sql.servers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | [L1:8, L2:2] | 305 | -| 123 | storage

storage-accounts | [![Storage - StorageAccounts](https://github.com/Azure/ResourceModules/workflows/Storage%20-%20StorageAccounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.storage.storageaccounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:6, L2:4, L3:1] | 434 | -| 124 | synapse

private-link-hubs | [![Synapse - PrivateLinkHubs](https://github.com/Azure/ResourceModules/workflows/Synapse%20-%20PrivateLinkHubs/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.synapse.privatelinkhubs.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | | 93 | -| 125 | synapse

workspaces | [![Synapse - Workspaces](https://github.com/Azure/ResourceModules/workflows/Synapse%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.synapse.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:2] | 298 | -| 126 | virtual-machine-images

image-templates | [![VirtualMachineImages - ImageTemplates](https://github.com/Azure/ResourceModules/workflows/VirtualMachineImages%20-%20ImageTemplates/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.virtualmachineimages.imagetemplates.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 188 | -| 127 | web

connections | [![Web - Connections](https://github.com/Azure/ResourceModules/workflows/Web%20-%20Connections/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.connections.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 90 | -| 128 | web

hosting-environments | [![Web - HostingEnvironments](https://github.com/Azure/ResourceModules/workflows/Web%20-%20HostingEnvironments/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.hostingenvironments.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:2] | 239 | -| 129 | web

serverfarms | [![Web - Serverfarms](https://github.com/Azure/ResourceModules/workflows/Web%20-%20Serverfarms/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.serverfarms.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 162 | -| 130 | web

sites | [![Web - Sites](https://github.com/Azure/ResourceModules/workflows/Web%20-%20Sites/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.sites.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:5, L2:4, L3:1] | 403 | -| 131 | web

static-sites | [![Web - StaticSites](https://github.com/Azure/ResourceModules/workflows/Web%20-%20StaticSites/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.staticsites.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | [L1:3] | 196 | -| Sum | | | 105 | 104 | 114 | 55 | 26 | 2 | 220 | 23869 | +| 1 | aad

domain-service | [![AAD - DomainServices](https://github.com/Azure/ResourceModules/workflows/AAD%20-%20DomainServices/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.aad.domainservices.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 226 | +| 2 | analysis-services

server | [![AnalysisServices - Servers](https://github.com/Azure/ResourceModules/workflows/AnalysisServices%20-%20Servers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.analysisservices.servers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 141 | +| 3 | api-management

service | [![ApiManagement - Service](https://github.com/Azure/ResourceModules/workflows/ApiManagement%20-%20Service/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.apimanagement.service.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:11, L2:3] | 417 | +| 4 | app-configuration

configuration-store | [![AppConfiguration - ConfigurationStores](https://github.com/Azure/ResourceModules/workflows/AppConfiguration%20-%20ConfigurationStores/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.appconfiguration.configurationstores.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:1] | 206 | +| 5 | app

container-app | [![App - ContainerApps](https://github.com/Azure/ResourceModules/workflows/App%20-%20ContainerApps/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.app.containerapps.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 176 | +| 6 | app

managed-environment | [![App - Managed Environments](https://github.com/Azure/ResourceModules/workflows/App%20-%20Managed%20Environments/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.app.managedenvironments.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 135 | +| 7 | authorization

lock | [![Authorization - Locks](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20Locks/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.locks.yml) | | | | | | | [L1:2] | 62 | +| 8 | authorization

policy-assignment | [![Authorization - PolicyAssignments](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20PolicyAssignments/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policyassignments.yml) | | | | | | | [L1:3] | 143 | +| 9 | authorization

policy-definition | [![Authorization - PolicyDefinitions](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20PolicyDefinitions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policydefinitions.yml) | | | | | | | [L1:2] | 86 | +| 10 | authorization

policy-exemption | [![Authorization - PolicyExemptions](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20PolicyExemptions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policyexemptions.yml) | | | | | | | [L1:3] | 114 | +| 11 | authorization

policy-set-definition | [![Authorization - PolicySetDefinitions](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20PolicySetDefinitions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.policysetdefinitions.yml) | | | | | | | [L1:2] | 76 | +| 12 | authorization

role-assignment | [![Authorization - RoleAssignments](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20RoleAssignments/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.roleassignments.yml) | | | | | | | [L1:3] | 107 | +| 13 | authorization

role-definition | [![Authorization - RoleDefinitions](https://github.com/Azure/ResourceModules/workflows/Authorization%20-%20RoleDefinitions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.authorization.roledefinitions.yml) | | | | | | | [L1:3] | 94 | +| 14 | automation

automation-account | [![Automation - AutomationAccounts](https://github.com/Azure/ResourceModules/workflows/Automation%20-%20AutomationAccounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.automation.automationaccounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:6] | 365 | +| 15 | batch

batch-account | [![Batch - BatchAccounts](https://github.com/Azure/ResourceModules/workflows/Batch%20-%20BatchAccounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.batch.batchaccounts.yml) | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | 227 | +| 16 | cache

redis | [![Cache - Redis](https://github.com/Azure/ResourceModules/workflows/Cache%20-%20Redis/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.cache.redis.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | 240 | +| 17 | cdn

profile | [![CDN - Profiles](https://github.com/Azure/ResourceModules/workflows/CDN%20-%20Profiles/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.cdn.profiles.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:1, L2:1] | 111 | +| 18 | cognitive-services

account | [![CognitiveServices - Accounts](https://github.com/Azure/ResourceModules/workflows/CognitiveServices%20-%20Accounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.cognitiveservices.accounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | 282 | +| 19 | compute

availability-set | [![Compute - AvailabilitySets](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20AvailabilitySets/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.availabilitysets.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 83 | +| 20 | compute

disk | [![Compute - Disks](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20Disks/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.disks.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 185 | +| 21 | compute

disk-encryption-set | [![Compute - DiskEncryptionSets](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20DiskEncryptionSets/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.diskencryptionsets.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 129 | +| 22 | compute

gallery | [![Compute - Galleries](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20Galleries/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.galleries.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:2] | 126 | +| 23 | compute

image | [![Compute - Images](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20Images/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.images.yml) | :white_check_mark: | | :white_check_mark: | | | | | 110 | +| 24 | compute

proximity-placement-group | [![Compute - ProximityPlacementGroups](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20ProximityPlacementGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.proximityplacementgroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 83 | +| 25 | compute

ssh-public-key | [![Compute - SshPublicKeys](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20SshPublicKeys/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.sshpublickeys.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 71 | +| 26 | compute

virtual-machine | [![Compute - VirtualMachines](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20VirtualMachines/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.virtualmachines.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 639 | +| 27 | compute

virtual-machine-scale-set | [![Compute - VirtualMachineScaleSets](https://github.com/Azure/ResourceModules/workflows/Compute%20-%20VirtualMachineScaleSets/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.compute.virtualmachinescalesets.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 557 | +| 28 | consumption

budget | [![Consumption - Budgets](https://github.com/Azure/ResourceModules/workflows/Consumption%20-%20Budgets/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.consumption.budgets.yml) | | | | | | | | 92 | +| 29 | container-instance

container-group | [![ContainerInstance - ContainerGroups](https://github.com/Azure/ResourceModules/workflows/ContainerInstance%20-%20ContainerGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerinstance.containergroups.yml) | | :white_check_mark: | :white_check_mark: | | | | | 160 | +| 30 | container-registry

registry | [![ContainerRegistry - Registries](https://github.com/Azure/ResourceModules/workflows/ContainerRegistry%20-%20Registries/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerregistry.registries.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:2] | 337 | +| 31 | container-service

managed-cluster | [![ContainerService - ManagedClusters](https://github.com/Azure/ResourceModules/workflows/ContainerService%20-%20ManagedClusters/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.containerservice.managedclusters.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 548 | +| 32 | data-factory

factory | [![DataFactory - Factories](https://github.com/Azure/ResourceModules/workflows/DataFactory%20-%20Factories/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.datafactory.factories.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:2, L2:1] | 254 | +| 33 | data-protection

backup-vault | [![DataProtection - BackupVaults](https://github.com/Azure/ResourceModules/workflows/DataProtection%20-%20BackupVaults/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.dataprotection.backupvaults.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:1] | 119 | +| 34 | databricks

workspace | [![Databricks - Workspaces](https://github.com/Azure/ResourceModules/workflows/Databricks%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.databricks.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 135 | +| 35 | db-for-my-sql

flexible-server | [![DbForMySQL - FlexibleServers](https://github.com/Azure/ResourceModules/workflows/DbForMySQL%20-%20FlexibleServers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.dbformysql.flexibleservers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:2] | 328 | +| 36 | db-for-postgre-sql

flexible-server | [![DbForPostgreSQL - FlexibleServers](https://github.com/Azure/ResourceModules/workflows/DbForPostgreSQL%20-%20FlexibleServers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.dbforpostgresql.flexibleservers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:3] | 302 | +| 37 | desktop-virtualization

application-group | [![DesktopVirtualization - ApplicationGroups](https://github.com/Azure/ResourceModules/workflows/DesktopVirtualization%20-%20ApplicationGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.applicationgroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 148 | +| 38 | desktop-virtualization

host-pool | [![DesktopVirtualization - HostPools](https://github.com/Azure/ResourceModules/workflows/DesktopVirtualization%20-%20HostPools/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.hostpools.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 241 | +| 39 | desktop-virtualization

scaling-plan | [![DesktopVirtualization - Scalingplans](https://github.com/Azure/ResourceModules/workflows/DesktopVirtualization%20-%20Scalingplans/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.scalingplans.yml) | :white_check_mark: | | :white_check_mark: | :white_check_mark: | | | | 154 | +| 40 | desktop-virtualization

workspace | [![DesktopVirtualization - Workspaces](https://github.com/Azure/ResourceModules/workflows/DesktopVirtualization%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.desktopvirtualization.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 119 | +| 41 | dev-test-lab

lab | [![DevTestLab - Labs](https://github.com/Azure/ResourceModules/workflows/DevTestLab%20-%20Labs/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.devtestlab.labs.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:6, L2:1] | 265 | +| 42 | digital-twins

digital-twins-instance | [![DigitalTwins - DigitalTwinsInstances](https://github.com/Azure/ResourceModules/workflows/DigitalTwins%20-%20DigitalTwinsInstances/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.digitaltwins.digitaltwinsinstances.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:3] | 221 | +| 43 | document-db

database-account | [![DocumentDB - DatabaseAccounts](https://github.com/Azure/ResourceModules/workflows/DocumentDB%20-%20DatabaseAccounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.documentdb.databaseaccounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:3, L2:3] | 332 | +| 44 | event-grid

domain | [![EventGrid - Domains](https://github.com/Azure/ResourceModules/workflows/EventGrid%20-%20Domains/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventgrid.domains.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:1] | 174 | +| 45 | event-grid

system-topic | [![EventGrid - System Topics](https://github.com/Azure/ResourceModules/workflows/EventGrid%20-%20System%20Topics/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventgrid.systemtopics.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 159 | +| 46 | event-grid

topic | [![EventGrid - Topics](https://github.com/Azure/ResourceModules/workflows/EventGrid%20-%20Topics/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventgrid.topics.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:1] | 178 | +| 47 | event-hub

namespace | [![EventHub - Namespaces](https://github.com/Azure/ResourceModules/workflows/EventHub%20-%20Namespaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.eventhub.namespaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:4, L2:2] | 328 | +| 48 | health-bot

health-bot | [![HealthBot - HealthBots](https://github.com/Azure/ResourceModules/workflows/HealthBot%20-%20HealthBots/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.healthbot.healthbots.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 84 | +| 49 | healthcare-apis

workspace | [![HealthcareApis - Workspaces](https://github.com/Azure/ResourceModules/workflows/HealthcareApis%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.healthcareapis.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:3, L2:1] | 175 | +| 50 | insights

action-group | [![Insights - ActionGroups](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20ActionGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.actiongroups.yml) | :white_check_mark: | | :white_check_mark: | | | | | 88 | +| 51 | insights

activity-log-alert | [![Insights - ActivityLogAlerts](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20ActivityLogAlerts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.activitylogalerts.yml) | :white_check_mark: | | :white_check_mark: | | | | | 77 | +| 52 | insights

component | [![Insights - Components](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20Components/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.components.yml) | :white_check_mark: | | :white_check_mark: | :white_check_mark: | | | | 165 | +| 53 | insights

data-collection-endpoint | [![Insights - DataCollectionEndpoints](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20DataCollectionEndpoints/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.datacollectionendpoints.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 92 | +| 54 | insights

data-collection-rule | [![Insights - DataCollectionRules](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20DataCollectionRules/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.datacollectionrules.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 101 | +| 55 | insights

diagnostic-setting | [![Insights - DiagnosticSettings](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20DiagnosticSettings/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.diagnosticsettings.yml) | | | | :white_check_mark: | | | | 75 | +| 56 | insights

metric-alert | [![Insights - MetricAlerts](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20MetricAlerts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.metricalerts.yml) | :white_check_mark: | | :white_check_mark: | | | | | 125 | +| 57 | insights

private-link-scope | [![Insights - PrivateLinkScopes](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20PrivateLinkScopes/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.privatelinkscopes.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | [L1:1] | 103 | +| 58 | insights

scheduled-query-rule | [![Insights - ScheduledQueryRules](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20ScheduledQueryRules/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.scheduledqueryrules.yml) | :white_check_mark: | | :white_check_mark: | | | | | 109 | +| 59 | insights

webtest | [![Insights - Web Tests](https://github.com/Azure/ResourceModules/workflows/Insights%20-%20Web%20Tests/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.insights.webtests.yml) | :white_check_mark: | :white_check_mark: | | | | | | 124 | +| 60 | key-vault

vault | [![KeyVault - Vaults](https://github.com/Azure/ResourceModules/workflows/KeyVault%20-%20Vaults/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.keyvault.vaults.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:3] | 268 | +| 61 | kubernetes-configuration

extension | [![KubernetesConfiguration - Extensions](https://github.com/Azure/ResourceModules/workflows/KubernetesConfiguration%20-%20Extensions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.kubernetesconfiguration.extensions.yml) | | | | | | | | 88 | +| 62 | kubernetes-configuration

flux-configuration | [![KubernetesConfiguration - FluxConfigurations](https://github.com/Azure/ResourceModules/workflows/KubernetesConfiguration%20-%20FluxConfigurations/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.kubernetesconfiguration.fluxconfigurations.yml) | | | | | | | | 71 | +| 63 | logic

workflow | [![Logic - Workflows](https://github.com/Azure/ResourceModules/workflows/Logic%20-%20Workflows/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.logic.workflows.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 195 | +| 64 | machine-learning-services

workspace | [![MachineLearningServices - Workspaces](https://github.com/Azure/ResourceModules/workflows/MachineLearningServices%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.machinelearningservices.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:1] | 272 | +| 65 | maintenance

maintenance-configuration | [![Maintenance - MaintenanceConfigurations](https://github.com/Azure/ResourceModules/workflows/Maintenance%20-%20MaintenanceConfigurations/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.maintenance.maintenanceconfigurations.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 104 | +| 66 | managed-identity

user-assigned-identity | [![ManagedIdentity - UserAssignedIdentities](https://github.com/Azure/ResourceModules/workflows/ManagedIdentity%20-%20UserAssignedIdentities/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.managedidentity.userassignedidentities.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 69 | +| 67 | managed-services

registration-definition | [![ManagedServices - RegistrationDefinitions](https://github.com/Azure/ResourceModules/workflows/ManagedServices%20-%20RegistrationDefinitions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.managedservices.registrationdefinitions.yml) | | | | | | | | 67 | +| 68 | management

management-group | [![Management - ManagementGroups](https://github.com/Azure/ResourceModules/workflows/Management%20-%20ManagementGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.management.managementgroups.yml) | | | | | | | | 50 | +| 69 | net-app

net-app-account | [![NetApp - NetAppAccounts](https://github.com/Azure/ResourceModules/workflows/NetApp%20-%20NetAppAccounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.netapp.netappaccounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:1, L2:1] | 119 | +| 70 | network

application-gateway | [![Network - ApplicationGateways](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ApplicationGateways/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.applicationgateways.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 322 | +| 71 | network

application-gateway-web-application-firewall-policy | [![Network - ApplicationGatewayWebApplicationFirewallPolicies](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ApplicationGatewayWebApplicationFirewallPolicies/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.applicationgatewaywebapplicationfirewallpolicies.yml) | | | :white_check_mark: | | | | | 47 | +| 72 | network

application-security-group | [![Network - ApplicationSecurityGroups](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ApplicationSecurityGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.applicationsecuritygroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 66 | +| 73 | network

azure-firewall | [![Network - AzureFirewalls](https://github.com/Azure/ResourceModules/workflows/Network%20-%20AzureFirewalls/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.azurefirewalls.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | 330 | +| 74 | network

bastion-host | [![Network - BastionHosts](https://github.com/Azure/ResourceModules/workflows/Network%20-%20BastionHosts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.bastionhosts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | 209 | +| 75 | network

connection | [![Network - Connections](https://github.com/Azure/ResourceModules/workflows/Network%20-%20Connections/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.connections.yml) | | :white_check_mark: | :white_check_mark: | | | | | 142 | +| 76 | network

ddos-protection-plan | [![Network - DdosProtectionPlans](https://github.com/Azure/ResourceModules/workflows/Network%20-%20DdosProtectionPlans/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.ddosprotectionplans.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 67 | +| 77 | network

dns-forwarding-ruleset | [![Network - DNS Forwarding Rulesets](https://github.com/Azure/ResourceModules/workflows/Network%20-%20DNS%20Forwarding%20Rulesets/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.dnsforwardingrulesets.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:2] | 94 | +| 78 | network

dns-resolver | [![Network - DNS Resolvers](https://github.com/Azure/ResourceModules/workflows/Network%20-%20DNS%20Resolvers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.dnsresolvers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 103 | +| 79 | network

dns-zone | [![Network - Public DnsZones](https://github.com/Azure/ResourceModules/workflows/Network%20-%20Public%20DnsZones/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.dnszones.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:10] | 214 | +| 80 | network

express-route-circuit | [![Network - ExpressRouteCircuits](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ExpressRouteCircuits/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.expressroutecircuits.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 197 | +| 81 | network

express-route-gateway | [![Network - ExpressRouteGateways](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ExpressRouteGateways/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.expressroutegateways.yml) | | | :white_check_mark: | | | | | 59 | +| 82 | network

firewall-policy | [![Network - FirewallPolicies](https://github.com/Azure/ResourceModules/workflows/Network%20-%20FirewallPolicies/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.firewallpolicies.yml) | | | :white_check_mark: | | | | [L1:1] | 166 | +| 83 | network

front-door | [![Network - Frontdoors](https://github.com/Azure/ResourceModules/workflows/Network%20-%20Frontdoors/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.frontdoors.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 149 | +| 84 | network

front-door-web-application-firewall-policy | [![Network - FrontDoorWebApplicationFirewallPolicies](https://github.com/Azure/ResourceModules/workflows/Network%20-%20FrontDoorWebApplicationFirewallPolicies/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.frontdoorwebapplicationfirewallpolicies.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 124 | +| 85 | network

ip-group | [![Network - IpGroups](https://github.com/Azure/ResourceModules/workflows/Network%20-%20IpGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.ipgroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 71 | +| 86 | network

load-balancer | [![Network - LoadBalancers](https://github.com/Azure/ResourceModules/workflows/Network%20-%20LoadBalancers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.loadbalancers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:2] | 234 | +| 87 | network

local-network-gateway | [![Network - LocalNetworkGateways](https://github.com/Azure/ResourceModules/workflows/Network%20-%20LocalNetworkGateways/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.localnetworkgateways.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 91 | +| 88 | network

nat-gateway | [![Network - NatGateways](https://github.com/Azure/ResourceModules/workflows/Network%20-%20NatGateways/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.natgateways.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 151 | +| 89 | network

network-interface | [![Network - NetworkInterfaces](https://github.com/Azure/ResourceModules/workflows/Network%20-%20NetworkInterfaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networkinterfaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 160 | +| 90 | network

network-manager | [![Network - Network Managers](https://github.com/Azure/ResourceModules/workflows/Network%20-%20Network%20Managers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networkmanagers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:4, L2:2, L3:1] | 136 | +| 91 | network

network-security-group | [![Network - NetworkSecurityGroups](https://github.com/Azure/ResourceModules/workflows/Network%20-%20NetworkSecurityGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networksecuritygroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 157 | +| 92 | network

network-watcher | [![Network - NetworkWatchers](https://github.com/Azure/ResourceModules/workflows/Network%20-%20NetworkWatchers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.networkwatchers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:2] | 100 | +| 93 | network

private-dns-zone | [![Network - PrivateDnsZones](https://github.com/Azure/ResourceModules/workflows/Network%20-%20PrivateDnsZones/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.privatednszones.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:9] | 192 | +| 94 | network

private-endpoint | [![Network - PrivateEndpoints](https://github.com/Azure/ResourceModules/workflows/Network%20-%20PrivateEndpoints/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.privateendpoints.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:1] | 111 | +| 95 | network

private-link-service | [![Network - PrivateLinkServices](https://github.com/Azure/ResourceModules/workflows/Network%20-%20PrivateLinkServices/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.privatelinkservices.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 88 | +| 96 | network

public-ip-address | [![Network - PublicIpAddresses](https://github.com/Azure/ResourceModules/workflows/Network%20-%20PublicIpAddresses/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.publicipaddresses.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 185 | +| 97 | network

public-ip-prefix | [![Network - PublicIpPrefixes](https://github.com/Azure/ResourceModules/workflows/Network%20-%20PublicIpPrefixes/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.publicipprefixes.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 80 | +| 98 | network

route-table | [![Network - RouteTables](https://github.com/Azure/ResourceModules/workflows/Network%20-%20RouteTables/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.routetables.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 73 | +| 99 | network

service-endpoint-policy | [![Network - ServiceEndpointPolicies](https://github.com/Azure/ResourceModules/workflows/Network%20-%20ServiceEndpointPolicies/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.serviceendpointpolicies.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 76 | +| 100 | network

trafficmanagerprofile | [![Network - TrafficManagerProfiles](https://github.com/Azure/ResourceModules/workflows/Network%20-%20TrafficManagerProfiles/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.trafficmanagerprofiles.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 163 | +| 101 | network

virtual-hub | [![Network - VirtualHubs](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VirtualHubs/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualhubs.yml) | | :white_check_mark: | :white_check_mark: | | | | [L1:2] | 147 | +| 102 | network

virtual-network | [![Network - VirtualNetworks](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VirtualNetworks/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualnetworks.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:2] | 247 | +| 103 | network

virtual-network-gateway | [![Network - VirtualNetworkGateways](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VirtualNetworkGateways/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualnetworkgateways.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:1] | 394 | +| 104 | network

virtual-wan | [![Network - VirtualWans](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VirtualWans/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.virtualwans.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 83 | +| 105 | network

vpn-gateway | [![Network - VPNGateways](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VPNGateways/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.vpngateways.yml) | | :white_check_mark: | :white_check_mark: | | | | [L1:2] | 110 | +| 106 | network

vpn-site | [![Network - VPN Sites](https://github.com/Azure/ResourceModules/workflows/Network%20-%20VPN%20Sites/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.network.vpnsites.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 91 | +| 107 | operational-insights

workspace | [![OperationalInsights - Workspaces](https://github.com/Azure/ResourceModules/workflows/OperationalInsights%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.operationalinsights.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:7] | 309 | +| 108 | operations-management

solution | [![OperationsManagement - Solutions](https://github.com/Azure/ResourceModules/workflows/OperationsManagement%20-%20Solutions/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.operationsmanagement.solutions.yml) | | | | | | | | 53 | +| 109 | policy-insights

remediation | [![PolicyInsights - Remediations](https://github.com/Azure/ResourceModules/workflows/PolicyInsights%20-%20Remediations/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.policyinsights.remediations.yml) | | | | | | | [L1:3] | 106 | +| 110 | power-bi-dedicated

capacity | [![PowerBiDedicated - Capacities](https://github.com/Azure/ResourceModules/workflows/PowerBiDedicated%20-%20Capacities/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.powerbidedicated.capacities.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 99 | +| 111 | purview

account | [![Purview - Accounts](https://github.com/Azure/ResourceModules/workflows/Purview%20-%20Accounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.purview.accounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 278 | +| 112 | recovery-services

vault | [![RecoveryServices - Vaults](https://github.com/Azure/ResourceModules/workflows/RecoveryServices%20-%20Vaults/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.recoveryservices.vaults.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:7, L2:2, L3:2] | 287 | +| 113 | relay

namespace | [![Relay - Namespaces](https://github.com/Azure/ResourceModules/workflows/Relay%20-%20Namespaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.relay.namespaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:4, L2:2] | 258 | +| 114 | resource-graph

query | [![ResourceGraph - Queries](https://github.com/Azure/ResourceModules/workflows/ResourceGraph%20-%20Queries/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.resourcegraph.queries.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 73 | +| 115 | resources

deployment-script | [![Resources - DeploymentScripts](https://github.com/Azure/ResourceModules/workflows/Resources%20-%20DeploymentScripts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.resources.deploymentscripts.yml) | | :white_check_mark: | :white_check_mark: | | | | | 124 | +| 116 | resources

resource-group | [![Resources - ResourceGroups](https://github.com/Azure/ResourceModules/workflows/Resources%20-%20ResourceGroups/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.resources.resourcegroups.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 69 | +| 117 | resources

tags | [![Resources - Tags](https://github.com/Azure/ResourceModules/workflows/Resources%20-%20Tags/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.resources.tags.yml) | | | :white_check_mark: | | | | [L1:2] | 54 | +| 118 | security

azure-security-center | [![Security - AzureSecurityCenter](https://github.com/Azure/ResourceModules/workflows/Security%20-%20AzureSecurityCenter/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.security.azuresecuritycenter.yml) | | | | | | | | 220 | +| 119 | service-bus

namespace | [![ServiceBus - Namespaces](https://github.com/Azure/ResourceModules/workflows/ServiceBus%20-%20Namespaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.servicebus.namespaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:6, L2:2] | 327 | +| 120 | service-fabric

cluster | [![ServiceFabric - Clusters](https://github.com/Azure/ResourceModules/workflows/ServiceFabric%20-%20Clusters/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.servicefabric.clusters.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | [L1:1] | 284 | +| 121 | signal-r-service

signal-r | [![SignalRService - SignalR](https://github.com/Azure/ResourceModules/workflows/SignalRService%20-%20SignalR/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.signalrservice.signalr.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | | 189 | +| 122 | signal-r-service

web-pub-sub | [![SignalRService - WebPubSub](https://github.com/Azure/ResourceModules/workflows/SignalRService%20-%20WebPubSub/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.signalrservice.webpubsub.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | | 159 | +| 123 | sql

managed-instance | [![Sql - ManagedInstances](https://github.com/Azure/ResourceModules/workflows/Sql%20-%20ManagedInstances/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.sql.managedinstances.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:6, L2:2] | 334 | +| 124 | sql

server | [![Sql - Servers](https://github.com/Azure/ResourceModules/workflows/Sql%20-%20Servers/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.sql.servers.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | [L1:8, L2:2] | 304 | +| 125 | storage

storage-account | [![Storage - StorageAccounts](https://github.com/Azure/ResourceModules/workflows/Storage%20-%20StorageAccounts/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.storage.storageaccounts.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:6, L2:4, L3:1] | 425 | +| 126 | synapse

private-link-hub | [![Synapse - PrivateLinkHubs](https://github.com/Azure/ResourceModules/workflows/Synapse%20-%20PrivateLinkHubs/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.synapse.privatelinkhubs.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | | 93 | +| 127 | synapse

workspace | [![Synapse - Workspaces](https://github.com/Azure/ResourceModules/workflows/Synapse%20-%20Workspaces/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.synapse.workspaces.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:2] | 286 | +| 128 | virtual-machine-images

image-template | [![VirtualMachineImages - ImageTemplates](https://github.com/Azure/ResourceModules/workflows/VirtualMachineImages%20-%20ImageTemplates/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.virtualmachineimages.imagetemplates.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 188 | +| 129 | web

connection | [![Web - Connections](https://github.com/Azure/ResourceModules/workflows/Web%20-%20Connections/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.connections.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | 90 | +| 130 | web

hosting-environment | [![Web - HostingEnvironments](https://github.com/Azure/ResourceModules/workflows/Web%20-%20HostingEnvironments/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.hostingenvironments.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | [L1:2] | 227 | +| 131 | web

serverfarm | [![Web - Serverfarms](https://github.com/Azure/ResourceModules/workflows/Web%20-%20Serverfarms/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.serverfarms.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | 154 | +| 132 | web

site | [![Web - Sites](https://github.com/Azure/ResourceModules/workflows/Web%20-%20Sites/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.sites.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | [L1:5, L2:4, L3:1] | 386 | +| 133 | web

static-site | [![Web - StaticSites](https://github.com/Azure/ResourceModules/workflows/Web%20-%20StaticSites/badge.svg)](https://github.com/Azure/ResourceModules/actions/workflows/ms.web.staticsites.yml) | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | | [L1:3] | 196 | +| Sum | | | 107 | 106 | 116 | 55 | 26 | 2 | 220 | 23407 | ## Legend diff --git a/modules/managed-identity/user-assigned-identity/README.md b/modules/managed-identity/user-assigned-identity/README.md index bbeaa81dcb..2e153cd2e7 100644 --- a/modules/managed-identity/user-assigned-identity/README.md +++ b/modules/managed-identity/user-assigned-identity/README.md @@ -27,7 +27,7 @@ This module deploys a User Assigned Identity. | `enableDefaultTelemetry` | bool | `True` | | Enable telemetry via a Globally Unique Identifier (GUID). | | `location` | string | `[resourceGroup().location]` | | Location for all resources. | | `lock` | string | `''` | `['', CanNotDelete, ReadOnly]` | Specify the type of lock. | -| `name` | string | `[guid(resourceGroup().id)]` | | Name of the User Assigned Identity. | +| `name` | string | `[guid(resourceGroup().id)]` | | Name of the User Assigned Identity resource. | | `roleAssignments` | array | `[]` | | Array of role assignment objects that contain the 'roleDefinitionIdOrName' and 'principalId' to define RBAC role assignments on this resource. In the roleDefinitionIdOrName attribute, you can provide either the display name of the role definition, or its fully qualified ID in the following format: '/providers/Microsoft.Authorization/roleDefinitions/c2f4ef07-c644-48eb-af81-4b1b4947fb11'. | | `tags` | object | `{object}` | | Tags of the resource. | diff --git a/modules/managed-identity/user-assigned-identity/main.bicep b/modules/managed-identity/user-assigned-identity/main.bicep index a4156a9502..0b5bad0ad1 100644 --- a/modules/managed-identity/user-assigned-identity/main.bicep +++ b/modules/managed-identity/user-assigned-identity/main.bicep @@ -2,7 +2,7 @@ metadata name = 'User Assigned Identities' metadata description = 'This module deploys a User Assigned Identity.' metadata owner = 'Azure/module-maintainers' -@description('Optional. Name of the User Assigned Identity.') +@description('Optional. Name of the User Assigned Identity resource.') param name string = guid(resourceGroup().id) @description('Optional. Location for all resources.') diff --git a/modules/managed-identity/user-assigned-identity/main.json b/modules/managed-identity/user-assigned-identity/main.json index 79b93fda5a..4cca0e07d9 100644 --- a/modules/managed-identity/user-assigned-identity/main.json +++ b/modules/managed-identity/user-assigned-identity/main.json @@ -5,7 +5,7 @@ "_generator": { "name": "bicep", "version": "0.20.4.51522", - "templateHash": "510769152124932769" + "templateHash": "32203077055651435" }, "name": "User Assigned Identities", "description": "This module deploys a User Assigned Identity.", @@ -16,7 +16,7 @@ "type": "string", "defaultValue": "[guid(resourceGroup().id)]", "metadata": { - "description": "Optional. Name of the User Assigned Identity." + "description": "Optional. Name of the User Assigned Identity resource." } }, "location": { diff --git a/modules/managed-identity/user-assigned-identity/version.json b/modules/managed-identity/user-assigned-identity/version.json index 96236a61ba..04a0dd1a80 100644 --- a/modules/managed-identity/user-assigned-identity/version.json +++ b/modules/managed-identity/user-assigned-identity/version.json @@ -1,6 +1,6 @@ { "$schema": "https://aka.ms/bicep-registry-module-version-file-schema#", - "version": "0.4", + "version": "0.5", "pathFilters": [ "./main.json" ] diff --git a/modules/sql/server/.test/common/main.test.bicep b/modules/sql/server/.test/common/main.test.bicep index c2f61de647..87707b719a 100644 --- a/modules/sql/server/.test/common/main.test.bicep +++ b/modules/sql/server/.test/common/main.test.bicep @@ -101,7 +101,7 @@ module testDeployment '../../main.bicep' = { skuTier: 'GeneralPurpose' skuCapacity: 10 // Pre-existing 'public' configuration - maintenanceConfigurationId: '${subscription().id}/providers/Microsoft.Maintenance/publicMaintenanceConfigurations/SQL_WestEurope_DB_1' + maintenanceConfigurationId: '${subscription().id}/providers/Microsoft.Maintenance/publicMaintenanceConfigurations/SQL_${location}_DB_1' } ] databases: [ diff --git a/settings.yml b/settings.yml index 59695ba390..183da7231b 100644 --- a/settings.yml +++ b/settings.yml @@ -54,6 +54,7 @@ variables: # --------------- # publishLatest: true # [Only for Template-Specs & Bicep Registry] Publish an absolute latest version. Note: This version may include breaking changes and is not recommended for production environments + useApiSpecsAlignedName: false # Publish a module not using its folder path, but the matching name in the REST API (i.e., the classic naming). For example: `bicep/modules/microsoft.keyvault.vaults.secrets` instead of `bicep/modules/key-vault.vault.secret` # Template-Spec settings # # ---------------------- # @@ -99,7 +100,7 @@ variables: # --------------------------- # artifactsFeedDoPublish: true # Set to true, if you would like to publish modules as Universal Packages (in Azure DevOps Artifacts) - vstsFeedName: 'carml' # The name of the Azure DevOps universal packages feed to publish to + vstsFeedName: 'carmld4c' # The name of the Azure DevOps universal packages feed to publish to vstsFeedProject: '$(System.TeamProject)' # The project that hosts the feed vstsFeedToken: $(System.AccessToken) # The token used to publish universal packages into the feed above diff --git a/utilities/pipelines/resourcePublish/Get-ModulesMissingFromPrivateBicepRegistry.ps1 b/utilities/pipelines/resourcePublish/Get-ModulesMissingFromPrivateBicepRegistry.ps1 index 124da5f51e..c91319fa94 100644 --- a/utilities/pipelines/resourcePublish/Get-ModulesMissingFromPrivateBicepRegistry.ps1 +++ b/utilities/pipelines/resourcePublish/Get-ModulesMissingFromPrivateBicepRegistry.ps1 @@ -18,6 +18,11 @@ Mandatory. The name of Resource Group the Container Registry is located it. Optional. Publish an absolute latest version. Note: This version may include breaking changes and is not recommended for production environments +.PARAMETER UseApiSpecsAlignedName +Optional. If set to true, the module name looked for is aligned with the Azure API naming. If not, it's one aligned with the module's folder path. See the following examples: +- True: microsoft.keyvault.vaults.secrets +- False: key-vault.vault.secret + .EXAMPLE Get-ModulesMissingFromPrivateBicepRegistry -TemplateFilePath 'C:\ResourceModules\modules\compute\virtual-machine\main.bicep' -BicepRegistryName 'adpsxxazacrx001' -BicepRegistryRgName 'artifacts-rg' @@ -57,7 +62,10 @@ function Get-ModulesMissingFromPrivateBicepRegistry { [string] $BicepRegistryRgName, [Parameter(Mandatory = $false)] - [bool] $PublishLatest = $true + [bool] $PublishLatest = $true, + + [Parameter(Mandatory = $false)] + [bool] $UseApiSpecsAlignedName = $false ) begin { @@ -89,7 +97,7 @@ function Get-ModulesMissingFromPrivateBicepRegistry { foreach ($templatePath in $availableModuleTemplatePaths) { # Get a valid Container Registry name - $moduleRegistryIdentifier = Get-PrivateRegistryRepositoryName -TemplateFilePath $templatePath + $moduleRegistryIdentifier = Get-PrivateRegistryRepositoryName -TemplateFilePath $templatePath -UseApiSpecsAlignedName $UseApiSpecsAlignedName $null = Get-AzContainerRegistryTag -RepositoryName $moduleRegistryIdentifier -RegistryName $BicepRegistryName -ErrorAction 'SilentlyContinue' -ErrorVariable 'result' diff --git a/utilities/pipelines/resourcePublish/Get-ModulesMissingFromTemplateSpecsRG.ps1 b/utilities/pipelines/resourcePublish/Get-ModulesMissingFromTemplateSpecsRG.ps1 index 6cdfc1f879..a71c7fe258 100644 --- a/utilities/pipelines/resourcePublish/Get-ModulesMissingFromTemplateSpecsRG.ps1 +++ b/utilities/pipelines/resourcePublish/Get-ModulesMissingFromTemplateSpecsRG.ps1 @@ -15,6 +15,11 @@ Mandatory. The Resource Group to search in Optional. Publish an absolute latest version. Note: This version may include breaking changes and is not recommended for production environments +.PARAMETER UseApiSpecsAlignedName +Optional. If set to true, the module name looked for is aligned with the Azure API naming. If not, it's one aligned with the module's folder path. See the following examples: +- True: microsoft.keyvault.vaults.secrets +- False: key-vault.vault.secret + .EXAMPLE Get-ModulesMissingFromTemplateSpecsRG -TemplateFilePath 'C:\ResourceModules\modules\key-vault\vault\main.bicep' -TemplateSpecsRGName 'artifacts-rg' @@ -67,7 +72,10 @@ function Get-ModulesMissingFromTemplateSpecsRG { [string] $TemplateSpecsRGName, [Parameter(Mandatory = $false)] - [bool] $PublishLatest = $true + [bool] $PublishLatest = $true, + + [Parameter(Mandatory = $false)] + [bool] $UseApiSpecsAlignedName = $false ) begin { @@ -99,7 +107,7 @@ function Get-ModulesMissingFromTemplateSpecsRG { foreach ($templatePath in $availableModuleTemplatePaths) { # Get a valid Template Spec name - $templateSpecsIdentifier = Get-TemplateSpecsName -TemplateFilePath $templatePath + $templateSpecsIdentifier = Get-TemplateSpecsName -TemplateFilePath $templatePath -UseApiSpecsAlignedName $UseApiSpecsAlignedName $null = Get-AzTemplateSpec -ResourceGroupName $TemplateSpecsRGName -Name $templateSpecsIdentifier -ErrorAction 'SilentlyContinue' -ErrorVariable 'result' diff --git a/utilities/pipelines/resourcePublish/Get-ModulesMissingFromUniversalArtifactsFeed.ps1 b/utilities/pipelines/resourcePublish/Get-ModulesMissingFromUniversalArtifactsFeed.ps1 index df7b43e33d..1654e16d2c 100644 --- a/utilities/pipelines/resourcePublish/Get-ModulesMissingFromUniversalArtifactsFeed.ps1 +++ b/utilities/pipelines/resourcePublish/Get-ModulesMissingFromUniversalArtifactsFeed.ps1 @@ -20,6 +20,11 @@ Example: 'IaC'. Mandatory. Name to the feed to publish to. Example: 'Artifacts'. +.PARAMETER UseApiSpecsAlignedName +Optional. If set to true, the module name looked for is aligned with the Azure API naming. If not, it's one aligned with the module's folder path. See the following examples: +- True: microsoft.keyvault.vaults.secrets +- False: key-vault.vault.secret + .PARAMETER BearerToken Optional. The bearer token to use to authenticate the request. If not provided it MUST be existing in your environment as `$env:TOKEN` @@ -56,6 +61,9 @@ function Get-ModulesMissingFromUniversalArtifactsFeed { [Parameter(Mandatory = $false)] [string] $VstsFeedProject = '', + [Parameter(Mandatory = $false)] + [bool] $UseApiSpecsAlignedName = $false, + [Parameter(Mandatory = $false)] [string] $BearerToken = $env:TOKEN ) @@ -104,7 +112,7 @@ function Get-ModulesMissingFromUniversalArtifactsFeed { foreach ($templatePath in $availableModuleTemplatePaths) { # Get a valid Universal Artifact name - $artifactsIdentifier = Get-UniversalArtifactsName -TemplateFilePath $templatePath + $artifactsIdentifier = Get-UniversalArtifactsName -TemplateFilePath $templatePath -UseApiSpecsAlignedName $UseApiSpecsAlignedName if ($publishedModules -notcontains $artifactsIdentifier) { $missingTemplatePaths += $templatePath diff --git a/utilities/pipelines/resourcePublish/Get-PrivateRegistryRepositoryName.ps1 b/utilities/pipelines/resourcePublish/Get-PrivateRegistryRepositoryName.ps1 index 7b93cb8ca0..1b4070c6a6 100644 --- a/utilities/pipelines/resourcePublish/Get-PrivateRegistryRepositoryName.ps1 +++ b/utilities/pipelines/resourcePublish/Get-PrivateRegistryRepositoryName.ps1 @@ -8,6 +8,11 @@ Convert the given template file path into a valid Container Registry repository .PARAMETER TemplateFilePath Mandatory. The template file path to convert +.PARAMETER UseApiSpecsAlignedName +Optional. If set to true, the returned name will be aligned with the Azure API naming. If not, the one aligned with the module's folder path. See the following examples: +- True: bicep/modules/microsoft.keyvault.vaults.secrets +- False: bicep/modules/key-vault.vault.secret + .EXAMPLE Get-PrivateRegistryRepositoryName -TemplateFilePath 'C:\modules\key-vault\vault\main.bicep' @@ -17,11 +22,21 @@ function Get-PrivateRegistryRepositoryName { [CmdletBinding()] param ( - [Parameter(Mandatory)] - [string] $TemplateFilePath + [Parameter(Mandatory = $true)] + [string] $TemplateFilePath, + + [Parameter(Mandatory = $false)] + [bool] $UseApiSpecsAlignedName = $false ) $moduleIdentifier = (Split-Path $TemplateFilePath -Parent).Replace('\', '/').Split('/modules/')[1] + + if ($UseApiSpecsAlignedName) { + # Load helper script + . (Join-Path (Get-Item -Path $PSScriptRoot).Parent.Parent 'tools' 'helper' 'Get-SpecsAlignedResourceName.ps1') + $moduleIdentifier = Get-SpecsAlignedResourceName -ResourceIdentifier $moduleIdentifier + } + $moduleRegistryIdentifier = 'bicep/modules/{0}' -f $moduleIdentifier.Replace('\', '/').Replace('/', '.').ToLower() return $moduleRegistryIdentifier diff --git a/utilities/pipelines/resourcePublish/Get-TemplateSpecsName.ps1 b/utilities/pipelines/resourcePublish/Get-TemplateSpecsName.ps1 index e69d30cd3e..89777d6308 100644 --- a/utilities/pipelines/resourcePublish/Get-TemplateSpecsName.ps1 +++ b/utilities/pipelines/resourcePublish/Get-TemplateSpecsName.ps1 @@ -8,6 +8,11 @@ Convert the given template file path into a valid Template Specs repository name .PARAMETER TemplateFilePath Mandatory. The template file path to convert +.PARAMETER UseApiSpecsAlignedName +Optional. If set to true, the returned name will be aligned with the Azure API naming. If not, the one aligned with the module's folder path. See the following examples: +- True: microsoft.keyvault.vaults.secrets +- False: key-vault.vault.secret + .EXAMPLE Get-TemplateSpecsName -TemplateFilePath 'C:\modules\key-vault\vault\main.bicep' @@ -18,10 +23,21 @@ function Get-TemplateSpecsName { [CmdletBinding()] param ( [Parameter(Mandatory)] - [string] $TemplateFilePath + [string] $TemplateFilePath, + + [Parameter(Mandatory = $false)] + [bool] $UseApiSpecsAlignedName = $false ) $moduleIdentifier = (Split-Path $TemplateFilePath -Parent).Replace('\', '/').Split('/modules/')[1] + + if ($UseApiSpecsAlignedName) { + # Load helper script + . (Join-Path (Get-Item -Path $PSScriptRoot).Parent.Parent 'tools' 'helper' 'Get-SpecsAlignedResourceName.ps1') + $moduleIdentifier = Get-SpecsAlignedResourceName -ResourceIdentifier $moduleIdentifier + $moduleIdentifier = $moduleIdentifier -replace 'microsoft', 'ms' + } + $templateSpecIdentifier = $moduleIdentifier.Replace('\', '/').Replace('/', '.').ToLower() # Shorten the name @@ -36,8 +52,19 @@ function Get-TemplateSpecsName { $stringToCheck = $nameElems[($index + 1)] # If a name is replicated in a path, it is usually plural in the parent, and singular in the child path. - if ($stringToCheck.StartsWith($stringToRemove)) { - $nameElems[($index + 1)] = $stringToCheck -replace "$stringToRemove-" + # For example: /virtualNetworks/ (plural) & /virtualNetworks/virtualNetworkPeerings/ (singular) + # In this case we want to remove the singular version from the subsequent string & format it accordingly + if ($stringToRemove.EndsWith('s') -and $stringToCheck.StartsWith($stringToRemove.Substring(0, $stringToRemove.length - 1))) { + $singularString = $stringToRemove.Substring(0, $stringToRemove.length - 1) # Would be 'virtualNetwork' from the example above + $rest = $stringToCheck.length - $singularString.Length # Would be 8 from the example above + $shortenedString = $stringToCheck.Substring($singularString.length, $rest) # Would be 'peerings' from the example above + $camelCaseString = [Regex]::Replace($shortenedString , '\b.', { $args[0].Value.Tolower() }) # Would be 'peerings' from the example above + $nameElems[($index + 1)] = $camelCaseString # Would overwrite 'virtualnetworkpeerings' with 'peerings' from the example above + } elseif ($stringToCheck.StartsWith($stringToRemove)) { + # If the subsequent string starts with the current string, we want to remove the current string from the subsequent string. + # So we take the index of the end of the current string, caculate the length until the end of the string and reduce. If a `-` was in between the 2 elements, we also want to trim it from the front. + # For example 'replication-protection-container' & 'replication-protection-container-mapping' should become 'mapping' + $nameElems[($index + 1)] = $stringToCheck.Substring($stringToRemove.length, $stringToCheck.length - $stringToRemove.length).TrimStart('-') } } } diff --git a/utilities/pipelines/resourcePublish/Get-UniversalArtifactsName.ps1 b/utilities/pipelines/resourcePublish/Get-UniversalArtifactsName.ps1 index 95dc5a6a31..9cc29a5091 100644 --- a/utilities/pipelines/resourcePublish/Get-UniversalArtifactsName.ps1 +++ b/utilities/pipelines/resourcePublish/Get-UniversalArtifactsName.ps1 @@ -9,6 +9,11 @@ Must be lowercase alphanumerics, dashes, dots or underscores, under 256 characte .PARAMETER TemplateFilePath Mandatory. The template file path to convert +.PARAMETER UseApiSpecsAlignedName +Optional. If set to true, the returned name will be aligned with the Azure API naming. If not, the one aligned with the module's folder path. See the following examples: +- True: microsoft.keyvault.vaults.secrets +- False: key-vault.vault.secret + .EXAMPLE Get-UniversalArtifactsName -TemplateFilePath 'C:\modules\key-vault\vault\main.bicep' @@ -19,11 +24,21 @@ function Get-UniversalArtifactsName { [CmdletBinding()] param ( [Parameter(Mandatory)] - [string] $TemplateFilePath + [string] $TemplateFilePath, + + [Parameter(Mandatory = $false)] + [bool] $UseApiSpecsAlignedName = $false ) $ModuleFolderPath = Split-Path $TemplateFilePath -Parent $universalPackageModuleName = $ModuleFolderPath.Replace('\', '/').Split('/modules/')[1] + + if ($UseApiSpecsAlignedName) { + # Load helper script + . (Join-Path (Get-Item -Path $PSScriptRoot).Parent.Parent 'tools' 'helper' 'Get-SpecsAlignedResourceName.ps1') + $universalPackageModuleName = Get-SpecsAlignedResourceName -ResourceIdentifier $universalPackageModuleName + } + $universalPackageModuleName = $universalPackageModuleName.Replace('\', '.').Replace('/', '.').toLower() return $universalPackageModuleName diff --git a/utilities/pipelines/resourcePublish/Publish-ModuleToPrivateBicepRegistry.ps1 b/utilities/pipelines/resourcePublish/Publish-ModuleToPrivateBicepRegistry.ps1 index cc5b29b846..220c245767 100644 --- a/utilities/pipelines/resourcePublish/Publish-ModuleToPrivateBicepRegistry.ps1 +++ b/utilities/pipelines/resourcePublish/Publish-ModuleToPrivateBicepRegistry.ps1 @@ -25,6 +25,11 @@ Example: 'artifacts-rg' Optional. The location of the resourceGroup the private bicep registry is deployed to. Required if the resource group is not yet existing. Example: 'West Europe' +.PARAMETER UseApiSpecsAlignedName +Optional. If set to true, the module will be published with a name that is aligned with the Azure API naming. If not, one aligned with the module's folder path. See the following examples: +- True: bicep/modules/microsoft.keyvault.vaults.secrets +- False: bicep/modules/key-vault.vault.secret + .EXAMPLE Publish-ModuleToPrivateBicepRegistry -TemplateFilePath 'C:\modules\key-vault\vault\main.bicep' -ModuleVersion '3.0.0-alpha' -BicepRegistryName 'adpsxxazacrx001' -BicepRegistryRgName 'artifacts-rg' @@ -47,7 +52,10 @@ function Publish-ModuleToPrivateBicepRegistry { [string] $BicepRegistryRgName, [Parameter(Mandatory = $false)] - [string] $BicepRegistryRgLocation + [string] $BicepRegistryRgLocation, + + [Parameter(Mandatory = $false)] + [bool] $UseApiSpecsAlignedName = $false ) begin { @@ -80,7 +88,7 @@ function Publish-ModuleToPrivateBicepRegistry { } # Get a valid Container Registry name - $moduleRegistryIdentifier = Get-PrivateRegistryRepositoryName -TemplateFilePath $TemplateFilePath + $moduleRegistryIdentifier = Get-PrivateRegistryRepositoryName -TemplateFilePath $TemplateFilePath -UseApiSpecsAlignedName $UseApiSpecsAlignedName ############################################# ## Publish to private bicep registry ## diff --git a/utilities/pipelines/resourcePublish/Publish-ModuleToTemplateSpecsRG.ps1 b/utilities/pipelines/resourcePublish/Publish-ModuleToTemplateSpecsRG.ps1 index f3a2c1191d..209033b84e 100644 --- a/utilities/pipelines/resourcePublish/Publish-ModuleToTemplateSpecsRG.ps1 +++ b/utilities/pipelines/resourcePublish/Publish-ModuleToTemplateSpecsRG.ps1 @@ -26,6 +26,11 @@ Example: 'West Europe' Mandatory. The description of the parent template spec. Example: 'iacs key vault' +.PARAMETER UseApiSpecsAlignedName +Optional. If set to true, the module will be published with a name that is aligned with the Azure API naming. If not, one aligned with the module's folder path. See the following examples: +- True: microsoft.keyvault.vaults.secrets +- False: key-vault.vault.secret + .EXAMPLE Publish-ModuleToTemplateSpecsRG -TemplateFilePath 'C:\modules\key-vault\vault\main.bicep' -ModuleVersion '3.0.0-alpha' -TemplateSpecsRgName 'artifacts-rg' -TemplateSpecsRgLocation 'West Europe' -TemplateSpecsDescription 'iacs key vault' @@ -48,7 +53,10 @@ function Publish-ModuleToTemplateSpecsRG { [string] $TemplateSpecsRgLocation, [Parameter(Mandatory)] - [string] $TemplateSpecsDescription + [string] $TemplateSpecsDescription, + + [Parameter(Mandatory = $false)] + [bool] $UseApiSpecsAlignedName = $false ) begin { @@ -69,7 +77,7 @@ function Publish-ModuleToTemplateSpecsRG { } # Get a valid Template Specs name - $templateSpecIdentifier = Get-TemplateSpecsName -TemplateFilePath $TemplateFilePath + $templateSpecIdentifier = Get-TemplateSpecsName -TemplateFilePath $TemplateFilePath -UseApiSpecsAlignedName $UseApiSpecsAlignedName ################################ ## Create template spec ## diff --git a/utilities/pipelines/resourcePublish/Publish-ModuleToUniversalArtifactsFeed.ps1 b/utilities/pipelines/resourcePublish/Publish-ModuleToUniversalArtifactsFeed.ps1 index a2e79cf3b7..c2705690fe 100644 --- a/utilities/pipelines/resourcePublish/Publish-ModuleToUniversalArtifactsFeed.ps1 +++ b/utilities/pipelines/resourcePublish/Publish-ModuleToUniversalArtifactsFeed.ps1 @@ -59,6 +59,11 @@ Example: 'Artifacts'. .PARAMETER BearerToken Optional. The bearer token to use to authenticate the request. If not provided it MUST be existing in your environment as `$env:TOKEN` +.PARAMETER UseApiSpecsAlignedName +Optional. If set to true, the module will be published with a name that is aligned with the Azure API naming. If not, one aligned with the module's folder path. See the following examples: +- True: microsoft.keyvault.vaults.secrets +- False: key-vault.vault.secret + .EXAMPLE Publish-ModuleToUniversalArtifactsFeed -TemplateFilePath 'C:\modules\key-vault\vault\main.bicep' -ModuleVersion '3.0.0-alpha' -vstsOrganizationUri 'https://dev.azure.com/fabrikam' -VstsProject 'IaC' -VstsFeedName 'Artifacts' @@ -84,7 +89,10 @@ function Publish-ModuleToUniversalArtifactsFeed { [string] $BearerToken = $env:TOKEN, [Parameter(Mandatory)] - [string] $ModuleVersion + [string] $ModuleVersion, + + [Parameter(Mandatory = $false)] + [bool] $UseApiSpecsAlignedName = $false ) begin { @@ -103,7 +111,7 @@ function Publish-ModuleToUniversalArtifactsFeed { ################################# ## Generate package name ## ################################# - $universalPackageModuleName = Get-UniversalArtifactsName -TemplateFilePath $TemplateFilePath + $universalPackageModuleName = Get-UniversalArtifactsName -TemplateFilePath $TemplateFilePath -UseApiSpecsAlignedName $UseApiSpecsAlignedName ########################### ## Find feed scope ## diff --git a/utilities/tools/Get-ModulesFeatureOutline.ps1 b/utilities/tools/Get-ModulesFeatureOutline.ps1 index a3f1b4a156..b0d181df11 100644 --- a/utilities/tools/Get-ModulesFeatureOutline.ps1 +++ b/utilities/tools/Get-ModulesFeatureOutline.ps1 @@ -93,6 +93,7 @@ function Get-ModulesFeatureOutline { # Load external functions . (Join-Path $PSScriptRoot 'helper' 'Get-PipelineStatusUrl.ps1') + . (Join-Path $PSScriptRoot 'helper' 'Get-SpecsAlignedResourceName.ps1') if ($OnlyTopLevel) { $moduleTemplatePaths = (Get-ChildItem $ModuleFolderPath -Recurse -Filter 'main.bicep' -Depth 2).FullName @@ -128,15 +129,18 @@ function Get-ModulesFeatureOutline { $isTopLevelModule = ($fullResourcePath -split '/').Count -eq 2 if ($AddStatusBadges -and $isTopLevelModule) { - $provider = ($fullResourcePath -split '/')[0] - $resourceType = ($fullResourcePath -split '/')[1] + $specsAlignedResourceName = (Get-SpecsAlignedResourceName -ResourceIdentifier $fullResourcePath).ToLower() + + $provider = ($specsAlignedResourceName -split '/')[0] -replace 'Microsoft', 'ms' + $resourceType = ($specsAlignedResourceName -split '/')[1] + $statusInputObject = @{ RepositoryName = $RepositoryName Organization = $Organization Environment = $Environment ProjectName = $ProjectName - PipelineFileName = ((('ms.{0}.{1}.yml' -f $provider, $resourceType) -replace '-', '') -replace '/', '.') + PipelineFileName = ((('{0}.{1}.yml' -f $provider, $resourceType) -replace '-', '') -replace '/', '.') PipelineFolderPath = $Environment -eq 'GitHub' ? (Join-Path '.github' 'workflows') : (Join-Path '.azuredevops' 'modulePipelines') } diff --git a/utilities/tools/Set-ModuleReadMe.ps1 b/utilities/tools/Set-ModuleReadMe.ps1 index 9f55b4cca6..ca0f04a51b 100644 --- a/utilities/tools/Set-ModuleReadMe.ps1 +++ b/utilities/tools/Set-ModuleReadMe.ps1 @@ -1400,7 +1400,7 @@ Initialize the readme of the 'sql/managed-instance/administrator' module #> function Initialize-ReadMe { - [CmdletBinding(SupportsShouldProcess)] + [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [string] $ReadMeFilePath, @@ -1412,11 +1412,11 @@ function Initialize-ReadMe { [hashtable] $TemplateFileContent ) - . (Join-Path $PSScriptRoot 'helper' 'ConvertTo-ModuleResourceType.ps1') + . (Join-Path $PSScriptRoot 'helper' 'Get-SpecsAlignedResourceName.ps1') $moduleName = $TemplateFileContent.metadata.name $moduleDescription = $TemplateFileContent.metadata.description - $formattedResourceType = ConvertTo-ModuleResourceType -ResourceIdentifier $FullModuleIdentifier + $formattedResourceType = Get-SpecsAlignedResourceName -ResourceIdentifier $FullModuleIdentifier if (-not (Test-Path $ReadMeFilePath) -or ([String]::IsNullOrEmpty((Get-Content $ReadMeFilePath -Raw)))) { diff --git a/utilities/tools/helper/ConvertTo-ModuleResourceType.ps1 b/utilities/tools/helper/ConvertTo-ModuleResourceType.ps1 deleted file mode 100644 index e18892fc21..0000000000 --- a/utilities/tools/helper/ConvertTo-ModuleResourceType.ps1 +++ /dev/null @@ -1,57 +0,0 @@ -<# -.SYNOPSIS -Converts a parent or child module folder path to the corresponding resource type. - -.DESCRIPTION -Converts a parent or child module folder path to the corresponding resource type. - -.PARAMETER ResourceIdentifier -Mandatory. The resource identifier to search for, i.e. the relative module file path starting from the resource provider folder. - -.EXAMPLE -ConvertTo-ModuleResourceType -ResourceIdentifier 'storage/storage-account'. - -Returns 'Microsoft.Storage/storageAccounts'. - -.EXAMPLE -ConvertTo-ModuleResourceType -ResourceIdentifier 'storage/storage-account/blob-service/container/immutability-policy'. - -Returns 'Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies'. -#> -function ConvertTo-ModuleResourceType { - - [CmdletBinding()] - param ( - [Parameter(Mandatory = $true)] - [string] $ResourceIdentifier - ) - - . (Join-Path $PSScriptRoot 'Get-SpecsAlignedResourceName.ps1') - - $provider, $parentType, $childTypeString = $ResourceIdentifier -Split '[\/|\\]', 3 - $parentResourceIdentifier = $provider, $parentType -join '/' - - $fullParentResourceType = Get-SpecsAlignedResourceName -ResourceIdentifier $parentResourceIdentifier - - if (-not $childTypeString) { - $fullResourceType = $fullParentResourceType - } else { - $childTypeArray = $childTypeString -split '\/' - - $innerResourceType = $fullParentResourceType - foreach ($childType in $childTypeArray) { - # Additional check for child types non existing on their own (e.g. sites/hybridConnectionNamespaces does not exist, sites/hybridConnectionNamespaces/relays does) - $innerResourceTypeLeafReduced = Get-ReducedWordString -StringToReduce ($innerResourceType -Split '[\/|\\]')[-1] - $childTypeReduced = Get-ReducedWordString -StringToReduce $childType - if ($innerResourceTypeLeafReduced -eq $childTypeReduced) { - break - } - - $innerResourceType = $innerResourceType.Replace('Microsoft.', '', 'OrdinalIgnoreCase'), $childType -join '/' - $fullResourceType = Get-SpecsAlignedResourceName -ResourceIdentifier $innerResourceType - $innerResourceType = $fullResourceType - } - } - - return $fullResourceType -} diff --git a/utilities/tools/helper/Get-SpecsAlignedResourceName.ps1 b/utilities/tools/helper/Get-SpecsAlignedResourceName.ps1 index 820a478fa6..7cfab64e1d 100644 --- a/utilities/tools/helper/Get-SpecsAlignedResourceName.ps1 +++ b/utilities/tools/helper/Get-SpecsAlignedResourceName.ps1 @@ -69,6 +69,7 @@ function Get-SpecsAlignedResourceName { $rawProviderNamespace, $rawResourceType = $reducedResourceIdentifier -Split '[\/|\\]', 2 # e.g. 'keyvault' & 'vaults/keys' + # Find provider namespace $foundProviderNamespaceMatches = ($specs.Keys | Sort-Object) | Where-Object { $_ -like "Microsoft.$rawProviderNamespace*" } if (-not $foundProviderNamespaceMatches) { @@ -78,44 +79,44 @@ function Get-SpecsAlignedResourceName { $providerNamespace = ($foundProviderNamespaceMatches.Count -eq 1) ? $foundProviderNamespaceMatches : $foundProviderNamespaceMatches[0] } + # Find resource type $innerResourceTypes = $specs[$providerNamespace].Keys | Sort-Object - $rawResourceTypeReduced = Get-ReducedWordString -StringToReduce $rawResourceType - $foundResourceTypeMatches = $innerResourceTypes | Where-Object { $_ -like "$rawResourceTypeReduced*" } - - if (-not $foundResourceTypeMatches) { - $resourceType = $reducedResourceIdentifier.Split('/')[1] - Write-Warning "Failed to identify resource type [$rawResourceType] in provider namespace [$providerNamespace]. Fallback to [$resourceType]." - } elseif ($foundResourceTypeMatches.Count -eq 1) { - $resourceType = $foundResourceTypeMatches - } else { - # If more than one specs resource type matches the input resource type core string, get all specs core strings and check exact match - # This is to avoid that e.g. web/connection falls to Microsoft.Web/connectionGateways instead of Microsoft.Web/connections - foreach ($foundResourceTypeMatch in $foundResourceTypeMatches) { - $foundResourceTypeMatchReduced = Get-ReducedWordString -StringToReduce $foundResourceTypeMatch - if ($rawResourceTypeReduced -eq $foundResourceTypeMatchReduced) { - $resourceType = $foundResourceTypeMatch - break + + $rawResourceTypeElem = $rawResourceType -split '[\/|\\]' + $reducedResourceTypeElements = $rawResourceTypeElem | ForEach-Object { Get-ReducedWordString -StringToReduce $_ } + + ## We built a regex that matches the resource type, but also the plural and singular form of it along its entire path. For example ^vault(y|ii|e|ys|ies|es|s|)(\/|$)key(y|ii|e|ys|ies|es|s|)(\/|$)$ + ### (y|ii|e|ys|ies|es|s|) = Singular or plural form + ### (\/|$) = End of string or another resource type level + $resourceTypeRegex = '^{0}(y|ii|e|ys|ies|es|s|ses|)(\/|$)$' -f ($reducedResourceTypeElements -join '(y|ii|e|ys|ies|es|s|ses|)(\/|$)') + $resourceType = $innerResourceTypes | Where-Object { $_ -match $resourceTypeRegex } + + # Special case handling: Ambiguous resource types (usually incorrect RP implementations) + if ($resourceType.count -gt 1) { + switch ($rawResourceType) { + 'service/api/policy' { + # Setting explicitely as both [apimanagement/service/apis/policies] & [apimanagement/service/apis/policy] exist in the specs and the later seem to have been an initial incorrect publish (only one API version exists) + $resourceType = 'service/apis/policies' + } + Default { + throw ('Found ambiguous resource types [{0}] for identifier [{1}]' -f ($resourceType -join ','), $rawResourceType) } } + } + # Special case handling: If no resource type is found, fall back one level (e.g., for 'authorization\role-definition\management-group' as 'management-group' in this context is no actual resource type) + if (-not $resourceType) { + $fallbackResourceTypeRegex = '{0}$' -f ($resourceTypeRegex -split $reducedResourceTypeElements[-1])[0] + $resourceType = $innerResourceTypes | Where-Object { $_ -match $fallbackResourceTypeRegex } if (-not $resourceType) { - # Try removing last split of each match, then reduce to core and compare - # This is needed to deal cases such as Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers where backupFabrics does not exist on its own - foreach ($foundResourceTypeMatch in $foundResourceTypeMatches) { - $foundResourceTypeMatch = $foundResourceTypeMatch.SubString(0, $foundResourceTypeMatch.LastIndexOf('/')) - $foundResourceTypeMatchReduced = Get-ReducedWordString -StringToReduce $foundResourceTypeMatch - if ($rawResourceTypeReduced -eq $foundResourceTypeMatchReduced) { - $resourceType = $foundResourceTypeMatch - break - } - } - # Finally fallback to first match in the list - if (-not $resourceType) { - $resourceType = $foundResourceTypeMatches[0] - Write-Warning "Failed to find exact match between core matched resource types and [$rawResourceTypeReduced]. Fallback to first ResourceType in the match list [$resourceType]." - } + # if we still don't find anything (because the resource type straight up does not exist, we fall back to itself as the default) + Write-Warning "Resource type [$rawResourceType] does not exist in the API / is custom. Falling back to it as default." + $resourceType = $rawResourceType + } else { + Write-Warning ('Failed to find exact match between core matched resource types and [{0}]. Fallback on [{1}].' -f $rawResourceType, (Split-Path $rawResourceType -Parent)) } } + # Build result return "$providerNamespace/$resourceType" }