"
@@ -514,7 +517,7 @@ module workspace 'br:bicep/modules/machine-learning-services.workspace:1.0.0' =
| [`hbiWorkspace`](#parameter-hbiworkspace) | bool | The flag to signal HBI data in the workspace and reduce diagnostic data collected by the service. |
| [`imageBuildCompute`](#parameter-imagebuildcompute) | string | The compute name for image build. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. |
| [`publicNetworkAccess`](#parameter-publicnetworkaccess) | string | Whether or not public network access is allowed for this resource. For security reasons it should be disabled. If not specified, it will be disabled by default if private endpoints are set. |
| [`roleAssignments`](#parameter-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'. |
@@ -684,11 +687,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/machine-learning-services/workspace/main.bicep b/modules/machine-learning-services/workspace/main.bicep
index 1bb055ed21..ad3c021a6a 100644
--- a/modules/machine-learning-services/workspace/main.bicep
+++ b/modules/machine-learning-services/workspace/main.bicep
@@ -282,7 +282,7 @@ module workspace_privateEndpoints '../../network/private-endpoint/main.bicep' =
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/maintenance/maintenance-configuration/README.md b/modules/maintenance/maintenance-configuration/README.md
index 8a38be4d68..31f87cd13f 100644
--- a/modules/maintenance/maintenance-configuration/README.md
+++ b/modules/maintenance/maintenance-configuration/README.md
@@ -26,13 +26,10 @@ The following section provides usage examples for the module, which were used to
>**Note**: To reference the module, please use the following syntax `br:bicep/modules/maintenance.maintenance-configuration:1.0.0`.
-- [Using large parameter set](#example-1-using-large-parameter-set)
-- [Using only defaults](#example-2-using-only-defaults)
-
-### Example 1: _Using large parameter set_
-
-This instance deploys the module with most of its features enabled.
+- [Common](#example-1-common)
+- [Min](#example-2-min)
+### Example 1: _Common_
@@ -140,7 +137,10 @@ module maintenanceConfiguration 'br:bicep/modules/maintenance.maintenance-config
}
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"maintenanceWindow": {
"value": {
@@ -182,10 +182,7 @@ module maintenanceConfiguration 'br:bicep/modules/maintenance.maintenance-config
-### Example 2: _Using only defaults_
-
-This instance deploys the module with the minimum set of required parameters.
-
+### Example 2: _Min_
diff --git a/modules/managed-identity/user-assigned-identity/README.md b/modules/managed-identity/user-assigned-identity/README.md
index eb013519f9..e37e89000b 100644
--- a/modules/managed-identity/user-assigned-identity/README.md
+++ b/modules/managed-identity/user-assigned-identity/README.md
@@ -105,7 +105,10 @@ module userAssignedIdentity 'br:bicep/modules/managed-identity.user-assigned-ide
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"name": {
"value": "miuaicom001"
@@ -185,7 +188,7 @@ module userAssignedIdentity 'br:bicep/modules/managed-identity.user-assigned-ide
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`federatedIdentityCredentials`](#parameter-federatedidentitycredentials) | array | The federated identity credentials list to indicate which token from the external IdP should be trusted by your application. Federated identity credentials are supported on applications only. A maximum of 20 federated identity credentials can be added per application object. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`name`](#parameter-name) | string | Name of the User Assigned Identity. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
@@ -213,11 +216,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/net-app/net-app-account/README.md b/modules/net-app/net-app-account/README.md
index e36caba0bd..41ea771920 100644
--- a/modules/net-app/net-app-account/README.md
+++ b/modules/net-app/net-app-account/README.md
@@ -279,7 +279,10 @@ module netAppAccount 'br:bicep/modules/net-app.net-app-account:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -582,7 +585,7 @@ module netAppAccount 'br:bicep/modules/net-app.net-app-account:1.0.0' = {
| [`domainName`](#parameter-domainname) | string | Fully Qualified Active Directory DNS Domain Name (e.g. 'contoso.com'). |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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'. |
| [`smbServerNamePrefix`](#parameter-smbservernameprefix) | string | Required if domainName is specified. NetBIOS name of the SMB server. A computer account with this prefix will be registered in the AD and used to mount volumes. |
| [`tags`](#parameter-tags) | object | Tags for all resources. |
@@ -646,11 +649,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/application-gateway/README.md b/modules/network/application-gateway/README.md
index ef4e18b065..872745291e 100644
--- a/modules/network/application-gateway/README.md
+++ b/modules/network/application-gateway/README.md
@@ -683,7 +683,10 @@ module applicationGateway 'br:bicep/modules/network.application-gateway:1.0.0' =
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"privateEndpoints": {
"value": [
@@ -989,7 +992,7 @@ module applicationGateway 'br:bicep/modules/network.application-gateway:1.0.0' =
| [`listeners`](#parameter-listeners) | array | Listeners of the application gateway resource. For default limits, see [Application Gateway limits](https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits#application-gateway-limits). |
| [`loadDistributionPolicies`](#parameter-loaddistributionpolicies) | array | Load distribution policies of the application gateway resource. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. |
| [`privateLinkConfigurations`](#parameter-privatelinkconfigurations) | array | PrivateLink configurations on application gateway. |
| [`probes`](#parameter-probes) | array | Probes of the application gateway resource. |
@@ -1213,11 +1216,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/application-gateway/main.bicep b/modules/network/application-gateway/main.bicep
index d522f1857f..0b042bc9d9 100644
--- a/modules/network/application-gateway/main.bicep
+++ b/modules/network/application-gateway/main.bicep
@@ -371,7 +371,7 @@ module applicationGateway_privateEndpoints '../../network/private-endpoint/main.
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/network/application-security-group/README.md b/modules/network/application-security-group/README.md
index ec025813eb..f86e110e60 100644
--- a/modules/network/application-security-group/README.md
+++ b/modules/network/application-security-group/README.md
@@ -88,7 +88,10 @@ module applicationSecurityGroup 'br:bicep/modules/network.application-security-g
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -130,7 +133,7 @@ module applicationSecurityGroup 'br:bicep/modules/network.application-security-g
| :-- | :-- | :-- |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
@@ -150,11 +153,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/azure-firewall/README.md b/modules/network/azure-firewall/README.md
index b758a08607..c437b47819 100644
--- a/modules/network/azure-firewall/README.md
+++ b/modules/network/azure-firewall/README.md
@@ -358,7 +358,10 @@ module azureFirewall 'br:bicep/modules/network.azure-firewall:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"networkRuleCollections": {
"value": [
@@ -765,7 +768,7 @@ module azureFirewall 'br:bicep/modules/network.azure-firewall:1.0.0' = {
| [`firewallPolicyId`](#parameter-firewallpolicyid) | string | Resource ID of the Firewall Policy that should be attached. |
| [`isCreateDefaultPublicIP`](#parameter-iscreatedefaultpublicip) | bool | Specifies if a Public IP should be created by default if one is not provided. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`managementIPAddressObject`](#parameter-managementipaddressobject) | object | Specifies the properties of the Management Public IP to create and be used by Azure Firewall. If it's not provided and managementIPResourceID is empty, a '-mip' suffix will be appended to the Firewall's name. |
| [`managementIPResourceID`](#parameter-managementipresourceid) | string | The Management Public IP resource ID to associate to the AzureFirewallManagementSubnet. If empty, then the Management Public IP that is created as part of this module will be applied to the AzureFirewallManagementSubnet. |
| [`natRuleCollections`](#parameter-natrulecollections) | array | Collection of NAT rule collections used by Azure Firewall. |
@@ -887,11 +890,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `managementIPAddressObject`
diff --git a/modules/network/bastion-host/README.md b/modules/network/bastion-host/README.md
index 954954a006..0a6a4c85fe 100644
--- a/modules/network/bastion-host/README.md
+++ b/modules/network/bastion-host/README.md
@@ -134,7 +134,10 @@ module bastionHost 'br:bicep/modules/network.bastion-host:1.0.0' = {
"value": false
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -369,7 +372,7 @@ module bastionHost 'br:bicep/modules/network.bastion-host:1.0.0' = {
| [`enableShareableLink`](#parameter-enableshareablelink) | bool | Choose to disable or enable Shareable Link. |
| [`isCreateDefaultPublicIP`](#parameter-iscreatedefaultpublicip) | bool | Specifies if a Public IP should be created by default if one is not provided. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`publicIPAddressObject`](#parameter-publicipaddressobject) | object | Specifies the properties of the Public IP to create and be used by Azure Bastion. If it's not provided and publicIPAddressResourceId is empty, a '-pip' suffix will be appended to the Bastion's name. |
| [`roleAssignments`](#parameter-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'. |
| [`scaleUnits`](#parameter-scaleunits) | int | The scale units for the Bastion Host resource. |
@@ -484,11 +487,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/connection/README.md b/modules/network/connection/README.md
index 59df1f4289..f43ea0a938 100644
--- a/modules/network/connection/README.md
+++ b/modules/network/connection/README.md
@@ -96,7 +96,10 @@ module connection 'br:bicep/modules/network.connection:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"tags": {
"value": {
@@ -146,7 +149,7 @@ module connection 'br:bicep/modules/network.connection:1.0.0' = {
| [`expressRouteGatewayBypass`](#parameter-expressroutegatewaybypass) | bool | Bypass ExpressRoute Gateway for data forwarding. Only available when connection connectionType is Express Route. |
| [`localNetworkGateway2`](#parameter-localnetworkgateway2) | object | The local network gateway. Used for connection type [IPsec]. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the connectionType of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`peer`](#parameter-peer) | object | The remote peer. Used for connection connectionType [ExpressRoute]. |
| [`routingWeight`](#parameter-routingweight) | int | The weight added to routes learned from this BGP speaker. |
| [`tags`](#parameter-tags) | object | Tags of the resource. |
@@ -244,11 +247,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the connectionType of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/ddos-protection-plan/README.md b/modules/network/ddos-protection-plan/README.md
index d233dd56ff..55b6ee35f8 100644
--- a/modules/network/ddos-protection-plan/README.md
+++ b/modules/network/ddos-protection-plan/README.md
@@ -89,7 +89,10 @@ module ddosProtectionPlan 'br:bicep/modules/network.ddos-protection-plan:1.0.0'
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -179,7 +182,7 @@ module ddosProtectionPlan 'br:bicep/modules/network.ddos-protection-plan:1.0.0'
| :-- | :-- | :-- |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
@@ -199,11 +202,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/dns-forwarding-ruleset/README.md b/modules/network/dns-forwarding-ruleset/README.md
index 786f79447d..c6774af681 100644
--- a/modules/network/dns-forwarding-ruleset/README.md
+++ b/modules/network/dns-forwarding-ruleset/README.md
@@ -130,7 +130,10 @@ module dnsForwardingRuleset 'br:bicep/modules/network.dns-forwarding-ruleset:1.0
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -235,7 +238,7 @@ module dnsForwardingRuleset 'br:bicep/modules/network.dns-forwarding-ruleset:1.0
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`forwardingRules`](#parameter-forwardingrules) | array | Array of forwarding rules. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
| [`vNetLinks`](#parameter-vnetlinks) | array | Array of virtual network links. |
@@ -269,11 +272,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/dns-resolver/README.md b/modules/network/dns-resolver/README.md
index 682f0e5b10..0b3ae78e7f 100644
--- a/modules/network/dns-resolver/README.md
+++ b/modules/network/dns-resolver/README.md
@@ -139,7 +139,7 @@ module dnsResolver 'br:bicep/modules/network.dns-resolver:1.0.0' = {
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`inboundEndpoints`](#parameter-inboundendpoints) | array | Inbound Endpoints for Private DNS Resolver. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`outboundEndpoints`](#parameter-outboundendpoints) | array | Outbound Endpoints for Private DNS Resolver. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
@@ -167,11 +167,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/dns-zone/README.md b/modules/network/dns-zone/README.md
index ab69184217..3d4407d678 100644
--- a/modules/network/dns-zone/README.md
+++ b/modules/network/dns-zone/README.md
@@ -321,7 +321,10 @@ module dnsZone 'br:bicep/modules/network.dns-zone:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"mx": {
"value": [
@@ -535,7 +538,7 @@ module dnsZone 'br:bicep/modules/network.dns-zone:1.0.0' = {
| [`cname`](#parameter-cname) | array | Array of CNAME records. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | The location of the dnsZone. Should be global. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`mx`](#parameter-mx) | array | Array of MX records. |
| [`ns`](#parameter-ns) | array | Array of NS records. |
| [`ptr`](#parameter-ptr) | array | Array of PTR records. |
@@ -589,11 +592,30 @@ The location of the dnsZone. Should be global.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `mx`
diff --git a/modules/network/express-route-circuit/README.md b/modules/network/express-route-circuit/README.md
index b8f4687a47..95c6548f62 100644
--- a/modules/network/express-route-circuit/README.md
+++ b/modules/network/express-route-circuit/README.md
@@ -124,7 +124,10 @@ module expressRouteCircuit 'br:bicep/modules/network.express-route-circuit:1.0.0
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -246,7 +249,7 @@ module expressRouteCircuit 'br:bicep/modules/network.express-route-circuit:1.0.0
| [`expressRoutePortResourceId`](#parameter-expressrouteportresourceid) | string | The reference to the ExpressRoutePort resource when the circuit is provisioned on an ExpressRoutePort resource. Available when configuring Express Route Direct. |
| [`globalReachEnabled`](#parameter-globalreachenabled) | bool | Flag denoting global reach status. To enable ExpressRoute Global Reach between different geopolitical regions, your circuits must be Premium SKU. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`peerASN`](#parameter-peerasn) | int | The autonomous system number of the customer/connectivity provider. |
| [`peering`](#parameter-peering) | bool | Enabled BGP peering type for the Circuit. |
| [`peeringType`](#parameter-peeringtype) | string | BGP peering type for the Circuit. Choose from AzurePrivatePeering, AzurePublicPeering or MicrosoftPeering. |
@@ -360,11 +363,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/express-route-gateway/README.md b/modules/network/express-route-gateway/README.md
index 668611a8ca..9042aa9cd3 100644
--- a/modules/network/express-route-gateway/README.md
+++ b/modules/network/express-route-gateway/README.md
@@ -100,7 +100,10 @@ module expressRouteGateway 'br:bicep/modules/network.express-route-gateway:1.0.0
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -198,7 +201,7 @@ module expressRouteGateway 'br:bicep/modules/network.express-route-gateway:1.0.0
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`expressRouteConnections`](#parameter-expressrouteconnections) | array | List of ExpressRoute connections to the ExpressRoute gateway. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the Firewall policy resource. |
@@ -246,11 +249,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/front-door-web-application-firewall-policy/README.md b/modules/network/front-door-web-application-firewall-policy/README.md
index 2a9bd01464..1503783dc9 100644
--- a/modules/network/front-door-web-application-firewall-policy/README.md
+++ b/modules/network/front-door-web-application-firewall-policy/README.md
@@ -202,7 +202,10 @@ module frontDoorWebApplicationFirewallPolicy 'br:bicep/modules/network.front-doo
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"managedRules": {
"value": {
@@ -314,7 +317,7 @@ module frontDoorWebApplicationFirewallPolicy 'br:bicep/modules/network.front-doo
| [`customRules`](#parameter-customrules) | object | The custom rules inside the policy. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`managedRules`](#parameter-managedrules) | object | Describes the managedRules structure. |
| [`policySettings`](#parameter-policysettings) | object | The PolicySettings for policy. |
| [`roleAssignments`](#parameter-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'. |
@@ -344,11 +347,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `managedRules`
diff --git a/modules/network/front-door/README.md b/modules/network/front-door/README.md
index f2f83732a0..e0106bd90b 100644
--- a/modules/network/front-door/README.md
+++ b/modules/network/front-door/README.md
@@ -279,7 +279,10 @@ module frontDoor 'br:bicep/modules/network.front-door:1.0.0' = {
"value": "Disabled"
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -553,7 +556,7 @@ module frontDoor 'br:bicep/modules/network.front-door:1.0.0' = {
| [`enforceCertificateNameCheck`](#parameter-enforcecertificatenamecheck) | string | Enforce certificate name check of the frontdoor resource. |
| [`friendlyName`](#parameter-friendlyname) | string | Friendly name of the frontdoor resource. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`metricsToEnable`](#parameter-metricstoenable) | array | The name of metrics that will be streamed. |
| [`roleAssignments`](#parameter-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'. |
| [`sendRecvTimeoutSeconds`](#parameter-sendrecvtimeoutseconds) | int | Certificate name check time of the frontdoor resource. |
@@ -656,11 +659,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `metricsToEnable`
diff --git a/modules/network/ip-group/README.md b/modules/network/ip-group/README.md
index 890b0bfd2a..d4e54a7b7e 100644
--- a/modules/network/ip-group/README.md
+++ b/modules/network/ip-group/README.md
@@ -99,7 +99,10 @@ module ipGroup 'br:bicep/modules/network.ip-group:1.0.0' = {
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -190,7 +193,7 @@ module ipGroup 'br:bicep/modules/network.ip-group:1.0.0' = {
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`ipAddresses`](#parameter-ipaddresses) | array | IpAddresses/IpAddressPrefixes in the IpGroups resource. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Resource tags. |
@@ -217,11 +220,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/load-balancer/README.md b/modules/network/load-balancer/README.md
index e4d7ff7751..046fd30771 100644
--- a/modules/network/load-balancer/README.md
+++ b/modules/network/load-balancer/README.md
@@ -255,7 +255,10 @@ module loadBalancer 'br:bicep/modules/network.load-balancer:1.0.0' = {
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"outboundRules": {
"value": [
@@ -611,7 +614,7 @@ module loadBalancer 'br:bicep/modules/network.load-balancer:1.0.0' = {
| [`inboundNatRules`](#parameter-inboundnatrules) | array | Collection of inbound NAT Rules used by a load balancer. Defining inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with individual virtual machines cannot reference an Inbound NAT pool. They have to reference individual inbound NAT rules. |
| [`loadBalancingRules`](#parameter-loadbalancingrules) | array | Array of objects containing all load balancing rules. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`outboundRules`](#parameter-outboundrules) | array | The outbound rules. |
| [`probes`](#parameter-probes) | array | Array of objects containing all probes, these are references in the load balancing rules. |
| [`roleAssignments`](#parameter-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'. |
@@ -704,11 +707,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/local-network-gateway/README.md b/modules/network/local-network-gateway/README.md
index a0348467c4..463aeea4d3 100644
--- a/modules/network/local-network-gateway/README.md
+++ b/modules/network/local-network-gateway/README.md
@@ -109,7 +109,10 @@ module localNetworkGateway 'br:bicep/modules/network.local-network-gateway:1.0.0
"value": "192.168.1.5"
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -217,7 +220,7 @@ module localNetworkGateway 'br:bicep/modules/network.local-network-gateway:1.0.0
| [`localBgpPeeringAddress`](#parameter-localbgppeeringaddress) | string | The BGP peering address and BGP identifier of this BGP speaker. Not providing this value will automatically disable BGP on this Local Network Gateway resource. |
| [`localPeerWeight`](#parameter-localpeerweight) | string | The weight added to routes learned from this BGP speaker. This will only take effect if both the localAsn and the localBgpPeeringAddress values are provided. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
@@ -277,11 +280,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/nat-gateway/README.md b/modules/network/nat-gateway/README.md
index fc7783084d..2e759c3bfe 100644
--- a/modules/network/nat-gateway/README.md
+++ b/modules/network/nat-gateway/README.md
@@ -107,7 +107,10 @@ module natGateway 'br:bicep/modules/network.nat-gateway:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"natGatewayPublicIpAddress": {
"value": true
@@ -161,7 +164,7 @@ module natGateway 'br:bicep/modules/network.nat-gateway:1.0.0' = {
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`idleTimeoutInMinutes`](#parameter-idletimeoutinminutes) | int | The idle timeout of the NAT gateway. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`natGatewayPipName`](#parameter-natgatewaypipname) | string | Specifies the name of the Public IP used by the NAT Gateway. If it's not provided, a '-pip' suffix will be appended to the Bastion's name. |
| [`natGatewayPublicIpAddress`](#parameter-natgatewaypublicipaddress) | bool | Use to have a new Public IP Address created for the NAT Gateway. |
| [`publicIpAddresses`](#parameter-publicipaddresses) | array | Existing Public IP Address resource names to use for the NAT Gateway. |
@@ -252,11 +255,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/network-interface/README.md b/modules/network/network-interface/README.md
index 82c12c3ece..be06487b77 100644
--- a/modules/network/network-interface/README.md
+++ b/modules/network/network-interface/README.md
@@ -156,7 +156,10 @@ module networkInterface 'br:bicep/modules/network.network-interface:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -273,7 +276,7 @@ module networkInterface 'br:bicep/modules/network.network-interface:1.0.0' = {
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`enableIPForwarding`](#parameter-enableipforwarding) | bool | Indicates whether IP forwarding is enabled on this network interface. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`networkSecurityGroupResourceId`](#parameter-networksecuritygroupresourceid) | string | The network security group (NSG) to attach to the network interface. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
@@ -387,11 +390,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/network-manager/README.md b/modules/network/network-manager/README.md
index 3d9b5b3f77..07fd87d1d6 100644
--- a/modules/network/network-manager/README.md
+++ b/modules/network/network-manager/README.md
@@ -325,7 +325,10 @@ module networkManager 'br:bicep/modules/network.network-manager:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"networkGroups": {
"value": [
@@ -512,7 +515,7 @@ module networkManager 'br:bicep/modules/network.network-manager:1.0.0' = {
| [`description`](#parameter-description) | string | A description of the network manager. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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'. |
| [`scopeConnections`](#parameter-scopeconnections) | array | Scope Connections to create for the network manager. Allows network manager to manage resources from another tenant. Supports management groups or subscriptions from another tenant. |
| [`securityAdminConfigurations`](#parameter-securityadminconfigurations) | array | Security Admin Configurations, Rule Collections and Rules to create for the network manager. Azure Virtual Network Manager provides two different types of configurations you can deploy across your virtual networks, one of them being a SecurityAdmin configuration. A security admin configuration contains a set of rule collections. Each rule collection contains one or more security admin rules. You then associate the rule collection with the network groups that you want to apply the security admin rules to. |
@@ -548,11 +551,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/network-security-group/README.md b/modules/network/network-security-group/README.md
index ffbec83ea4..0428a3fe08 100644
--- a/modules/network/network-security-group/README.md
+++ b/modules/network/network-security-group/README.md
@@ -171,7 +171,10 @@ module networkSecurityGroup 'br:bicep/modules/network.network-security-group:1.0
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -334,7 +337,7 @@ module networkSecurityGroup 'br:bicep/modules/network.network-security-group:1.0
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`flushConnection`](#parameter-flushconnection) | bool | When enabled, flows created from Network Security Group connections will be re-evaluated when rules are updates. Initial enablement will trigger re-evaluation. Network Security Group connection flushing is not available in all regions. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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'. |
| [`securityRules`](#parameter-securityrules) | array | Array of Security Rules to deploy to the Network Security Group. When not provided, an NSG including only the built-in roles will be deployed. |
| [`tags`](#parameter-tags) | object | Tags of the NSG resource. |
@@ -405,11 +408,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/network-watcher/README.md b/modules/network/network-watcher/README.md
index 9019a60077..d5c48189bd 100644
--- a/modules/network/network-watcher/README.md
+++ b/modules/network/network-watcher/README.md
@@ -308,7 +308,7 @@ module networkWatcher 'br:bicep/modules/network.network-watcher:1.0.0' = {
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`flowLogs`](#parameter-flowlogs) | array | Array that contains the Flow Logs. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`name`](#parameter-name) | string | Name of the Network Watcher resource (hidden). |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
@@ -343,11 +343,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/private-dns-zone/README.md b/modules/network/private-dns-zone/README.md
index f4d2715733..e9f195e023 100644
--- a/modules/network/private-dns-zone/README.md
+++ b/modules/network/private-dns-zone/README.md
@@ -318,7 +318,10 @@ module privateDnsZone 'br:bicep/modules/network.private-dns-zone:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"mx": {
"value": [
@@ -539,7 +542,7 @@ module privateDnsZone 'br:bicep/modules/network.private-dns-zone:1.0.0' = {
| [`cname`](#parameter-cname) | array | Array of CNAME records. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | The location of the PrivateDNSZone. Should be global. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`mx`](#parameter-mx) | array | Array of MX records. |
| [`ptr`](#parameter-ptr) | array | Array of PTR records. |
| [`roleAssignments`](#parameter-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'. |
@@ -586,11 +589,30 @@ The location of the PrivateDNSZone. Should be global.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `mx`
diff --git a/modules/network/private-endpoint/README.md b/modules/network/private-endpoint/README.md
index 42f1a91b03..f09fb62f47 100644
--- a/modules/network/private-endpoint/README.md
+++ b/modules/network/private-endpoint/README.md
@@ -142,7 +142,8 @@ module privateEndpoint 'br:bicep/modules/network.private-endpoint:1.0.0' = {
},
"lock": {
"value": {
- "kind": "CanNotDelete"
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
}
},
"privateDnsZoneResourceIds": {
diff --git a/modules/network/private-link-service/README.md b/modules/network/private-link-service/README.md
index 14623bf726..15bd8feb94 100644
--- a/modules/network/private-link-service/README.md
+++ b/modules/network/private-link-service/README.md
@@ -158,7 +158,10 @@ module privateLinkService 'br:bicep/modules/network.private-link-service:1.0.0'
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -294,7 +297,7 @@ module privateLinkService 'br:bicep/modules/network.private-link-service:1.0.0'
| [`ipConfigurations`](#parameter-ipconfigurations) | array | An array of private link service IP configurations. |
| [`loadBalancerFrontendIpConfigurations`](#parameter-loadbalancerfrontendipconfigurations) | array | An array of references to the load balancer IP configurations. The Private Link service is tied to the frontend IP address of a Standard Load Balancer. All traffic destined for the service will reach the frontend of the SLB. You can configure SLB rules to direct this traffic to appropriate backend pools where your applications are running. Load balancer frontend IP configurations are different than NAT IP configurations. |
| [`location`](#parameter-location) | string | Location for all Resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags to be applied on all resources/resource groups in this deployment. |
| [`visibility`](#parameter-visibility) | object | Controls the exposure settings for your Private Link service. Service providers can choose to limit the exposure to their service to subscriptions with Azure role-based access control (Azure RBAC) permissions, a restricted set of subscriptions, or all Azure subscriptions. |
@@ -357,11 +360,30 @@ Location for all Resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/public-ip-address/README.md b/modules/network/public-ip-address/README.md
index a462079471..59af68c72d 100644
--- a/modules/network/public-ip-address/README.md
+++ b/modules/network/public-ip-address/README.md
@@ -113,7 +113,10 @@ module publicIpAddress 'br:bicep/modules/network.public-ip-address:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"publicIPAllocationMethod": {
"value": "Static"
@@ -226,7 +229,7 @@ module publicIpAddress 'br:bicep/modules/network.public-ip-address:1.0.0' = {
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`fqdn`](#parameter-fqdn) | string | The Fully Qualified Domain Name of the A DNS record associated with the public IP. This is the concatenation of the domainNameLabel and the regionalized DNS zone. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`publicIPAddressVersion`](#parameter-publicipaddressversion) | string | IP address version. |
| [`publicIPAllocationMethod`](#parameter-publicipallocationmethod) | string | The public IP address allocation method. |
| [`publicIPPrefixResourceId`](#parameter-publicipprefixresourceid) | string | Resource ID of the Public IP Prefix object. This is only needed if you want your Public IPs created in a PIP Prefix. |
@@ -326,11 +329,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/public-ip-prefix/README.md b/modules/network/public-ip-prefix/README.md
index 8f26231cc1..f19a2d2c8d 100644
--- a/modules/network/public-ip-prefix/README.md
+++ b/modules/network/public-ip-prefix/README.md
@@ -93,7 +93,10 @@ module publicIpPrefix 'br:bicep/modules/network.public-ip-prefix:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -189,7 +192,7 @@ module publicIpPrefix 'br:bicep/modules/network.public-ip-prefix:1.0.0' = {
| [`customIPPrefix`](#parameter-customipprefix) | object | The customIpPrefix that this prefix is associated with. A custom IP address prefix is a contiguous range of IP addresses owned by an external customer and provisioned into a subscription. When a custom IP prefix is in Provisioned, Commissioning, or Commissioned state, a linked public IP prefix can be created. Either as a subset of the custom IP prefix range or the entire range. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
@@ -216,11 +219,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/route-table/README.md b/modules/network/route-table/README.md
index d9c31186d8..385b178512 100644
--- a/modules/network/route-table/README.md
+++ b/modules/network/route-table/README.md
@@ -99,7 +99,10 @@ module routeTable 'br:bicep/modules/network.route-table:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -202,7 +205,7 @@ module routeTable 'br:bicep/modules/network.route-table:1.0.0' = {
| [`disableBgpRoutePropagation`](#parameter-disablebgproutepropagation) | bool | Switch to disable BGP route propagation. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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'. |
| [`routes`](#parameter-routes) | array | An Array of Routes to be established within the hub route table. |
| [`tags`](#parameter-tags) | object | Tags of the resource. |
@@ -230,11 +233,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/service-endpoint-policy/README.md b/modules/network/service-endpoint-policy/README.md
index 75a8c5bd09..74b5e231a9 100644
--- a/modules/network/service-endpoint-policy/README.md
+++ b/modules/network/service-endpoint-policy/README.md
@@ -102,7 +102,10 @@ module serviceEndpointPolicy 'br:bicep/modules/network.service-endpoint-policy:1
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -208,7 +211,7 @@ module serviceEndpointPolicy 'br:bicep/modules/network.service-endpoint-policy:1
| [`contextualServiceEndpointPolicies`](#parameter-contextualserviceendpointpolicies) | array | An Array of contextual service endpoint policy. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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'. |
| [`serviceAlias`](#parameter-servicealias) | string | The alias indicating if the policy belongs to a service. |
| [`serviceEndpointPolicyDefinitions`](#parameter-serviceendpointpolicydefinitions) | array | An Array of service endpoint policy definitions. |
@@ -237,11 +240,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/trafficmanagerprofile/README.md b/modules/network/trafficmanagerprofile/README.md
index 7d94cadfb8..a483630586 100644
--- a/modules/network/trafficmanagerprofile/README.md
+++ b/modules/network/trafficmanagerprofile/README.md
@@ -111,7 +111,10 @@ module trafficmanagerprofile 'br:bicep/modules/network.trafficmanagerprofile:1.0
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -213,7 +216,7 @@ module trafficmanagerprofile 'br:bicep/modules/network.trafficmanagerprofile:1.0
| [`diagnosticWorkspaceId`](#parameter-diagnosticworkspaceid) | string | Resource ID of the diagnostic log analytics workspace. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`endpoints`](#parameter-endpoints) | array | The list of endpoints in the Traffic Manager profile. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`maxReturn`](#parameter-maxreturn) | int | Maximum number of endpoints to be returned for MultiValue routing type. |
| [`monitorConfig`](#parameter-monitorconfig) | object | The endpoint monitoring settings of the Traffic Manager profile. |
| [`profileStatus`](#parameter-profilestatus) | string | The status of the Traffic Manager profile. |
@@ -290,11 +293,30 @@ The list of endpoints in the Traffic Manager profile.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `maxReturn`
diff --git a/modules/network/virtual-hub/README.md b/modules/network/virtual-hub/README.md
index 1b5bee3540..8196fcc635 100644
--- a/modules/network/virtual-hub/README.md
+++ b/modules/network/virtual-hub/README.md
@@ -146,7 +146,10 @@ module virtualHub 'br:bicep/modules/network.virtual-hub:1.0.0' = {
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"tags": {
"value": {
@@ -239,7 +242,7 @@ module virtualHub 'br:bicep/modules/network.virtual-hub:1.0.0' = {
| [`hubRouteTables`](#parameter-hubroutetables) | array | Route tables to create for the virtual hub. |
| [`hubVirtualNetworkConnections`](#parameter-hubvirtualnetworkconnections) | array | Virtual network connections to create for the virtual hub. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`p2SVpnGatewayId`](#parameter-p2svpngatewayid) | string | Resource ID of the Point-to-Site VPN Gateway to link to. |
| [`preferredRoutingGateway`](#parameter-preferredroutinggateway) | string | The preferred routing gateway types. |
| [`routeTableRoutes`](#parameter-routetableroutes) | array | VirtualHub route tables. |
@@ -302,11 +305,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/virtual-network-gateway/README.md b/modules/network/virtual-network-gateway/README.md
index 883307369a..d1424ab0b2 100644
--- a/modules/network/virtual-network-gateway/README.md
+++ b/modules/network/virtual-network-gateway/README.md
@@ -147,7 +147,10 @@ module virtualNetworkGateway 'br:bicep/modules/network.virtual-network-gateway:1
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"publicIpZones": {
"value": [
@@ -489,7 +492,10 @@ module virtualNetworkGateway 'br:bicep/modules/network.virtual-network-gateway:1
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"natRules": {
"value": [
@@ -603,7 +609,7 @@ module virtualNetworkGateway 'br:bicep/modules/network.virtual-network-gateway:1
| [`gatewayDefaultSiteLocalNetworkGatewayId`](#parameter-gatewaydefaultsitelocalnetworkgatewayid) | string | The reference to the LocalNetworkGateway resource which represents local network site having default routes. Assign Null value in case of removing existing default site setting. |
| [`gatewayPipName`](#parameter-gatewaypipname) | string | Specifies the name of the Public IP used by the Virtual Network Gateway. If it's not provided, a '-pip' suffix will be appended to the gateway's name. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`natRules`](#parameter-natrules) | array | NatRules for virtual network gateway. NAT is supported on the the following SKUs: VpnGw2~5, VpnGw2AZ~5AZ and is supported for IPsec/IKE cross-premises connections only. |
| [`publicIpdiagnosticLogCategoriesToEnable`](#parameter-publicipdiagnosticlogcategoriestoenable) | array | The name of logs that will be streamed. "allLogs" includes all possible logs for the resource. Set to '' to disable log collection. |
| [`publicIpDiagnosticSettingsName`](#parameter-publicipdiagnosticsettingsname) | string | The name of the public IP diagnostic setting, if deployed. If left empty, it defaults to "-diagnosticSettings". |
@@ -788,11 +794,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/virtual-network/README.md b/modules/network/virtual-network/README.md
index 9edcbbf2ea..0710f85a85 100644
--- a/modules/network/virtual-network/README.md
+++ b/modules/network/virtual-network/README.md
@@ -179,7 +179,10 @@ module virtualNetwork 'br:bicep/modules/network.virtual-network:1.0.0' = {
"value": 20
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -444,7 +447,7 @@ module virtualNetwork 'br:bicep/modules/network.virtual-network:1.0.0' = {
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`flowTimeoutInMinutes`](#parameter-flowtimeoutinminutes) | int | The flow timeout in minutes for the Virtual Network, which is used to enable connection tracking for intra-VM flows. Possible values are between 4 and 30 minutes. Default value 0 will set the property to null. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`peerings`](#parameter-peerings) | array | Virtual Network Peerings configurations. |
| [`roleAssignments`](#parameter-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'. |
| [`subnets`](#parameter-subnets) | array | An Array of subnets to deploy to the Virtual Network. |
@@ -546,11 +549,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/virtual-wan/README.md b/modules/network/virtual-wan/README.md
index 074b480409..208fd58305 100644
--- a/modules/network/virtual-wan/README.md
+++ b/modules/network/virtual-wan/README.md
@@ -102,7 +102,10 @@ module virtualWan 'br:bicep/modules/network.virtual-wan:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -198,7 +201,7 @@ module virtualWan 'br:bicep/modules/network.virtual-wan:1.0.0' = {
| [`disableVpnEncryption`](#parameter-disablevpnencryption) | bool | VPN encryption to be disabled or not. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location where all resources will be created. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
| [`type`](#parameter-type) | string | The type of the Virtual WAN. |
@@ -240,11 +243,30 @@ Location where all resources will be created.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/vpn-gateway/README.md b/modules/network/vpn-gateway/README.md
index 6627d5fe95..5328158034 100644
--- a/modules/network/vpn-gateway/README.md
+++ b/modules/network/vpn-gateway/README.md
@@ -127,7 +127,10 @@ module vpnGateway 'br:bicep/modules/network.vpn-gateway:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"natRules": {
"value": [
@@ -249,7 +252,7 @@ module vpnGateway 'br:bicep/modules/network.vpn-gateway:1.0.0' = {
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`isRoutingPreferenceInternet`](#parameter-isroutingpreferenceinternet) | bool | Enable routing preference property for the public IP interface of the VPN gateway. |
| [`location`](#parameter-location) | string | Location where all resources will be created. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`natRules`](#parameter-natrules) | array | List of all the NAT Rules to associate with the gateway. |
| [`tags`](#parameter-tags) | object | Tags of the resource. |
| [`vpnConnections`](#parameter-vpnconnections) | array | The VPN connections to create in the VPN gateway. |
@@ -292,11 +295,30 @@ Location where all resources will be created.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/network/vpn-site/README.md b/modules/network/vpn-site/README.md
index fb1536ea28..c04dae993b 100644
--- a/modules/network/vpn-site/README.md
+++ b/modules/network/vpn-site/README.md
@@ -139,7 +139,10 @@ module vpnSite 'br:bicep/modules/network.vpn-site:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"o365Policy": {
"value": {
@@ -297,7 +300,7 @@ module vpnSite 'br:bicep/modules/network.vpn-site:1.0.0' = {
| [`ipAddress`](#parameter-ipaddress) | string | The IP-address for the VPN-site. Note: This is a deprecated property, please use the corresponding VpnSiteLinks property instead. |
| [`isSecuritySite`](#parameter-issecuritysite) | bool | IsSecuritySite flag. |
| [`location`](#parameter-location) | string | Location where all resources will be created. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`o365Policy`](#parameter-o365policy) | object | The Office365 breakout policy. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
@@ -354,11 +357,30 @@ Location where all resources will be created.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/operational-insights/workspace/README.md b/modules/operational-insights/workspace/README.md
index 054fa4a406..e5ce2697aa 100644
--- a/modules/operational-insights/workspace/README.md
+++ b/modules/operational-insights/workspace/README.md
@@ -464,7 +464,10 @@ module workspace 'br:bicep/modules/operational-insights.workspace:1.0.0' = {
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"publicNetworkAccessForIngestion": {
"value": "Disabled"
@@ -900,7 +903,10 @@ module workspace 'br:bicep/modules/operational-insights.workspace:1.0.0' = {
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"publicNetworkAccessForIngestion": {
"value": "Disabled"
@@ -1045,7 +1051,7 @@ module workspace 'br:bicep/modules/operational-insights.workspace:1.0.0' = {
| [`gallerySolutions`](#parameter-gallerysolutions) | array | List of gallerySolutions to be created in the log analytics workspace. |
| [`linkedServices`](#parameter-linkedservices) | array | List of services to be linked. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`publicNetworkAccessForIngestion`](#parameter-publicnetworkaccessforingestion) | string | The network access type for accessing Log Analytics ingestion. |
| [`publicNetworkAccessForQuery`](#parameter-publicnetworkaccessforquery) | string | The network access type for accessing Log Analytics query. |
| [`roleAssignments`](#parameter-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'. |
@@ -1182,11 +1188,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/power-bi-dedicated/capacity/README.md b/modules/power-bi-dedicated/capacity/README.md
index 1b88bb161e..31bb96531e 100644
--- a/modules/power-bi-dedicated/capacity/README.md
+++ b/modules/power-bi-dedicated/capacity/README.md
@@ -26,13 +26,10 @@ The following section provides usage examples for the module, which were used to
>**Note**: To reference the module, please use the following syntax `br:bicep/modules/power-bi-dedicated.capacity:1.0.0`.
-- [Using large parameter set](#example-1-using-large-parameter-set)
+- [Common](#example-1-common)
- [Using only defaults](#example-2-using-only-defaults)
-### Example 1: _Using large parameter set_
-
-This instance deploys the module with most of its features enabled.
-
+### Example 1: _Common_
@@ -101,7 +98,10 @@ module capacity 'br:bicep/modules/power-bi-dedicated.capacity:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
diff --git a/modules/purview/account/README.md b/modules/purview/account/README.md
index e056859426..9bf78ad43f 100644
--- a/modules/purview/account/README.md
+++ b/modules/purview/account/README.md
@@ -249,7 +249,10 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"managedResourceGroupName": {
"value": "pvacom001-managed-rg"
@@ -417,7 +420,7 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`eventHubPrivateEndpoints`](#parameter-eventhubprivateendpoints) | array | Configuration details for Purview Managed Event Hub namespace private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. Make sure the service property is set to 'namespace'. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`managedResourceGroupName`](#parameter-managedresourcegroupname) | string | The Managed Resource Group Name. A managed Storage Account, and an Event Hubs will be created in the selected subscription for catalog ingestion scenarios. Default is 'managed-rg-'. |
| [`portalPrivateEndpoints`](#parameter-portalprivateendpoints) | array | Configuration details for Purview Portal private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. Make sure the service property is set to 'portal'. |
| [`publicNetworkAccess`](#parameter-publicnetworkaccess) | string | Whether or not public network access is allowed for this resource. For security reasons it should be disabled. If not specified, it will be disabled by default if private endpoints are set. |
@@ -508,11 +511,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `managedResourceGroupName`
diff --git a/modules/purview/account/main.bicep b/modules/purview/account/main.bicep
index c479719a27..c954128917 100644
--- a/modules/purview/account/main.bicep
+++ b/modules/purview/account/main.bicep
@@ -174,7 +174,7 @@ module account_privateEndpoints '../../network/private-endpoint/main.bicep' = [f
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
@@ -198,7 +198,7 @@ module portal_privateEndpoints '../../network/private-endpoint/main.bicep' = [fo
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
@@ -222,7 +222,7 @@ module blob_privateEndpoints '../../network/private-endpoint/main.bicep' = [for
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
@@ -246,7 +246,7 @@ module queue_privateEndpoints '../../network/private-endpoint/main.bicep' = [for
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
@@ -270,7 +270,7 @@ module eventHub_privateEndpoints '../../network/private-endpoint/main.bicep' = [
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/recovery-services/vault/README.md b/modules/recovery-services/vault/README.md
index 85c6c0292c..d395d192bb 100644
--- a/modules/recovery-services/vault/README.md
+++ b/modules/recovery-services/vault/README.md
@@ -637,7 +637,10 @@ module vault 'br:bicep/modules/recovery-services.vault:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"monitoringSettings": {
"value": {
@@ -952,7 +955,7 @@ module vault 'br:bicep/modules/recovery-services.vault:1.0.0' = {
| [`diagnosticWorkspaceId`](#parameter-diagnosticworkspaceid) | string | Resource ID of the diagnostic log analytics workspace. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`monitoringSettings`](#parameter-monitoringsettings) | object | Monitoring Settings of the vault. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. |
| [`protectionContainers`](#parameter-protectioncontainers) | array | List of all protection containers. |
@@ -1054,11 +1057,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `monitoringSettings`
diff --git a/modules/recovery-services/vault/main.bicep b/modules/recovery-services/vault/main.bicep
index 4a5d4733c8..9aba253cc8 100644
--- a/modules/recovery-services/vault/main.bicep
+++ b/modules/recovery-services/vault/main.bicep
@@ -290,7 +290,7 @@ module rsv_privateEndpoints '../../network/private-endpoint/main.bicep' = [for (
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/relay/namespace/README.md b/modules/relay/namespace/README.md
index 150b5bbe83..f6401b007e 100644
--- a/modules/relay/namespace/README.md
+++ b/modules/relay/namespace/README.md
@@ -235,7 +235,10 @@ module namespace 'br:bicep/modules/relay.namespace:1.0.0' = {
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"networkRuleSets": {
"value": {
@@ -485,7 +488,7 @@ module namespace 'br:bicep/modules/relay.namespace:1.0.0' = {
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`hybridConnections`](#parameter-hybridconnections) | array | The hybrid connections to create in the relay namespace. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`networkRuleSets`](#parameter-networkrulesets) | object | Configure networking options for Relay. This object contains IPs/Subnets to allow or restrict access to private endpoints only. For security reasons, it is recommended to configure this object on the Namespace. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. |
| [`roleAssignments`](#parameter-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'. |
@@ -574,11 +577,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/relay/namespace/hybrid-connection/README.md b/modules/relay/namespace/hybrid-connection/README.md
index c2b68a3256..456584f99d 100644
--- a/modules/relay/namespace/hybrid-connection/README.md
+++ b/modules/relay/namespace/hybrid-connection/README.md
@@ -39,7 +39,7 @@ This module deploys a Relay Namespace Hybrid Connection.
| :-- | :-- | :-- |
| [`authorizationRules`](#parameter-authorizationrules) | array | Authorization Rules for the Relay Hybrid Connection. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`requiresClientAuthorization`](#parameter-requiresclientauthorization) | bool | A value indicating if this hybrid connection requires client authorization. |
| [`roleAssignments`](#parameter-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'. |
@@ -59,11 +59,30 @@ Enable telemetry via a Globally Unique Identifier (GUID).
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/relay/namespace/main.bicep b/modules/relay/namespace/main.bicep
index f59024661b..f046b74a59 100644
--- a/modules/relay/namespace/main.bicep
+++ b/modules/relay/namespace/main.bicep
@@ -251,7 +251,7 @@ module namespace_privateEndpoints '../../network/private-endpoint/main.bicep' =
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/relay/namespace/wcf-relay/README.md b/modules/relay/namespace/wcf-relay/README.md
index bb155573b1..84650d63d5 100644
--- a/modules/relay/namespace/wcf-relay/README.md
+++ b/modules/relay/namespace/wcf-relay/README.md
@@ -39,7 +39,7 @@ This module deploys a Relay Namespace WCF Relay.
| :-- | :-- | :-- |
| [`authorizationRules`](#parameter-authorizationrules) | array | Authorization Rules for the WCF Relay. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`requiresClientAuthorization`](#parameter-requiresclientauthorization) | bool | A value indicating if this relay requires client authorization. |
| [`requiresTransportSecurity`](#parameter-requirestransportsecurity) | bool | A value indicating if this relay requires transport security. |
| [`roleAssignments`](#parameter-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'. |
@@ -61,11 +61,30 @@ Enable telemetry via a Globally Unique Identifier (GUID).
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/resource-graph/query/README.md b/modules/resource-graph/query/README.md
index e634f1e83b..3b88be6cc5 100644
--- a/modules/resource-graph/query/README.md
+++ b/modules/resource-graph/query/README.md
@@ -94,7 +94,10 @@ module query 'br:bicep/modules/resource-graph.query:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"queryDescription": {
"value": "An example query to list first 10 resources in the subscription."
@@ -192,7 +195,7 @@ module query 'br:bicep/modules/resource-graph.query:1.0.0' = {
| :-- | :-- | :-- |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`queryDescription`](#parameter-querydescription) | string | The description of a graph query. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
@@ -213,11 +216,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/resources/deployment-script/README.md b/modules/resources/deployment-script/README.md
index b05ab07d14..35e3486eb6 100644
--- a/modules/resources/deployment-script/README.md
+++ b/modules/resources/deployment-script/README.md
@@ -219,7 +219,10 @@ module deploymentScript 'br:bicep/modules/resources.deployment-script:1.0.0' = {
"value": "AzurePowerShell"
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"retentionInterval": {
"value": "P1D"
@@ -277,7 +280,7 @@ module deploymentScript 'br:bicep/modules/resources.deployment-script:1.0.0' = {
| [`environmentVariables`](#parameter-environmentvariables) | secureObject | The environment variables to pass over to the script. The list is passed as an object with a key name "secureList" and the value is the list of environment variables (array). The list must have a 'name' and a 'value' or a 'secretValue' property for each object. |
| [`kind`](#parameter-kind) | string | Type of the script. AzurePowerShell, AzureCLI. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`primaryScriptUri`](#parameter-primaryscripturi) | string | Uri for the external script. This is the entry point for the external script. To run an internal script, use the scriptContent instead. |
| [`retentionInterval`](#parameter-retentioninterval) | string | Interval for which the service retains the script resource after it reaches a terminal state. Resource will be deleted when this duration expires. Duration is based on ISO 8601 pattern (for example P7D means one week). |
| [`runOnce`](#parameter-runonce) | bool | When set to false, script will run every time the template is deployed. When set to true, the script will only run once. |
@@ -368,11 +371,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/resources/resource-group/README.md b/modules/resources/resource-group/README.md
index 96082a1eb5..55dd524743 100644
--- a/modules/resources/resource-group/README.md
+++ b/modules/resources/resource-group/README.md
@@ -89,7 +89,10 @@ module resourceGroup 'br:bicep/modules/resources.resource-group:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -179,7 +182,7 @@ module resourceGroup 'br:bicep/modules/resources.resource-group:1.0.0' = {
| :-- | :-- | :-- |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location of the Resource Group. It uses the deployment's location when not provided. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`managedBy`](#parameter-managedby) | string | The ID of the resource that manages this resource group. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the storage account resource. |
@@ -200,11 +203,30 @@ Location of the Resource Group. It uses the deployment's location when not provi
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `managedBy`
diff --git a/modules/search/search-service/README.md b/modules/search/search-service/README.md
index f23ebae245..e9f3856044 100644
--- a/modules/search/search-service/README.md
+++ b/modules/search/search-service/README.md
@@ -155,7 +155,10 @@ module searchService 'br:bicep/modules/search.search-service:1.0.0' = {
"value": "highDensity"
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"networkRuleSet": {
"value": {
@@ -410,7 +413,7 @@ module searchService 'br:bicep/modules/search.search-service:1.0.0' = {
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via the Customer Usage Attribution ID (GUID). |
| [`hostingMode`](#parameter-hostingmode) | string | Applicable only for the standard3 SKU. You can set this property to enable up to 3 high density partitions that allow up to 1000 indexes, which is much higher than the maximum indexes allowed for any other SKU. For the standard3 SKU, the value is either 'default' or 'highDensity'. For all other SKUs, this value must be 'default'. |
| [`location`](#parameter-location) | string | Location for all Resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`networkRuleSet`](#parameter-networkruleset) | object | Network specific rules that determine how the Azure Cognitive Search service may be reached. |
| [`partitionCount`](#parameter-partitioncount) | int | The number of partitions in the search service; if specified, it can be 1, 2, 3, 4, 6, or 12. Values greater than 1 are only valid for standard SKUs. For 'standard3' services with hostingMode set to 'highDensity', the allowed values are between 1 and 3. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. |
@@ -519,11 +522,30 @@ Location for all Resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/search/search-service/main.bicep b/modules/search/search-service/main.bicep
index 4be0ba1260..ec23b415e8 100644
--- a/modules/search/search-service/main.bicep
+++ b/modules/search/search-service/main.bicep
@@ -224,7 +224,7 @@ module searchService_privateEndpoints '../../network/private-endpoint/main.bicep
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/service-bus/namespace/README.md b/modules/service-bus/namespace/README.md
index 7bce52fbd6..5570075f12 100644
--- a/modules/service-bus/namespace/README.md
+++ b/modules/service-bus/namespace/README.md
@@ -266,7 +266,10 @@ module namespace 'br:bicep/modules/service-bus.namespace:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"minimumTlsVersion": {
"value": "1.2"
@@ -786,7 +789,7 @@ module namespace 'br:bicep/modules/service-bus.namespace:1.0.0' = {
| [`disasterRecoveryConfigs`](#parameter-disasterrecoveryconfigs) | object | The disaster recovery configuration. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`migrationConfigurations`](#parameter-migrationconfigurations) | object | The migration configuration. |
| [`minimumTlsVersion`](#parameter-minimumtlsversion) | string | The minimum TLS version for the cluster to support. |
| [`networkRuleSets`](#parameter-networkrulesets) | object | Configure networking options for Premium SKU Service Bus. This object contains IPs/Subnets to allow or restrict access to private endpoints only. For security reasons, it is recommended to configure this object on the Namespace. |
@@ -927,11 +930,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `migrationConfigurations`
diff --git a/modules/service-bus/namespace/main.bicep b/modules/service-bus/namespace/main.bicep
index 28b5bd7e73..c61e51efbd 100644
--- a/modules/service-bus/namespace/main.bicep
+++ b/modules/service-bus/namespace/main.bicep
@@ -381,7 +381,7 @@ module serviceBusNamespace_privateEndpoints '../../network/private-endpoint/main
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/service-bus/namespace/queue/README.md b/modules/service-bus/namespace/queue/README.md
index e77f024a24..34e5ebc5f7 100644
--- a/modules/service-bus/namespace/queue/README.md
+++ b/modules/service-bus/namespace/queue/README.md
@@ -47,7 +47,7 @@ This module deploys a Service Bus Namespace Queue.
| [`enablePartitioning`](#parameter-enablepartitioning) | bool | A value that indicates whether the queue is to be partitioned across multiple message brokers. |
| [`forwardDeadLetteredMessagesTo`](#parameter-forwarddeadletteredmessagesto) | string | Queue/Topic name to forward the Dead Letter message. |
| [`forwardTo`](#parameter-forwardto) | string | Queue/Topic name to forward the messages. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`lockDuration`](#parameter-lockduration) | string | ISO 8601 timespan duration of a peek-lock; that is, the amount of time that the message is locked for other receivers. The maximum value for LockDuration is 5 minutes; the default value is 1 minute. |
| [`maxDeliveryCount`](#parameter-maxdeliverycount) | int | The maximum delivery count. A message is automatically deadlettered after this number of deliveries. default value is 10. |
| [`maxMessageSizeInKilobytes`](#parameter-maxmessagesizeinkilobytes) | int | Maximum size (in KB) of the message payload that can be accepted by the queue. This property is only used in Premium today and default is 1024. |
@@ -136,11 +136,30 @@ Queue/Topic name to forward the messages.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `lockDuration`
diff --git a/modules/service-bus/namespace/topic/README.md b/modules/service-bus/namespace/topic/README.md
index a554531ad1..00edc62f20 100644
--- a/modules/service-bus/namespace/topic/README.md
+++ b/modules/service-bus/namespace/topic/README.md
@@ -44,7 +44,7 @@ This module deploys a Service Bus Namespace Topic.
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`enableExpress`](#parameter-enableexpress) | bool | A value that indicates whether Express Entities are enabled. An express topic holds a message in memory temporarily before writing it to persistent storage. |
| [`enablePartitioning`](#parameter-enablepartitioning) | bool | A value that indicates whether the topic is to be partitioned across multiple message brokers. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`maxMessageSizeInKilobytes`](#parameter-maxmessagesizeinkilobytes) | int | Maximum size (in KB) of the message payload that can be accepted by the topic. This property is only used in Premium today and default is 1024. |
| [`maxSizeInMegabytes`](#parameter-maxsizeinmegabytes) | int | The maximum size of the topic in megabytes, which is the size of memory allocated for the topic. Default is 1024. |
| [`requiresDuplicateDetection`](#parameter-requiresduplicatedetection) | bool | A value indicating if this topic requires duplicate detection. |
@@ -110,11 +110,30 @@ A value that indicates whether the topic is to be partitioned across multiple me
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `maxMessageSizeInKilobytes`
diff --git a/modules/service-fabric/cluster/README.md b/modules/service-fabric/cluster/README.md
index 841790a974..9a23c79968 100644
--- a/modules/service-fabric/cluster/README.md
+++ b/modules/service-fabric/cluster/README.md
@@ -488,7 +488,10 @@ module cluster 'br:bicep/modules/service-fabric.cluster:1.0.0' = {
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"maxUnusedVersionsToKeep": {
"value": 2
@@ -680,7 +683,7 @@ module cluster 'br:bicep/modules/service-fabric.cluster:1.0.0' = {
| [`fabricSettings`](#parameter-fabricsettings) | array | The list of custom fabric settings to configure the cluster. |
| [`infrastructureServiceManager`](#parameter-infrastructureservicemanager) | bool | Indicates if infrastructure service manager is enabled. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`maxUnusedVersionsToKeep`](#parameter-maxunusedversionstokeep) | int | Number of unused versions per application type to keep. |
| [`notifications`](#parameter-notifications) | array | Indicates a list of notification channels for cluster events. |
| [`reverseProxyCertificate`](#parameter-reverseproxycertificate) | object | Describes the certificate details. |
@@ -798,11 +801,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `managementEndpoint`
diff --git a/modules/signal-r-service/signal-r/README.md b/modules/signal-r-service/signal-r/README.md
index 5f77d02774..c20907e3a1 100644
--- a/modules/signal-r-service/signal-r/README.md
+++ b/modules/signal-r-service/signal-r/README.md
@@ -154,7 +154,10 @@ module signalR 'br:bicep/modules/signal-r-service.signal-r:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"networkAcls": {
"value": {
@@ -299,7 +302,7 @@ module signalR 'br:bicep/modules/signal-r-service.signal-r:1.0.0' = {
| [`kind`](#parameter-kind) | string | The kind of the service. |
| [`liveTraceCatagoriesToEnable`](#parameter-livetracecatagoriestoenable) | array | Control permission for data plane traffic coming from public networks while private endpoint is enabled. |
| [`location`](#parameter-location) | string | The location for the resource. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`networkAcls`](#parameter-networkacls) | object | Networks ACLs, this value contains IPs to allow and/or Subnet information. Can only be set if the 'SKU' is not 'Free_F1'. For security reasons, it is recommended to set the DefaultAction Deny. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. |
| [`publicNetworkAccess`](#parameter-publicnetworkaccess) | string | Whether or not public network access is allowed for this resource. For security reasons it should be disabled. If not specified, it will be disabled by default if private endpoints are set. |
@@ -383,11 +386,30 @@ The location for the resource.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/signal-r-service/signal-r/main.bicep b/modules/signal-r-service/signal-r/main.bicep
index d9cfdc0d1e..ac72680f58 100644
--- a/modules/signal-r-service/signal-r/main.bicep
+++ b/modules/signal-r-service/signal-r/main.bicep
@@ -167,7 +167,7 @@ module signalR_privateEndpoints '../../network/private-endpoint/main.bicep' = [f
serviceResourceId: signalR.id
subnetResourceId: privateEndpoint.subnetResourceId
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/signal-r-service/web-pub-sub/README.md b/modules/signal-r-service/web-pub-sub/README.md
index 6700064c9d..64d344e31e 100644
--- a/modules/signal-r-service/web-pub-sub/README.md
+++ b/modules/signal-r-service/web-pub-sub/README.md
@@ -152,7 +152,10 @@ module webPubSub 'br:bicep/modules/signal-r-service.web-pub-sub:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"networkAcls": {
"value": {
@@ -391,7 +394,7 @@ module webPubSub 'br:bicep/modules/signal-r-service.web-pub-sub:1.0.0' = {
| [`disableLocalAuth`](#parameter-disablelocalauth) | bool | Disables all authentication methods other than AAD authentication. For security reasons, this value should be set to `true`. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | The location for the resource. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`networkAcls`](#parameter-networkacls) | object | Networks ACLs, this value contains IPs to allow and/or Subnet information. Can only be set if the 'SKU' is not 'Free_F1'. For security reasons, it is recommended to set the DefaultAction Deny. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. |
| [`publicNetworkAccess`](#parameter-publicnetworkaccess) | string | Whether or not public network access is allowed for this resource. For security reasons it should be disabled. If not specified, it will be disabled by default if private endpoints are set. |
@@ -446,11 +449,30 @@ The location for the resource.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/signal-r-service/web-pub-sub/main.bicep b/modules/signal-r-service/web-pub-sub/main.bicep
index 11bfa0bcc0..3e566959f7 100644
--- a/modules/signal-r-service/web-pub-sub/main.bicep
+++ b/modules/signal-r-service/web-pub-sub/main.bicep
@@ -127,7 +127,7 @@ module webPubSub_privateEndpoints '../../network/private-endpoint/main.bicep' =
serviceResourceId: webPubSub.id
subnetResourceId: privateEndpoint.subnetResourceId
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/sql/managed-instance/README.md b/modules/sql/managed-instance/README.md
index fa41121d2c..ac4a8865d5 100644
--- a/modules/sql/managed-instance/README.md
+++ b/modules/sql/managed-instance/README.md
@@ -219,7 +219,10 @@ module managedInstance 'br:bicep/modules/sql.managed-instance:1.0.0' = {
"value": "LicenseIncluded"
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"primaryUserAssignedIdentityId": {
"value": ""
@@ -506,7 +509,7 @@ module managedInstance 'br:bicep/modules/sql.managed-instance:1.0.0' = {
| [`keys`](#parameter-keys) | array | The keys to configure. |
| [`licenseType`](#parameter-licensetype) | string | The license type. Possible values are 'LicenseIncluded' (regular price inclusive of a new SQL license) and 'BasePrice' (discounted AHB price for bringing your own SQL licenses). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`managedInstanceCreateMode`](#parameter-managedinstancecreatemode) | string | Specifies the mode of database creation. Default: Regular instance creation. Restore: Creates an instance by restoring a set of backups to specific point in time. RestorePointInTime and SourceManagedInstanceId must be specified. |
| [`minimalTlsVersion`](#parameter-minimaltlsversion) | string | Minimal TLS version allowed. |
| [`proxyOverride`](#parameter-proxyoverride) | string | Connection type used for connecting to the instance. |
@@ -671,11 +674,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `managedInstanceCreateMode`
diff --git a/modules/sql/managed-instance/database/README.md b/modules/sql/managed-instance/database/README.md
index bb78204f3f..9644941f7e 100644
--- a/modules/sql/managed-instance/database/README.md
+++ b/modules/sql/managed-instance/database/README.md
@@ -14,7 +14,7 @@ This module deploys a SQL Managed Instance Database.
| Resource Type | API Version |
| :-- | :-- |
| `Microsoft.Authorization/locks` | [2020-05-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2020-05-01/locks) |
-| `Microsoft.Insights/diagnosticSettings` | [2021-05-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Insights/2021-05-01-preview/diagnosticSettings) |
+| `Microsoft.Insights/diagnosticSettings` | [2021-05-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Insights/diagnosticSettings) |
| `Microsoft.Sql/managedInstances/databases` | [2022-05-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Sql/2022-05-01-preview/managedInstances/databases) |
| `Microsoft.Sql/managedInstances/databases/backupLongTermRetentionPolicies` | [2022-05-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Sql/2022-05-01-preview/managedInstances/databases/backupLongTermRetentionPolicies) |
| `Microsoft.Sql/managedInstances/databases/backupShortTermRetentionPolicies` | [2022-05-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Sql/2022-05-01-preview/managedInstances/databases/backupShortTermRetentionPolicies) |
@@ -56,7 +56,7 @@ This module deploys a SQL Managed Instance Database.
| [`diagnosticWorkspaceId`](#parameter-diagnosticworkspaceid) | string | Resource ID of the diagnostic log analytics workspace. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`restorableDroppedDatabaseId`](#parameter-restorabledroppeddatabaseid) | string | The restorable dropped database resource ID to restore when creating this database. |
| [`tags`](#parameter-tags) | object | Tags of the resource. |
@@ -155,11 +155,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `longTermRetentionBackupResourceId`
diff --git a/modules/sql/server/README.md b/modules/sql/server/README.md
index 18dd77d804..98bd2ab4d8 100644
--- a/modules/sql/server/README.md
+++ b/modules/sql/server/README.md
@@ -328,7 +328,10 @@ module server 'br:bicep/modules/sql.server:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"primaryUserAssignedIdentityId": {
"value": ""
@@ -632,7 +635,7 @@ module server 'br:bicep/modules/sql.server:1.0.0' = {
| [`firewallRules`](#parameter-firewallrules) | array | The firewall rules to create in the server. |
| [`keys`](#parameter-keys) | array | The keys to configure. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`minimalTlsVersion`](#parameter-minimaltlsversion) | string | Minimal TLS version allowed. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. |
| [`publicNetworkAccess`](#parameter-publicnetworkaccess) | string | Whether or not public network access is allowed for this resource. For security reasons it should be disabled. If not specified, it will be disabled by default if private endpoints are set and neither firewall rules nor virtual network rules are set. |
@@ -717,11 +720,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `minimalTlsVersion`
diff --git a/modules/sql/server/main.bicep b/modules/sql/server/main.bicep
index 760fa1989e..bce8cddafd 100644
--- a/modules/sql/server/main.bicep
+++ b/modules/sql/server/main.bicep
@@ -236,7 +236,7 @@ module server_privateEndpoints '../../network/private-endpoint/main.bicep' = [fo
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/storage/storage-account/README.md b/modules/storage/storage-account/README.md
index 924ec349dd..76ae6d27a8 100644
--- a/modules/storage/storage-account/README.md
+++ b/modules/storage/storage-account/README.md
@@ -422,7 +422,10 @@ module storageAccount 'br:bicep/modules/storage.storage-account:1.0.0' = {
]
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"managementPolicyRules": {
"value": [
@@ -902,7 +905,10 @@ module storageAccount 'br:bicep/modules/storage.storage-account:1.0.0' = {
"value": "FileStorage"
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -1057,7 +1063,7 @@ module storageAccount 'br:bicep/modules/storage.storage-account:1.0.0' = {
| [`largeFileSharesState`](#parameter-largefilesharesstate) | string | Allow large file shares if sets to 'Enabled'. It cannot be disabled once it is enabled. Only supported on locally redundant and zone redundant file shares. It cannot be set on FileStorage storage accounts (storage accounts for premium file shares). |
| [`localUsers`](#parameter-localusers) | array | Local users to deploy for SFTP authentication. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`managementPolicyRules`](#parameter-managementpolicyrules) | array | The Storage Account ManagementPolicies Rules. |
| [`minimumTlsVersion`](#parameter-minimumtlsversion) | string | Set the minimum TLS version on request to storage. |
| [`networkAcls`](#parameter-networkacls) | object | Networks ACLs, this value contains IPs to whitelist and/or Subnet information. For security reasons, it is recommended to set the DefaultAction Deny. |
@@ -1299,11 +1305,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `managementPolicyRules`
diff --git a/modules/storage/storage-account/main.bicep b/modules/storage/storage-account/main.bicep
index 6dcf3fd383..e53ed5fe12 100644
--- a/modules/storage/storage-account/main.bicep
+++ b/modules/storage/storage-account/main.bicep
@@ -346,7 +346,7 @@ module storageAccount_privateEndpoints '../../network/private-endpoint/main.bice
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/synapse/private-link-hub/README.md b/modules/synapse/private-link-hub/README.md
index 457ae20372..b48aa3a61c 100644
--- a/modules/synapse/private-link-hub/README.md
+++ b/modules/synapse/private-link-hub/README.md
@@ -113,7 +113,10 @@ module privateLinkHub 'br:bicep/modules/synapse.private-link-hub:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"privateEndpoints": {
"value": [
@@ -227,7 +230,7 @@ module privateLinkHub 'br:bicep/modules/synapse.private-link-hub:1.0.0' = {
| :-- | :-- | :-- |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | The geo-location where the resource lives. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Tags of the resource. |
@@ -248,11 +251,30 @@ The geo-location where the resource lives.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/synapse/private-link-hub/main.bicep b/modules/synapse/private-link-hub/main.bicep
index b898b450ee..cfb50ac903 100644
--- a/modules/synapse/private-link-hub/main.bicep
+++ b/modules/synapse/private-link-hub/main.bicep
@@ -79,7 +79,7 @@ module privateLinkHub_privateEndpoints '../../network/private-endpoint/main.bice
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/synapse/workspace/README.md b/modules/synapse/workspace/README.md
index 7f228e9711..3c1a4f548b 100644
--- a/modules/synapse/workspace/README.md
+++ b/modules/synapse/workspace/README.md
@@ -566,7 +566,7 @@ module workspace 'br:bicep/modules/synapse.workspace:1.0.0' = {
| [`integrationRuntimes`](#parameter-integrationruntimes) | array | The Integration Runtimes to create. |
| [`linkedAccessCheckOnTargetResource`](#parameter-linkedaccesscheckontargetresource) | bool | Linked Access Check On Target Resource. |
| [`location`](#parameter-location) | string | The geo-location where the resource lives. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`managedResourceGroupName`](#parameter-managedresourcegroupname) | string | Workspace managed resource group. The resource group name uniquely identifies the resource group within the user subscriptionId. The resource group name must be no longer than 90 characters long, and must be alphanumeric characters (Char.IsLetterOrDigit()) and '-', '_', '(', ')' and'.'. Note that the name cannot end with '.'. |
| [`managedVirtualNetwork`](#parameter-managedvirtualnetwork) | bool | Enable this to ensure that connection from your workspace to your data sources use Azure Private Links. You can create managed private endpoints to your data sources. |
| [`preventDataExfiltration`](#parameter-preventdataexfiltration) | bool | Prevent Data Exfiltration. |
@@ -734,11 +734,30 @@ The geo-location where the resource lives.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `managedResourceGroupName`
diff --git a/modules/synapse/workspace/main.bicep b/modules/synapse/workspace/main.bicep
index 8e7e9dfb23..0d039d366d 100644
--- a/modules/synapse/workspace/main.bicep
+++ b/modules/synapse/workspace/main.bicep
@@ -295,7 +295,7 @@ module workspace_privateEndpoints '../../network/private-endpoint/main.bicep' =
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/virtual-machine-images/image-template/README.md b/modules/virtual-machine-images/image-template/README.md
index e65476a0f8..9a2d0010eb 100644
--- a/modules/virtual-machine-images/image-template/README.md
+++ b/modules/virtual-machine-images/image-template/README.md
@@ -144,7 +144,10 @@ module imageTemplate 'br:bicep/modules/virtual-machine-images.image-template:1.0
"value": []
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"managedImageName": {
"value": "mi-vmiitcom-001"
@@ -314,7 +317,7 @@ module imageTemplate 'br:bicep/modules/virtual-machine-images.image-template:1.0
| [`excludeFromLatest`](#parameter-excludefromlatest) | bool | Exclude the created Azure Compute Gallery image version from the latest. |
| [`imageReplicationRegions`](#parameter-imagereplicationregions) | array | List of the regions the image produced by this solution should be stored in the Shared Image Gallery. When left empty, the deployment's location will be taken as a default value. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`managedImageName`](#parameter-managedimagename) | string | Name of the managed image that will be created in the AIB resourcegroup. |
| [`osDiskSizeGB`](#parameter-osdisksizegb) | int | Specifies the size of OS disk. |
| [`roleAssignments`](#parameter-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'. |
@@ -391,11 +394,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `managedImageName`
diff --git a/modules/web/connection/README.md b/modules/web/connection/README.md
index a4bda0f809..9675791fd6 100644
--- a/modules/web/connection/README.md
+++ b/modules/web/connection/README.md
@@ -100,7 +100,10 @@ module connection 'br:bicep/modules/web.connection:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -145,7 +148,7 @@ module connection 'br:bicep/modules/web.connection:1.0.0' = {
| [`customParameterValues`](#parameter-customparametervalues) | object | Customized parameter values for specific connections. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location of the deployment. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`nonSecretParameterValues`](#parameter-nonsecretparametervalues) | object | Dictionary of nonsecret parameter values. |
| [`parameterValues`](#parameter-parametervalues) | secureObject | Connection strings or access keys for connection. Example: 'accountName' and 'accessKey' when using blobs. It can change depending on the resource. |
| [`roleAssignments`](#parameter-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'. |
@@ -189,11 +192,30 @@ Location of the deployment.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/web/hosting-environment/README.md b/modules/web/hosting-environment/README.md
index e8c0ff336a..c599b24620 100644
--- a/modules/web/hosting-environment/README.md
+++ b/modules/web/hosting-environment/README.md
@@ -139,7 +139,10 @@ module hostingEnvironment 'br:bicep/modules/web.hosting-environment:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"multiSize": {
"value": "Standard_D1_V2"
@@ -306,7 +309,10 @@ module hostingEnvironment 'br:bicep/modules/web.hosting-environment:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"remoteDebugEnabled": {
"value": true
@@ -387,7 +393,7 @@ module hostingEnvironment 'br:bicep/modules/web.hosting-environment:1.0.0' = {
| [`ipsslAddressCount`](#parameter-ipssladdresscount) | int | Number of IP SSL addresses reserved for the App Service Environment. Cannot be used when kind is set to ASEv3. |
| [`kind`](#parameter-kind) | string | Kind of resource. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`multiSize`](#parameter-multisize) | string | Frontend VM size. Cannot be used when kind is set to ASEv3. |
| [`remoteDebugEnabled`](#parameter-remotedebugenabled) | bool | Property to enable and disable Remote Debug on ASEv3. Ignored when kind is set to ASEv2. |
| [`roleAssignments`](#parameter-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'. |
@@ -550,11 +556,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `multiSize`
diff --git a/modules/web/serverfarm/README.md b/modules/web/serverfarm/README.md
index 86f5578e32..6210f6bb52 100644
--- a/modules/web/serverfarm/README.md
+++ b/modules/web/serverfarm/README.md
@@ -121,7 +121,10 @@ module serverfarm 'br:bicep/modules/web.serverfarm:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"roleAssignments": {
"value": [
@@ -171,7 +174,7 @@ module serverfarm 'br:bicep/modules/web.serverfarm:1.0.0' = {
| [`diagnosticWorkspaceId`](#parameter-diagnosticworkspaceid) | string | Resource ID of the diagnostic log analytics workspace. For security reasons, it is recommended to set diagnostic settings to send data to either storage account, log analytics workspace or event hub. |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`maximumElasticWorkerCount`](#parameter-maximumelasticworkercount) | int | Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan. |
| [`perSiteScaling`](#parameter-persitescaling) | bool | If true, apps assigned to this App Service plan can be scaled independently. If false, apps assigned to this App Service plan will scale to all instances of the plan. |
| [`roleAssignments`](#parameter-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'. |
@@ -248,11 +251,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `maximumElasticWorkerCount`
diff --git a/modules/web/site/README.md b/modules/web/site/README.md
index e1d4b75ec3..ef1ee636d9 100644
--- a/modules/web/site/README.md
+++ b/modules/web/site/README.md
@@ -305,7 +305,10 @@ module site 'br:bicep/modules/web.site:1.0.0' = {
"value": ""
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"privateEndpoints": {
"value": [
@@ -831,7 +834,7 @@ module site 'br:bicep/modules/web.site:1.0.0' = {
| [`hyperV`](#parameter-hyperv) | bool | Hyper-V sandbox. |
| [`keyVaultAccessIdentityResourceId`](#parameter-keyvaultaccessidentityresourceid) | string | The resource ID of the assigned identity to be used to access a key vault with. |
| [`location`](#parameter-location) | string | Location for all Resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. |
| [`publicNetworkAccess`](#parameter-publicnetworkaccess) | string | Whether or not public network access is allowed for this resource. For security reasons it should be disabled. If not specified, it will be disabled by default if private endpoints are set. |
| [`redundancyMode`](#parameter-redundancymode) | string | Site redundancy mode. |
@@ -1058,11 +1061,30 @@ Location for all Resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/web/site/main.bicep b/modules/web/site/main.bicep
index 426caca953..01ac6d6720 100644
--- a/modules/web/site/main.bicep
+++ b/modules/web/site/main.bicep
@@ -414,7 +414,7 @@ module app_privateEndpoints '../../network/private-endpoint/main.bicep' = [for (
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/web/site/slot/README.md b/modules/web/site/slot/README.md
index f5250fc317..4f390f4b1a 100644
--- a/modules/web/site/slot/README.md
+++ b/modules/web/site/slot/README.md
@@ -71,7 +71,7 @@ This module deploys a Web or Function App Deployment Slot.
| [`hyperV`](#parameter-hyperv) | bool | Hyper-V sandbox. |
| [`keyVaultAccessIdentityResourceId`](#parameter-keyvaultaccessidentityresourceid) | string | The resource ID of the assigned identity to be used to access a key vault with. |
| [`location`](#parameter-location) | string | Location for all Resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. |
| [`publicNetworkAccess`](#parameter-publicnetworkaccess) | string | Allow or block all public traffic. |
| [`redundancyMode`](#parameter-redundancymode) | string | Site redundancy mode. |
@@ -296,11 +296,30 @@ Location for all Resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/web/site/slot/main.bicep b/modules/web/site/slot/main.bicep
index 26ceaa5db8..8ae07a51b2 100644
--- a/modules/web/site/slot/main.bicep
+++ b/modules/web/site/slot/main.bicep
@@ -342,7 +342,7 @@ module slot_privateEndpoints '../../../network/private-endpoint/main.bicep' = [f
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
diff --git a/modules/web/static-site/README.md b/modules/web/static-site/README.md
index fc09b08db2..269e77d0d1 100644
--- a/modules/web/static-site/README.md
+++ b/modules/web/static-site/README.md
@@ -150,7 +150,10 @@ module staticSite 'br:bicep/modules/web.static-site:1.0.0' = {
}
},
"lock": {
- "value": "CanNotDelete"
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"privateEndpoints": {
"value": [
@@ -278,7 +281,7 @@ module staticSite 'br:bicep/modules/web.static-site:1.0.0' = {
| [`functionAppSettings`](#parameter-functionappsettings) | object | Function app settings. |
| [`linkedBackend`](#parameter-linkedbackend) | object | Object with "resourceId" and "location" of the a user defined function app. |
| [`location`](#parameter-location) | string | Location for all resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`privateEndpoints`](#parameter-privateendpoints) | array | Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible. Note, requires the 'sku' to be 'Standard'. |
| [`provider`](#parameter-provider) | string | The provider that submitted the last deployment to the primary environment of the static site. |
| [`repositoryToken`](#parameter-repositorytoken) | securestring | The Personal Access Token for accessing the GitHub repository. |
@@ -364,11 +367,30 @@ Location for all resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/web/static-site/main.bicep b/modules/web/static-site/main.bicep
index b4bcc80f50..0097d465d6 100644
--- a/modules/web/static-site/main.bicep
+++ b/modules/web/static-site/main.bicep
@@ -200,7 +200,7 @@ module staticSite_privateEndpoints '../../network/private-endpoint/main.bicep' =
subnetResourceId: privateEndpoint.subnetResourceId
enableDefaultTelemetry: enableReferencedModulesTelemetry
location: contains(privateEndpoint, 'location') ? privateEndpoint.location : reference(split(privateEndpoint.subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location
- lock: contains(privateEndpoint, 'lock') ? privateEndpoint.lock : null
+ lock: privateEndpoint.?lock ?? lock
privateDnsZoneGroupName: contains(privateEndpoint, 'privateDnsZoneGroupName') ? privateEndpoint.privateDnsZoneGroupName : 'default'
privateDnsZoneResourceIds: contains(privateEndpoint, 'privateDnsZoneResourceIds') ? privateEndpoint.privateDnsZoneResourceIds : []
roleAssignments: contains(privateEndpoint, 'roleAssignments') ? privateEndpoint.roleAssignments : []
From d1ba7107e7c8dacee700d73e1efb717bdfa4b440 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 18:44:03 +0200
Subject: [PATCH 10/52] File regen
---
.../configuration-store/main.json | 6 +-
.../automation/automation-account/main.json | 6 +-
modules/batch/batch-account/main.json | 6 +-
modules/cache/redis-enterprise/main.json | 6 +-
modules/cache/redis/main.json | 6 +-
modules/cognitive-services/account/main.json | 6 +-
modules/container-registry/registry/main.json | 6 +-
modules/data-factory/factory/main.json | 6 +-
modules/databricks/workspace/main.json | 6 +-
.../digital-twins-instance/main.json | 6 +-
.../document-db/database-account/main.json | 6 +-
modules/event-grid/domain/main.json | 6 +-
modules/event-grid/topic/main.json | 6 +-
modules/event-hub/namespace/main.json | 6 +-
modules/insights/private-link-scope/main.json | 6 +-
modules/key-vault/vault/main.json | 6 +-
.../workspace/main.json | 6 +-
.../maintenance-configuration/README.md | 41 +++++++++---
.../maintenance-configuration/main.bicep | 21 ++++--
.../maintenance-configuration/main.json | 66 ++++++++++++-------
modules/network/application-gateway/main.json | 6 +-
modules/purview/account/main.json | 22 +++++--
modules/recovery-services/vault/main.json | 6 +-
modules/relay/namespace/main.json | 6 +-
modules/search/search-service/main.json | 6 +-
modules/service-bus/namespace/main.json | 6 +-
modules/signal-r-service/signal-r/main.json | 6 +-
.../signal-r-service/web-pub-sub/main.json | 6 +-
modules/sql/server/main.json | 6 +-
modules/storage/storage-account/main.json | 6 +-
modules/synapse/private-link-hub/main.json | 6 +-
modules/synapse/workspace/main.json | 6 +-
modules/web/site/main.json | 12 ++--
modules/web/site/slot/main.json | 6 +-
modules/web/static-site/main.json | 6 +-
35 files changed, 235 insertions(+), 107 deletions(-)
diff --git a/modules/app-configuration/configuration-store/main.json b/modules/app-configuration/configuration-store/main.json
index 71f664a814..4e1c45795b 100644
--- a/modules/app-configuration/configuration-store/main.json
+++ b/modules/app-configuration/configuration-store/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "17468791848583972607"
+ "templateHash": "3783400318412037439"
},
"name": "App Configuration Stores",
"description": "This module deploys an App Configuration Store.",
@@ -704,7 +704,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/automation/automation-account/main.json b/modules/automation/automation-account/main.json
index 03e14534c8..5ffa04e30b 100644
--- a/modules/automation/automation-account/main.json
+++ b/modules/automation/automation-account/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "7224631368259234684"
+ "templateHash": "1174270229343871055"
},
"name": "Automation Accounts",
"description": "This module deploys an Azure Automation Account.",
@@ -2063,7 +2063,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/batch/batch-account/main.json b/modules/batch/batch-account/main.json
index ee2ca1e6a0..497941e430 100644
--- a/modules/batch/batch-account/main.json
+++ b/modules/batch/batch-account/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "18412099798600531806"
+ "templateHash": "7307637121796009731"
},
"name": "Batch Accounts",
"description": "This module deploys a Batch Account.",
@@ -419,7 +419,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/cache/redis-enterprise/main.json b/modules/cache/redis-enterprise/main.json
index c47f6c96c9..b574498959 100644
--- a/modules/cache/redis-enterprise/main.json
+++ b/modules/cache/redis-enterprise/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "6166425534162277830"
+ "templateHash": "13843091580416749127"
},
"name": "Redis Cache Enterprise",
"description": "This module deploys a Redis Cache Enterprise.",
@@ -695,7 +695,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/cache/redis/main.json b/modules/cache/redis/main.json
index 809cb561ef..5d189f577b 100644
--- a/modules/cache/redis/main.json
+++ b/modules/cache/redis/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "14721248899308225880"
+ "templateHash": "4426369279242408346"
},
"name": "Redis Cache",
"description": "This module deploys a Redis Cache.",
@@ -581,7 +581,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/cognitive-services/account/main.json b/modules/cognitive-services/account/main.json
index b275573c9c..71b31d3c72 100644
--- a/modules/cognitive-services/account/main.json
+++ b/modules/cognitive-services/account/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "10773995091716643755"
+ "templateHash": "18296719440990844872"
},
"name": "Cognitive Services",
"description": "This module deploys a Cognitive Service.",
@@ -490,7 +490,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/container-registry/registry/main.json b/modules/container-registry/registry/main.json
index 4916e20f97..de195acd6c 100644
--- a/modules/container-registry/registry/main.json
+++ b/modules/container-registry/registry/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "5089509635868205582"
+ "templateHash": "15598884416180127975"
},
"name": "Azure Container Registries (ACR)",
"description": "This module deploys an Azure Container Registry (ACR).",
@@ -1208,7 +1208,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/data-factory/factory/main.json b/modules/data-factory/factory/main.json
index 25f320fb42..78a9efea3d 100644
--- a/modules/data-factory/factory/main.json
+++ b/modules/data-factory/factory/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "6655324827358519538"
+ "templateHash": "12584866101218671882"
},
"name": "Data Factories",
"description": "This module deploys a Data Factory.",
@@ -989,7 +989,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/databricks/workspace/main.json b/modules/databricks/workspace/main.json
index a19a50a1df..b33050d59d 100644
--- a/modules/databricks/workspace/main.json
+++ b/modules/databricks/workspace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "4771414046331192124"
+ "templateHash": "12018870674080457266"
},
"name": "Azure Databricks Workspaces",
"description": "This module deploys an Azure Databricks Workspace.",
@@ -631,7 +631,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/digital-twins/digital-twins-instance/main.json b/modules/digital-twins/digital-twins-instance/main.json
index 008dddb0b2..f4b34ccaea 100644
--- a/modules/digital-twins/digital-twins-instance/main.json
+++ b/modules/digital-twins/digital-twins-instance/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "3204203823999755904"
+ "templateHash": "14910327860190049489"
},
"name": "Digital Twins Instances",
"description": "This module deploys an Azure Digital Twins Instance.",
@@ -849,7 +849,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/document-db/database-account/main.json b/modules/document-db/database-account/main.json
index 9e1af312bc..79808d511c 100644
--- a/modules/document-db/database-account/main.json
+++ b/modules/document-db/database-account/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "11058558663697646911"
+ "templateHash": "13886795261024794795"
},
"name": "DocumentDB Database Accounts",
"description": "This module deploys a DocumentDB Database Account.",
@@ -1609,7 +1609,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/event-grid/domain/main.json b/modules/event-grid/domain/main.json
index 1667e5fb09..182826febc 100644
--- a/modules/event-grid/domain/main.json
+++ b/modules/event-grid/domain/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "6985770419689597708"
+ "templateHash": "17128943362553592156"
},
"name": "Event Grid Domains",
"description": "This module deploys an Event Grid Domain.",
@@ -421,7 +421,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/event-grid/topic/main.json b/modules/event-grid/topic/main.json
index 745e99b9f0..5852af83e4 100644
--- a/modules/event-grid/topic/main.json
+++ b/modules/event-grid/topic/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "2449284667286804249"
+ "templateHash": "9509385509021367133"
},
"name": "Event Grid Topics",
"description": "This module deploys an Event Grid Topic.",
@@ -498,7 +498,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/event-hub/namespace/main.json b/modules/event-hub/namespace/main.json
index 81f3cbcd4c..9ac0b5ba7c 100644
--- a/modules/event-hub/namespace/main.json
+++ b/modules/event-hub/namespace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "15684291913042967611"
+ "templateHash": "5400370874559204104"
},
"name": "Event Hub Namespaces",
"description": "This module deploys an Event Hub Namespace.",
@@ -1686,7 +1686,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/insights/private-link-scope/main.json b/modules/insights/private-link-scope/main.json
index 0795a0fe10..fcc3551f3e 100644
--- a/modules/insights/private-link-scope/main.json
+++ b/modules/insights/private-link-scope/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "6332277771556701068"
+ "templateHash": "8075984663327390200"
},
"name": "Azure Monitor Private Link Scopes",
"description": "This module deploys an Azure Monitor Private Link Scope.",
@@ -288,7 +288,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/key-vault/vault/main.json b/modules/key-vault/vault/main.json
index 02d4d7b632..b005c249e1 100644
--- a/modules/key-vault/vault/main.json
+++ b/modules/key-vault/vault/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "15136179719098735073"
+ "templateHash": "7889486567916946321"
},
"name": "Key Vaults",
"description": "This module deploys a Key Vault.",
@@ -1232,7 +1232,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/machine-learning-services/workspace/main.json b/modules/machine-learning-services/workspace/main.json
index 3e9554dda3..6e07dd0f64 100644
--- a/modules/machine-learning-services/workspace/main.json
+++ b/modules/machine-learning-services/workspace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "1531955896967450540"
+ "templateHash": "13016639761646646515"
},
"name": "Machine Learning Services Workspaces",
"description": "This module deploys a Machine Learning Services Workspace.",
@@ -702,7 +702,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/maintenance/maintenance-configuration/README.md b/modules/maintenance/maintenance-configuration/README.md
index 31f87cd13f..07317ba130 100644
--- a/modules/maintenance/maintenance-configuration/README.md
+++ b/modules/maintenance/maintenance-configuration/README.md
@@ -26,10 +26,13 @@ The following section provides usage examples for the module, which were used to
>**Note**: To reference the module, please use the following syntax `br:bicep/modules/maintenance.maintenance-configuration:1.0.0`.
-- [Common](#example-1-common)
-- [Min](#example-2-min)
+- [Using large parameter set](#example-1-using-large-parameter-set)
+- [Using only defaults](#example-2-using-only-defaults)
+
+### Example 1: _Using large parameter set_
+
+This instance deploys the module with most of its features enabled.
-### Example 1: _Common_
@@ -182,7 +185,10 @@ module maintenanceConfiguration 'br:bicep/modules/maintenance.maintenance-config
-### Example 2: _Min_
+### Example 2: _Using only defaults_
+
+This instance deploys the module with the minimum set of required parameters.
+
@@ -244,7 +250,7 @@ module maintenanceConfiguration 'br:bicep/modules/maintenance.maintenance-config
| [`extensionProperties`](#parameter-extensionproperties) | object | Gets or sets extensionProperties of the maintenanceConfiguration. |
| [`installPatches`](#parameter-installpatches) | object | Configuration settings for VM guest patching with Azure Update Manager. |
| [`location`](#parameter-location) | string | Location for all Resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`maintenanceScope`](#parameter-maintenancescope) | string | Gets or sets maintenanceScope of the configuration. |
| [`maintenanceWindow`](#parameter-maintenancewindow) | object | Definition of a MaintenanceWindow. |
| [`namespace`](#parameter-namespace) | string | Gets or sets namespace of the resource. |
@@ -282,11 +288,30 @@ Location for all Resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `maintenanceScope`
diff --git a/modules/maintenance/maintenance-configuration/main.bicep b/modules/maintenance/maintenance-configuration/main.bicep
index 88bd931a1f..7c1563e5cb 100644
--- a/modules/maintenance/maintenance-configuration/main.bicep
+++ b/modules/maintenance/maintenance-configuration/main.bicep
@@ -18,13 +18,8 @@ param extensionProperties object = {}
@description('Optional. Location for all Resources.')
param location string = resourceGroup().location
-@description('Optional. Specify the type of lock.')
-@allowed([
- ''
- 'CanNotDelete'
- 'ReadOnly'
-])
-param lock string = ''
+@description('Optional. The lock settings of the service.')
+param lock lockType
@description('Optional. Gets or sets maintenanceScope of the configuration.')
@allowed([
@@ -127,3 +122,15 @@ output resourceGroupName string = resourceGroup().name
@description('The location the Maintenance Configuration was created in.')
output location string = maintenanceConfiguration.location
+
+// =============== //
+// Definitions //
+// =============== //
+
+type lockType = {
+ @description('Optional. Specify the name of lock.')
+ name: string?
+
+ @description('Optional. Specify the type of lock.')
+ kind: ('CanNotDelete' | 'ReadOnly' | 'None')?
+}?
diff --git a/modules/maintenance/maintenance-configuration/main.json b/modules/maintenance/maintenance-configuration/main.json
index 1215f56f14..06577a9c39 100644
--- a/modules/maintenance/maintenance-configuration/main.json
+++ b/modules/maintenance/maintenance-configuration/main.json
@@ -1,16 +1,44 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
+ "languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "2646666210857505384"
+ "templateHash": "4333184280413980220"
},
"name": "Maintenance Configurations",
"description": "This module deploys a Maintenance Configuration.",
"owner": "Azure/module-maintainers"
},
+ "definitions": {
+ "lockType": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "nullable": true,
+ "metadata": {
+ "description": "Optional. Specify the name of lock."
+ }
+ },
+ "kind": {
+ "type": "string",
+ "allowedValues": [
+ "CanNotDelete",
+ "None",
+ "ReadOnly"
+ ],
+ "nullable": true,
+ "metadata": {
+ "description": "Optional. Specify the type of lock."
+ }
+ }
+ },
+ "nullable": true
+ }
+ },
"parameters": {
"name": {
"type": "string",
@@ -40,15 +68,9 @@
}
},
"lock": {
- "type": "string",
- "defaultValue": "",
- "allowedValues": [
- "",
- "CanNotDelete",
- "ReadOnly"
- ],
+ "$ref": "#/definitions/lockType",
"metadata": {
- "description": "Optional. Specify the type of lock."
+ "description": "Optional. The lock settings of the service."
}
},
"maintenanceScope": {
@@ -114,8 +136,8 @@
}
}
},
- "resources": [
- {
+ "resources": {
+ "defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
@@ -129,7 +151,7 @@
}
}
},
- {
+ "maintenanceConfiguration": {
"type": "Microsoft.Maintenance/maintenanceConfigurations",
"apiVersion": "2023-04-01",
"name": "[parameters('name')]",
@@ -144,21 +166,21 @@
"installPatches": "[if(equals(parameters('maintenanceScope'), 'InGuestPatch'), parameters('installPatches'), null())]"
}
},
- {
- "condition": "[not(empty(parameters('lock')))]",
+ "maintenanceConfiguration_lock": {
+ "condition": "[and(not(empty(coalesce(parameters('lock'), createObject()))), not(equals(tryGet(parameters('lock'), 'kind'), 'None')))]",
"type": "Microsoft.Authorization/locks",
"apiVersion": "2020-05-01",
"scope": "[format('Microsoft.Maintenance/maintenanceConfigurations/{0}', parameters('name'))]",
- "name": "[format('{0}-{1}-lock', parameters('name'), parameters('lock'))]",
+ "name": "[coalesce(tryGet(parameters('lock'), 'name'), format('lock-{0}', parameters('name')))]",
"properties": {
- "level": "[parameters('lock')]",
- "notes": "[if(equals(parameters('lock'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot modify the resource or child resources.')]"
+ "level": "[coalesce(tryGet(parameters('lock'), 'kind'), '')]",
+ "notes": "[if(equals(tryGet(parameters('lock'), 'kind'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot delete or modify the resource or child resources.')]"
},
"dependsOn": [
- "[resourceId('Microsoft.Maintenance/maintenanceConfigurations', parameters('name'))]"
+ "maintenanceConfiguration"
]
},
- {
+ "maintenanceConfiguration_roleAssignments": {
"copy": {
"name": "maintenanceConfiguration_roleAssignments",
"count": "[length(parameters('roleAssignments'))]"
@@ -304,10 +326,10 @@
}
},
"dependsOn": [
- "[resourceId('Microsoft.Maintenance/maintenanceConfigurations', parameters('name'))]"
+ "maintenanceConfiguration"
]
}
- ],
+ },
"outputs": {
"name": {
"type": "string",
@@ -335,7 +357,7 @@
"metadata": {
"description": "The location the Maintenance Configuration was created in."
},
- "value": "[reference(resourceId('Microsoft.Maintenance/maintenanceConfigurations', parameters('name')), '2023-04-01', 'full').location]"
+ "value": "[reference('maintenanceConfiguration', '2023-04-01', 'full').location]"
}
}
}
\ No newline at end of file
diff --git a/modules/network/application-gateway/main.json b/modules/network/application-gateway/main.json
index bac9b3eab1..311fe73b19 100644
--- a/modules/network/application-gateway/main.json
+++ b/modules/network/application-gateway/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "9567891703615152167"
+ "templateHash": "18329589916932941538"
},
"name": "Network Application Gateways",
"description": "This module deploys a Network Application Gateway.",
@@ -593,7 +593,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/purview/account/main.json b/modules/purview/account/main.json
index e785fc3670..fb86ba2b52 100644
--- a/modules/purview/account/main.json
+++ b/modules/purview/account/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "5461425938112973059"
+ "templateHash": "8110028747434281687"
},
"name": "Purview Accounts",
"description": "This module deploys a Purview Account.",
@@ -322,7 +322,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('accountPrivateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('accountPrivateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('accountPrivateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('accountPrivateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('accountPrivateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('accountPrivateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('accountPrivateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('accountPrivateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('accountPrivateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('accountPrivateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('accountPrivateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('accountPrivateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
@@ -849,7 +851,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('portalPrivateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('portalPrivateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('portalPrivateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('portalPrivateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('portalPrivateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('portalPrivateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('portalPrivateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('portalPrivateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('portalPrivateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('portalPrivateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('portalPrivateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('portalPrivateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
@@ -1376,7 +1380,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('storageBlobPrivateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('storageBlobPrivateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('storageBlobPrivateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('storageBlobPrivateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('storageBlobPrivateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('storageBlobPrivateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('storageBlobPrivateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('storageBlobPrivateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('storageBlobPrivateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('storageBlobPrivateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('storageBlobPrivateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('storageBlobPrivateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
@@ -1903,7 +1909,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('storageQueuePrivateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('storageQueuePrivateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('storageQueuePrivateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('storageQueuePrivateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('storageQueuePrivateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('storageQueuePrivateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('storageQueuePrivateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('storageQueuePrivateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('storageQueuePrivateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('storageQueuePrivateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('storageQueuePrivateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('storageQueuePrivateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
@@ -2430,7 +2438,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('eventHubPrivateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('eventHubPrivateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('eventHubPrivateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('eventHubPrivateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('eventHubPrivateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('eventHubPrivateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('eventHubPrivateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('eventHubPrivateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('eventHubPrivateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('eventHubPrivateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('eventHubPrivateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('eventHubPrivateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/recovery-services/vault/main.json b/modules/recovery-services/vault/main.json
index 0923b4d86e..7279f70adf 100644
--- a/modules/recovery-services/vault/main.json
+++ b/modules/recovery-services/vault/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "10835536863288360568"
+ "templateHash": "7509304735116539135"
},
"name": "Recovery Services Vaults",
"description": "This module deploys a Recovery Services Vault.",
@@ -1926,7 +1926,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/relay/namespace/main.json b/modules/relay/namespace/main.json
index 79d218037b..6ecc2df310 100644
--- a/modules/relay/namespace/main.json
+++ b/modules/relay/namespace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "7566101248506523817"
+ "templateHash": "9772930782726431930"
},
"name": "Relay Namespaces",
"description": "This module deploys a Relay Namespace",
@@ -1622,7 +1622,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/search/search-service/main.json b/modules/search/search-service/main.json
index 668e348cf1..d9f5e34419 100644
--- a/modules/search/search-service/main.json
+++ b/modules/search/search-service/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "3130433689552802225"
+ "templateHash": "13836936896028260597"
},
"name": "Search Services",
"description": "This module deploys a Search Service.",
@@ -526,7 +526,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/service-bus/namespace/main.json b/modules/service-bus/namespace/main.json
index d8616f2f98..dbd1f16099 100644
--- a/modules/service-bus/namespace/main.json
+++ b/modules/service-bus/namespace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "15731951409926327801"
+ "templateHash": "2064440867839372163"
},
"name": "Service Bus Namespaces",
"description": "This module deploys a Service Bus Namespace.",
@@ -2249,7 +2249,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/signal-r-service/signal-r/main.json b/modules/signal-r-service/signal-r/main.json
index 03a7ce05d8..2dd19e4b97 100644
--- a/modules/signal-r-service/signal-r/main.json
+++ b/modules/signal-r-service/signal-r/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "7305808861075102392"
+ "templateHash": "855016656643960526"
},
"name": "SignalR Service SignalR",
"description": "This module deploys a SignalR Service SignalR.",
@@ -325,7 +325,9 @@
"value": "[parameters('privateEndpoints')[copyIndex()].subnetResourceId]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/signal-r-service/web-pub-sub/main.json b/modules/signal-r-service/web-pub-sub/main.json
index 12fb3b6219..a89045fd58 100644
--- a/modules/signal-r-service/web-pub-sub/main.json
+++ b/modules/signal-r-service/web-pub-sub/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "6758590720754314081"
+ "templateHash": "13130629422708725988"
},
"name": "SignalR Web PubSub Services",
"description": "This module deploys a SignalR Web PubSub Service.",
@@ -272,7 +272,9 @@
"value": "[parameters('privateEndpoints')[copyIndex()].subnetResourceId]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/sql/server/main.json b/modules/sql/server/main.json
index 110e3c4ea3..6b01072bdf 100644
--- a/modules/sql/server/main.json
+++ b/modules/sql/server/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "5215810648913031869"
+ "templateHash": "18434767573775023159"
},
"name": "Azure SQL Servers",
"description": "This module deploys an Azure SQL Server.",
@@ -1476,7 +1476,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/storage/storage-account/main.json b/modules/storage/storage-account/main.json
index 67d020ccc9..01537a5506 100644
--- a/modules/storage/storage-account/main.json
+++ b/modules/storage/storage-account/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "7623420689086339166"
+ "templateHash": "16183767474766935588"
},
"name": "Storage Accounts",
"description": "This module deploys a Storage Account.",
@@ -766,7 +766,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/synapse/private-link-hub/main.json b/modules/synapse/private-link-hub/main.json
index 2d31fec701..f96d97ebc8 100644
--- a/modules/synapse/private-link-hub/main.json
+++ b/modules/synapse/private-link-hub/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "15056932991564143086"
+ "templateHash": "11576206008807931590"
},
"name": "Azure Synapse Analytics",
"description": "This module deploys an Azure Synapse Analytics (Private Link Hub).",
@@ -305,7 +305,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/synapse/workspace/main.json b/modules/synapse/workspace/main.json
index e942cacbd9..f4f45edcc9 100644
--- a/modules/synapse/workspace/main.json
+++ b/modules/synapse/workspace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "15611146682849530670"
+ "templateHash": "17488808869576693510"
},
"name": "Synapse Workspaces",
"description": "This module deploys a Synapse Workspace.",
@@ -880,7 +880,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/web/site/main.json b/modules/web/site/main.json
index 9dfad5b232..5e16338289 100644
--- a/modules/web/site/main.json
+++ b/modules/web/site/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "7460887566183851311"
+ "templateHash": "6021180257136349048"
},
"name": "Web/Function Apps",
"description": "This module deploys a Web or Function App.",
@@ -889,7 +889,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "11970423164192274405"
+ "templateHash": "9880661409366046894"
},
"name": "Web/Function App Deployment Slots",
"description": "This module deploys a Web or Function App Deployment Slot.",
@@ -1998,7 +1998,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
@@ -2985,7 +2987,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/web/site/slot/main.json b/modules/web/site/slot/main.json
index 23a30a5469..f316337fdd 100644
--- a/modules/web/site/slot/main.json
+++ b/modules/web/site/slot/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "11970423164192274405"
+ "templateHash": "9880661409366046894"
},
"name": "Web/Function App Deployment Slots",
"description": "This module deploys a Web or Function App Deployment Slot.",
@@ -1115,7 +1115,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/web/static-site/main.json b/modules/web/static-site/main.json
index a2816e64ab..342f27617e 100644
--- a/modules/web/static-site/main.json
+++ b/modules/web/static-site/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "6573777061618915096"
+ "templateHash": "6968838794819347181"
},
"name": "Static Web Apps",
"description": "This module deploys a Static Web App.",
@@ -907,7 +907,9 @@
"value": "[variables('enableReferencedModulesTelemetry')]"
},
"location": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'location'), createObject('value', parameters('privateEndpoints')[copyIndex()].location), createObject('value', reference(split(parameters('privateEndpoints')[copyIndex()].subnetResourceId, '/subnets/')[0], '2020-06-01', 'Full').location))]",
- "lock": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'lock'), createObject('value', parameters('privateEndpoints')[copyIndex()].lock), createObject('value', null()))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('privateEndpoints')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"privateDnsZoneGroupName": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneGroupName'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneGroupName), createObject('value', 'default'))]",
"privateDnsZoneResourceIds": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'privateDnsZoneResourceIds'), createObject('value', parameters('privateEndpoints')[copyIndex()].privateDnsZoneResourceIds), createObject('value', createArray()))]",
"roleAssignments": "[if(contains(parameters('privateEndpoints')[copyIndex()], 'roleAssignments'), createObject('value', parameters('privateEndpoints')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
From e2f7e950753b119e3588c0df64bdb2027473dbef Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 18:57:44 +0200
Subject: [PATCH 11/52] small api fixes
---
modules/health-bot/health-bot/README.md | 2 +-
modules/sql/managed-instance/database/README.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/modules/health-bot/health-bot/README.md b/modules/health-bot/health-bot/README.md
index 3b2c460319..db3645ccdd 100644
--- a/modules/health-bot/health-bot/README.md
+++ b/modules/health-bot/health-bot/README.md
@@ -16,7 +16,7 @@ This module deploys an Azure Health Bot.
| :-- | :-- |
| `Microsoft.Authorization/locks` | [2020-05-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2020-05-01/locks) |
| `Microsoft.Authorization/roleAssignments` | [2022-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2022-04-01/roleAssignments) |
-| `Microsoft.HealthBot/healthBots` | [2022-08-08](https://learn.microsoft.com/en-us/azure/templates/Microsoft.HealthBot/healthBots) |
+| `Microsoft.HealthBot/healthBots` | [2022-08-08](https://learn.microsoft.com/en-us/azure/templates/Microsoft.HealthBot/2022-08-08/healthBots) |
## Usage examples
diff --git a/modules/sql/managed-instance/database/README.md b/modules/sql/managed-instance/database/README.md
index 9644941f7e..03ea3aeb62 100644
--- a/modules/sql/managed-instance/database/README.md
+++ b/modules/sql/managed-instance/database/README.md
@@ -14,7 +14,7 @@ This module deploys a SQL Managed Instance Database.
| Resource Type | API Version |
| :-- | :-- |
| `Microsoft.Authorization/locks` | [2020-05-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2020-05-01/locks) |
-| `Microsoft.Insights/diagnosticSettings` | [2021-05-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Insights/diagnosticSettings) |
+| `Microsoft.Insights/diagnosticSettings` | [2021-05-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Insights/2021-05-01-preview/diagnosticSettings) |
| `Microsoft.Sql/managedInstances/databases` | [2022-05-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Sql/2022-05-01-preview/managedInstances/databases) |
| `Microsoft.Sql/managedInstances/databases/backupLongTermRetentionPolicies` | [2022-05-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Sql/2022-05-01-preview/managedInstances/databases/backupLongTermRetentionPolicies) |
| `Microsoft.Sql/managedInstances/databases/backupShortTermRetentionPolicies` | [2022-05-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Sql/2022-05-01-preview/managedInstances/databases/backupShortTermRetentionPolicies) |
From 28178e65e49afd3592e8fa1c17229fde70eeb106 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 19:01:45 +0200
Subject: [PATCH 12/52] Fix for healthcare lock
---
.../workspace/.test/common/main.test.bicep | 5 ++++-
modules/healthcare-apis/workspace/README.md | 17 +++++++++++++----
2 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/modules/healthcare-apis/workspace/.test/common/main.test.bicep b/modules/healthcare-apis/workspace/.test/common/main.test.bicep
index e64ff1eea7..dbc8e30330 100644
--- a/modules/healthcare-apis/workspace/.test/common/main.test.bicep
+++ b/modules/healthcare-apis/workspace/.test/common/main.test.bicep
@@ -70,7 +70,10 @@ module testDeployment '../../main.bicep' = {
name: '${namePrefix}${serviceShort}001'
location: location
publicNetworkAccess: 'Enabled'
- lock: ''
+ lock: {
+ kind: 'CanNotDelete'
+ name: 'myCustomLockName'
+ }
fhirservices: [
{
name: '${namePrefix}-az-fhir-x-001'
diff --git a/modules/healthcare-apis/workspace/README.md b/modules/healthcare-apis/workspace/README.md
index 0bcdd3fd54..150ad94859 100644
--- a/modules/healthcare-apis/workspace/README.md
+++ b/modules/healthcare-apis/workspace/README.md
@@ -32,10 +32,13 @@ The following section provides usage examples for the module, which were used to
>**Note**: To reference the module, please use the following syntax `br:bicep/modules/healthcare-apis.workspace:1.0.0`.
-- [Common](#example-1-common)
+- [Using large parameter set](#example-1-using-large-parameter-set)
- [Using only defaults](#example-2-using-only-defaults)
-### Example 1: _Common_
+### Example 1: _Using large parameter set_
+
+This instance deploys the module with most of its features enabled.
+
@@ -120,7 +123,10 @@ module workspace 'br:bicep/modules/healthcare-apis.workspace:1.0.0' = {
}
]
location: ''
- lock: ''
+ lock: {
+ kind: 'CanNotDelete'
+ name: 'myCustomLockName'
+ }
publicNetworkAccess: 'Enabled'
tags: {
Environment: 'Non-Prod'
@@ -229,7 +235,10 @@ module workspace 'br:bicep/modules/healthcare-apis.workspace:1.0.0' = {
"value": ""
},
"lock": {
- "value": ""
+ "value": {
+ "kind": "CanNotDelete",
+ "name": "myCustomLockName"
+ }
},
"publicNetworkAccess": {
"value": "Enabled"
From a206653f3bfa9fff51ff34c0e0a1377ee372ae64 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 19:04:05 +0200
Subject: [PATCH 13/52] Fixed power BI lock
---
modules/power-bi-dedicated/capacity/README.md | 36 ++++++++--
.../power-bi-dedicated/capacity/main.bicep | 30 ++++----
modules/power-bi-dedicated/capacity/main.json | 69 ++++++++++++-------
3 files changed, 92 insertions(+), 43 deletions(-)
diff --git a/modules/power-bi-dedicated/capacity/README.md b/modules/power-bi-dedicated/capacity/README.md
index 31bb96531e..3f4ceb5003 100644
--- a/modules/power-bi-dedicated/capacity/README.md
+++ b/modules/power-bi-dedicated/capacity/README.md
@@ -14,7 +14,7 @@ This module deploys a Power BI Dedicated Capacity.
| Resource Type | API Version |
| :-- | :-- |
-| `Microsoft.Authorization/locks` | [2016-09-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/locks) |
+| `Microsoft.Authorization/locks` | [2020-05-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2020-05-01/locks) |
| `Microsoft.Authorization/roleAssignments` | [2022-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2022-04-01/roleAssignments) |
| `Microsoft.PowerBIDedicated/capacities` | [2021-01-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.PowerBIDedicated/2021-01-01/capacities) |
@@ -26,10 +26,13 @@ The following section provides usage examples for the module, which were used to
>**Note**: To reference the module, please use the following syntax `br:bicep/modules/power-bi-dedicated.capacity:1.0.0`.
-- [Common](#example-1-common)
+- [Using large parameter set](#example-1-using-large-parameter-set)
- [Using only defaults](#example-2-using-only-defaults)
-### Example 1: _Common_
+### Example 1: _Using large parameter set_
+
+This instance deploys the module with most of its features enabled.
+
@@ -205,7 +208,7 @@ module capacity 'br:bicep/modules/power-bi-dedicated.capacity:1.0.0' = {
| :-- | :-- | :-- |
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via a Globally Unique Identifier (GUID). |
| [`location`](#parameter-location) | string | Location for all Resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`mode`](#parameter-mode) | string | Mode of the resource. |
| [`roleAssignments`](#parameter-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'. |
| [`skuName`](#parameter-skuname) | string | SkuCapacity of the resource. |
@@ -228,11 +231,30 @@ Location for all Resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, NotSpecified, ReadOnly]`
### Parameter: `members`
diff --git a/modules/power-bi-dedicated/capacity/main.bicep b/modules/power-bi-dedicated/capacity/main.bicep
index e6918730b0..7da60eafd3 100644
--- a/modules/power-bi-dedicated/capacity/main.bicep
+++ b/modules/power-bi-dedicated/capacity/main.bicep
@@ -46,14 +46,8 @@ param members array
@description('Optional. Mode of the resource.')
param mode string = 'Gen2'
-@allowed([
- ''
- 'CanNotDelete'
- 'NotSpecified'
- 'ReadOnly'
-])
-@description('Optional. Specify the type of lock.')
-param lock string = ''
+@description('Optional. The lock settings of the service.')
+param lock lockType
@description('Optional. 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\'.')
param roleAssignments array = []
@@ -87,11 +81,11 @@ resource powerbi 'Microsoft.PowerBIDedicated/capacities@2021-01-01' = {
}
}
-resource powerbi_lock 'Microsoft.Authorization/locks@2016-09-01' = if (!empty(lock)) {
- name: '${powerbi.name}-${lock}-lock'
+resource powerbi_lock 'Microsoft.Authorization/locks@2020-05-01' = if (!empty(lock ?? {}) && lock.?kind != 'None') {
+ name: lock.?name ?? 'lock-${name}'
properties: {
- level: lock
- notes: lock == 'CanNotDelete' ? 'Cannot delete resource or child resources.' : 'Cannot modify the resource or child resources.'
+ level: lock.?kind ?? ''
+ notes: lock.?kind == 'CanNotDelete' ? 'Cannot delete resource or child resources.' : 'Cannot delete or modify the resource or child resources.'
}
scope: powerbi
}
@@ -115,3 +109,15 @@ output name string = powerbi.name
@description('The location the resource was deployed into.')
output location string = powerbi.location
+
+// =============== //
+// Definitions //
+// =============== //
+
+type lockType = {
+ @description('Optional. Specify the name of lock.')
+ name: string?
+
+ @description('Optional. Specify the type of lock.')
+ kind: ('CanNotDelete' | 'ReadOnly' | 'None')?
+}?
diff --git a/modules/power-bi-dedicated/capacity/main.json b/modules/power-bi-dedicated/capacity/main.json
index aafdb27cf3..374cd8802c 100644
--- a/modules/power-bi-dedicated/capacity/main.json
+++ b/modules/power-bi-dedicated/capacity/main.json
@@ -1,16 +1,44 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
+ "languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "9399428020393768552"
+ "templateHash": "14918936094313843131"
},
"name": "Power BI Dedicated Capacities",
"description": "This module deploys a Power BI Dedicated Capacity.",
"owner": "Azure/module-maintainers"
},
+ "definitions": {
+ "lockType": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "nullable": true,
+ "metadata": {
+ "description": "Optional. Specify the name of lock."
+ }
+ },
+ "kind": {
+ "type": "string",
+ "allowedValues": [
+ "CanNotDelete",
+ "None",
+ "ReadOnly"
+ ],
+ "nullable": true,
+ "metadata": {
+ "description": "Optional. Specify the type of lock."
+ }
+ }
+ },
+ "nullable": true
+ }
+ },
"parameters": {
"name": {
"type": "string",
@@ -90,16 +118,9 @@
}
},
"lock": {
- "type": "string",
- "defaultValue": "",
- "allowedValues": [
- "",
- "CanNotDelete",
- "NotSpecified",
- "ReadOnly"
- ],
+ "$ref": "#/definitions/lockType",
"metadata": {
- "description": "Optional. Specify the type of lock."
+ "description": "Optional. The lock settings of the service."
}
},
"roleAssignments": {
@@ -110,8 +131,8 @@
}
}
},
- "resources": [
- {
+ "resources": {
+ "defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
@@ -125,7 +146,7 @@
}
}
},
- {
+ "powerbi": {
"type": "Microsoft.PowerBIDedicated/capacities",
"apiVersion": "2021-01-01",
"name": "[parameters('name')]",
@@ -143,21 +164,21 @@
"mode": "[parameters('mode')]"
}
},
- {
- "condition": "[not(empty(parameters('lock')))]",
+ "powerbi_lock": {
+ "condition": "[and(not(empty(coalesce(parameters('lock'), createObject()))), not(equals(tryGet(parameters('lock'), 'kind'), 'None')))]",
"type": "Microsoft.Authorization/locks",
- "apiVersion": "2016-09-01",
+ "apiVersion": "2020-05-01",
"scope": "[format('Microsoft.PowerBIDedicated/capacities/{0}', parameters('name'))]",
- "name": "[format('{0}-{1}-lock', parameters('name'), parameters('lock'))]",
+ "name": "[coalesce(tryGet(parameters('lock'), 'name'), format('lock-{0}', parameters('name')))]",
"properties": {
- "level": "[parameters('lock')]",
- "notes": "[if(equals(parameters('lock'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot modify the resource or child resources.')]"
+ "level": "[coalesce(tryGet(parameters('lock'), 'kind'), '')]",
+ "notes": "[if(equals(tryGet(parameters('lock'), 'kind'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot delete or modify the resource or child resources.')]"
},
"dependsOn": [
- "[resourceId('Microsoft.PowerBIDedicated/capacities', parameters('name'))]"
+ "powerbi"
]
},
- {
+ "powerbi_rbac": {
"copy": {
"name": "powerbi_rbac",
"count": "[length(parameters('roleAssignments'))]"
@@ -232,10 +253,10 @@
}
},
"dependsOn": [
- "[resourceId('Microsoft.PowerBIDedicated/capacities', parameters('name'))]"
+ "powerbi"
]
}
- ],
+ },
"outputs": {
"resourceId": {
"type": "string",
@@ -263,7 +284,7 @@
"metadata": {
"description": "The location the resource was deployed into."
},
- "value": "[reference(resourceId('Microsoft.PowerBIDedicated/capacities', parameters('name')), '2021-01-01', 'full').location]"
+ "value": "[reference('powerbi', '2021-01-01', 'full').location]"
}
}
}
\ No newline at end of file
From dcc0f84ece71e92d9092433158004811b2e5104f Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 19:05:50 +0200
Subject: [PATCH 14/52] Fixed insights data collection
---
.../data-collection-endpoint/README.md | 36 ++++++++--
.../data-collection-endpoint/main.bicep | 29 +++++---
.../data-collection-endpoint/main.json | 68 ++++++++++++-------
3 files changed, 92 insertions(+), 41 deletions(-)
diff --git a/modules/insights/data-collection-endpoint/README.md b/modules/insights/data-collection-endpoint/README.md
index 65a2f07130..77a855bbb2 100644
--- a/modules/insights/data-collection-endpoint/README.md
+++ b/modules/insights/data-collection-endpoint/README.md
@@ -14,7 +14,7 @@ This module deploys a Data Collection Endpoint.
| Resource Type | API Version |
| :-- | :-- |
-| `Microsoft.Authorization/locks` | [2017-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2017-04-01/locks) |
+| `Microsoft.Authorization/locks` | [2020-05-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2020-05-01/locks) |
| `Microsoft.Authorization/roleAssignments` | [2022-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2022-04-01/roleAssignments) |
| `Microsoft.Insights/dataCollectionEndpoints` | [2021-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Insights/2021-04-01/dataCollectionEndpoints) |
@@ -26,10 +26,13 @@ The following section provides usage examples for the module, which were used to
>**Note**: To reference the module, please use the following syntax `br:bicep/modules/insights.data-collection-endpoint:1.0.0`.
-- [Common](#example-1-common)
+- [Using large parameter set](#example-1-using-large-parameter-set)
- [Using only defaults](#example-2-using-only-defaults)
-### Example 1: _Common_
+### Example 1: _Using large parameter set_
+
+This instance deploys the module with most of its features enabled.
+
@@ -188,7 +191,7 @@ module dataCollectionEndpoint 'br:bicep/modules/insights.data-collection-endpoin
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via the Customer Usage Attribution ID (GUID). |
| [`kind`](#parameter-kind) | string | The kind of the resource. |
| [`location`](#parameter-location) | string | Location for all Resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`publicNetworkAccess`](#parameter-publicnetworkaccess) | string | The configuration to set whether network access from public internet to the endpoints are allowed. |
| [`roleAssignments`](#parameter-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`](#parameter-tags) | object | Resource tags. |
@@ -217,11 +220,30 @@ Location for all Resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/insights/data-collection-endpoint/main.bicep b/modules/insights/data-collection-endpoint/main.bicep
index 52427ec886..acff2f2fea 100644
--- a/modules/insights/data-collection-endpoint/main.bicep
+++ b/modules/insights/data-collection-endpoint/main.bicep
@@ -22,13 +22,8 @@ param kind string = 'Linux'
@description('Optional. Location for all Resources.')
param location string = resourceGroup().location
-@description('Optional. Specify the type of lock.')
-@allowed([
- ''
- 'CanNotDelete'
- 'ReadOnly'
-])
-param lock string = ''
+@description('Optional. The lock settings of the service.')
+param lock lockType
@description('Optional. 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\'.')
param roleAssignments array = []
@@ -71,11 +66,11 @@ resource dataCollectionEndpoint 'Microsoft.Insights/dataCollectionEndpoints@2021
}
}
-resource dataCollectionEndpoint_lock 'Microsoft.Authorization/locks@2017-04-01' = if (!empty(lock)) {
- name: '${dataCollectionEndpoint.name}-${lock}-lock'
+resource dataCollectionEndpoint_lock 'Microsoft.Authorization/locks@2020-05-01' = if (!empty(lock ?? {}) && lock.?kind != 'None') {
+ name: lock.?name ?? 'lock-${name}'
properties: {
- level: any(lock)
- notes: lock == 'CanNotDelete' ? 'Cannot delete resource or child resources.' : 'Cannot modify the resource or child resources.'
+ level: lock.?kind ?? ''
+ notes: lock.?kind == 'CanNotDelete' ? 'Cannot delete resource or child resources.' : 'Cannot delete or modify the resource or child resources.'
}
scope: dataCollectionEndpoint
}
@@ -108,3 +103,15 @@ output resourceGroupName string = resourceGroup().name
@description('The location the resource was deployed into.')
output location string = dataCollectionEndpoint.location
+
+// =============== //
+// Definitions //
+// =============== //
+
+type lockType = {
+ @description('Optional. Specify the name of lock.')
+ name: string?
+
+ @description('Optional. Specify the type of lock.')
+ kind: ('CanNotDelete' | 'ReadOnly' | 'None')?
+}?
diff --git a/modules/insights/data-collection-endpoint/main.json b/modules/insights/data-collection-endpoint/main.json
index f40ef19865..1ef931a6cf 100644
--- a/modules/insights/data-collection-endpoint/main.json
+++ b/modules/insights/data-collection-endpoint/main.json
@@ -1,16 +1,44 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
+ "languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "13275626141321439645"
+ "templateHash": "18059348054064453777"
},
"name": "Data Collection Endpoints",
"description": "This module deploys a Data Collection Endpoint.",
"owner": "Azure/module-maintainers"
},
+ "definitions": {
+ "lockType": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "nullable": true,
+ "metadata": {
+ "description": "Optional. Specify the name of lock."
+ }
+ },
+ "kind": {
+ "type": "string",
+ "allowedValues": [
+ "CanNotDelete",
+ "None",
+ "ReadOnly"
+ ],
+ "nullable": true,
+ "metadata": {
+ "description": "Optional. Specify the type of lock."
+ }
+ }
+ },
+ "nullable": true
+ }
+ },
"parameters": {
"name": {
"type": "string",
@@ -44,15 +72,9 @@
}
},
"lock": {
- "type": "string",
- "defaultValue": "",
- "allowedValues": [
- "",
- "CanNotDelete",
- "ReadOnly"
- ],
+ "$ref": "#/definitions/lockType",
"metadata": {
- "description": "Optional. Specify the type of lock."
+ "description": "Optional. The lock settings of the service."
}
},
"roleAssignments": {
@@ -81,8 +103,8 @@
}
}
},
- "resources": [
- {
+ "resources": {
+ "defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
@@ -96,7 +118,7 @@
}
}
},
- {
+ "dataCollectionEndpoint": {
"type": "Microsoft.Insights/dataCollectionEndpoints",
"apiVersion": "2021-04-01",
"name": "[parameters('name')]",
@@ -109,21 +131,21 @@
}
}
},
- {
- "condition": "[not(empty(parameters('lock')))]",
+ "dataCollectionEndpoint_lock": {
+ "condition": "[and(not(empty(coalesce(parameters('lock'), createObject()))), not(equals(tryGet(parameters('lock'), 'kind'), 'None')))]",
"type": "Microsoft.Authorization/locks",
- "apiVersion": "2017-04-01",
+ "apiVersion": "2020-05-01",
"scope": "[format('Microsoft.Insights/dataCollectionEndpoints/{0}', parameters('name'))]",
- "name": "[format('{0}-{1}-lock', parameters('name'), parameters('lock'))]",
+ "name": "[coalesce(tryGet(parameters('lock'), 'name'), format('lock-{0}', parameters('name')))]",
"properties": {
- "level": "[parameters('lock')]",
- "notes": "[if(equals(parameters('lock'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot modify the resource or child resources.')]"
+ "level": "[coalesce(tryGet(parameters('lock'), 'kind'), '')]",
+ "notes": "[if(equals(tryGet(parameters('lock'), 'kind'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot delete or modify the resource or child resources.')]"
},
"dependsOn": [
- "[resourceId('Microsoft.Insights/dataCollectionEndpoints', parameters('name'))]"
+ "dataCollectionEndpoint"
]
},
- {
+ "dataCollectionEndpoint_roleAssignments": {
"copy": {
"name": "dataCollectionEndpoint_roleAssignments",
"count": "[length(parameters('roleAssignments'))]"
@@ -398,10 +420,10 @@
}
},
"dependsOn": [
- "[resourceId('Microsoft.Insights/dataCollectionEndpoints', parameters('name'))]"
+ "dataCollectionEndpoint"
]
}
- ],
+ },
"outputs": {
"name": {
"type": "string",
@@ -429,7 +451,7 @@
"metadata": {
"description": "The location the resource was deployed into."
},
- "value": "[reference(resourceId('Microsoft.Insights/dataCollectionEndpoints', parameters('name')), '2021-04-01', 'full').location]"
+ "value": "[reference('dataCollectionEndpoint', '2021-04-01', 'full').location]"
}
}
}
\ No newline at end of file
From 808e6933f83a9c9538eb09136160845255127aa6 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 19:11:22 +0200
Subject: [PATCH 15/52] Updated RG
---
.../resource-group/.bicep/nested_lock.bicep | 25 ++++
modules/resources/resource-group/README.md | 6 +-
modules/resources/resource-group/main.bicep | 8 +-
modules/resources/resource-group/main.json | 129 +++++++-----------
4 files changed, 76 insertions(+), 92 deletions(-)
create mode 100644 modules/resources/resource-group/.bicep/nested_lock.bicep
diff --git a/modules/resources/resource-group/.bicep/nested_lock.bicep b/modules/resources/resource-group/.bicep/nested_lock.bicep
new file mode 100644
index 0000000000..40ae513015
--- /dev/null
+++ b/modules/resources/resource-group/.bicep/nested_lock.bicep
@@ -0,0 +1,25 @@
+@description('Optional. The lock settings of the service.')
+param lock lockType
+
+@description('Required. The name of the Resource Group.')
+param name string
+
+resource resourceGroup_lock 'Microsoft.Authorization/locks@2020-05-01' = if (!empty(lock ?? {}) && lock.?kind != 'None') {
+ name: lock.?name ?? 'lock-${name}'
+ properties: {
+ level: lock.?kind ?? ''
+ notes: lock.?kind == 'CanNotDelete' ? 'Cannot delete resource or child resources.' : 'Cannot delete or modify the resource or child resources.'
+ }
+}
+
+// =============== //
+// Definitions //
+// =============== //
+
+type lockType = {
+ @description('Optional. Specify the name of lock.')
+ name: string?
+
+ @description('Optional. Specify the type of lock.')
+ kind: ('CanNotDelete' | 'ReadOnly' | 'None')?
+}?
diff --git a/modules/resources/resource-group/README.md b/modules/resources/resource-group/README.md
index 55dd524743..c104241da0 100644
--- a/modules/resources/resource-group/README.md
+++ b/modules/resources/resource-group/README.md
@@ -266,8 +266,4 @@ Tags of the storage account resource.
## Cross-referenced modules
-This section gives you an overview of all local-referenced module files (i.e., other CARML modules that are referenced in this module) and all remote-referenced files (i.e., Bicep modules that are referenced from a Bicep Registry or Template Specs).
-
-| Reference | Type |
-| :-- | :-- |
-| `modules/authorization/lock/resource-group` | Local reference |
+_None_
diff --git a/modules/resources/resource-group/main.bicep b/modules/resources/resource-group/main.bicep
index 7a1500d609..d210a418df 100644
--- a/modules/resources/resource-group/main.bicep
+++ b/modules/resources/resource-group/main.bicep
@@ -46,11 +46,11 @@ resource resourceGroup 'Microsoft.Resources/resourceGroups@2021-04-01' = {
properties: {}
}
-module resourceGroup_lock '../../authorization/lock/resource-group/main.bicep' = if (!empty(lock)) {
- name: '${uniqueString(deployment().name, location)}-${lock}-Lock'
+module resourceGroup_lock '.bicep/nested_lock.bicep' = if (!empty(lock ?? {}) && lock.?kind != 'None') {
+ name: '${uniqueString(deployment().name, location)}-RG-Lock'
params: {
- level: any(lock)
- name: '${resourceGroup.name}-${lock}-lock'
+ lock: lock
+ name: resourceGroup.name
}
scope: resourceGroup
}
diff --git a/modules/resources/resource-group/main.json b/modules/resources/resource-group/main.json
index 4744fa0a19..7c296e5557 100644
--- a/modules/resources/resource-group/main.json
+++ b/modules/resources/resource-group/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "7603780541507519847"
+ "templateHash": "15355408892272442414"
},
"name": "Resource Groups",
"description": "This module deploys a Resource Group.",
@@ -114,10 +114,10 @@
"properties": {}
},
"resourceGroup_lock": {
- "condition": "[not(empty(parameters('lock')))]",
+ "condition": "[and(not(empty(coalesce(parameters('lock'), createObject()))), not(equals(tryGet(parameters('lock'), 'kind'), 'None')))]",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2022-09-01",
- "name": "[format('{0}-{1}-Lock', uniqueString(deployment().name, parameters('location')), parameters('lock'))]",
+ "name": "[format('{0}-RG-Lock', uniqueString(deployment().name, parameters('location')))]",
"resourceGroup": "[parameters('name')]",
"properties": {
"expressionEvaluationOptions": {
@@ -125,113 +125,76 @@
},
"mode": "Incremental",
"parameters": {
- "level": {
+ "lock": {
"value": "[parameters('lock')]"
},
"name": {
- "value": "[format('{0}-{1}-lock', parameters('name'), parameters('lock'))]"
+ "value": "[parameters('name')]"
}
},
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
+ "languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "8961143332409950444"
- },
- "name": "Authorization Locks (Resource Group scope)",
- "description": "This module deploys an Authorization Lock at a Resource Group scope.",
- "owner": "Azure/module-maintainers"
+ "templateHash": "17703781580329850458"
+ }
+ },
+ "definitions": {
+ "lockType": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "nullable": true,
+ "metadata": {
+ "description": "Optional. Specify the name of lock."
+ }
+ },
+ "kind": {
+ "type": "string",
+ "allowedValues": [
+ "CanNotDelete",
+ "None",
+ "ReadOnly"
+ ],
+ "nullable": true,
+ "metadata": {
+ "description": "Optional. Specify the type of lock."
+ }
+ }
+ },
+ "nullable": true
+ }
},
"parameters": {
- "name": {
- "type": "string",
- "defaultValue": "[format('{0}-lock', parameters('level'))]",
+ "lock": {
+ "$ref": "#/definitions/lockType",
"metadata": {
- "description": "Optional. The name of the lock."
+ "description": "Optional. The lock settings of the service."
}
},
- "level": {
- "type": "string",
- "allowedValues": [
- "CanNotDelete",
- "ReadOnly"
- ],
- "metadata": {
- "description": "Required. Set lock level."
- }
- },
- "notes": {
+ "name": {
"type": "string",
- "defaultValue": "[if(equals(parameters('level'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot modify the resource or child resources.')]",
"metadata": {
- "description": "Optional. The decription attached to the lock."
- }
- },
- "enableDefaultTelemetry": {
- "type": "bool",
- "defaultValue": true,
- "metadata": {
- "description": "Optional. Enable telemetry via a Globally Unique Identifier (GUID)."
+ "description": "Required. The name of the Resource Group."
}
}
},
- "resources": [
- {
- "condition": "[parameters('enableDefaultTelemetry')]",
- "type": "Microsoft.Resources/deployments",
- "apiVersion": "2021-04-01",
- "name": "[format('pid-47ed15a6-730a-4827-bcb4-0fd963ffbd82-{0}', uniqueString(deployment().name))]",
- "properties": {
- "mode": "Incremental",
- "template": {
- "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "resources": []
- }
- }
- },
- {
+ "resources": {
+ "resourceGroup_lock": {
+ "condition": "[and(not(empty(coalesce(parameters('lock'), createObject()))), not(equals(tryGet(parameters('lock'), 'kind'), 'None')))]",
"type": "Microsoft.Authorization/locks",
"apiVersion": "2020-05-01",
- "name": "[parameters('name')]",
+ "name": "[coalesce(tryGet(parameters('lock'), 'name'), format('lock-{0}', parameters('name')))]",
"properties": {
- "level": "[parameters('level')]",
- "notes": "[parameters('notes')]"
+ "level": "[coalesce(tryGet(parameters('lock'), 'kind'), '')]",
+ "notes": "[if(equals(tryGet(parameters('lock'), 'kind'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot delete or modify the resource or child resources.')]"
}
}
- ],
- "outputs": {
- "name": {
- "type": "string",
- "metadata": {
- "description": "The name of the lock."
- },
- "value": "[parameters('name')]"
- },
- "resourceId": {
- "type": "string",
- "metadata": {
- "description": "The resource ID of the lock."
- },
- "value": "[resourceId('Microsoft.Authorization/locks', parameters('name'))]"
- },
- "resourceGroupName": {
- "type": "string",
- "metadata": {
- "description": "The name of the resource group name the lock was applied to."
- },
- "value": "[resourceGroup().name]"
- },
- "scope": {
- "type": "string",
- "metadata": {
- "description": "The scope this lock applies to."
- },
- "value": "[resourceGroup().id]"
- }
}
}
},
From ec757b0307f36b9453664b35c221998eefa9c0c1 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 19:21:53 +0200
Subject: [PATCH 16/52] Fixed lock passthru on several instances
---
docs/wiki/The library - Module design.md | 4 ++--
modules/event-hub/namespace/main.bicep | 2 +-
modules/event-hub/namespace/main.json | 6 ++++--
modules/healthcare-apis/workspace/main.bicep | 6 +++---
modules/healthcare-apis/workspace/main.json | 14 ++++++++++----
modules/service-bus/namespace/main.bicep | 4 ++--
modules/sql/managed-instance/main.bicep | 2 +-
modules/sql/managed-instance/main.json | 6 ++++--
8 files changed, 27 insertions(+), 17 deletions(-)
diff --git a/docs/wiki/The library - Module design.md b/docs/wiki/The library - Module design.md
index 5204914d7a..b3c95193c2 100644
--- a/docs/wiki/The library - Module design.md
+++ b/docs/wiki/The library - Module design.md
@@ -160,12 +160,12 @@ resource _lock 'Microsoft.Authorization/locks@2020-05-01' = if (!e
>
> - Child and extension resources
> - Locks are not automatically passed down, as they are inherited by default in Azure
-> - The reference of the child/extension template should look similar to: `lock: contains(, 'lock') ? .lock : ''`
+> - The reference of the child/extension template should look similar to: `lock: .?lock ?? lock`
> - Using this implementation, a lock is only deployed to the child/extension resource if explicitly specified in the module's test file
> - For example, the lock of a Storage Account module is not automatically passed to a Storage Container child-deployment. Instead, the Storage Container resource is automatically locked by Azure together with a locked Storage Account
> - Cross-referenced resources
> - All cross-referenced resources share the lock with the main resource to prevent depending resources to be changed or deleted
-> - The reference of the cross-referenced resource template should look similar to: `lock: contains(, 'lock') ? .lock : lock`
+> - The reference of the cross-referenced resource template should look similar to: `lock: .?lock ?? lock`
> - Using this implementation, a lock of the main resource is implicitly passed to the referenced module template
> - For example, the lock of a Key Vault module is automatically passed to an also deployed Private Endpoint module deployment
diff --git a/modules/event-hub/namespace/main.bicep b/modules/event-hub/namespace/main.bicep
index 0a7f3c6c3c..4ed0815749 100644
--- a/modules/event-hub/namespace/main.bicep
+++ b/modules/event-hub/namespace/main.bicep
@@ -284,7 +284,7 @@ module eventHubNamespace_eventhubs 'eventhub/main.bicep' = [for (eventHub, index
captureDescriptionSizeLimitInBytes: contains(eventHub, 'captureDescriptionSizeLimitInBytes') ? eventHub.captureDescriptionSizeLimitInBytes : 314572800
captureDescriptionSkipEmptyArchives: contains(eventHub, 'captureDescriptionSkipEmptyArchives') ? eventHub.captureDescriptionSkipEmptyArchives : false
consumergroups: contains(eventHub, 'consumergroups') ? eventHub.consumergroups : []
- lock: contains(eventHub, 'lock') ? eventHub.lock : ''
+ lock: eventHub.?lock ?? lock
messageRetentionInDays: contains(eventHub, 'messageRetentionInDays') ? eventHub.messageRetentionInDays : 1
partitionCount: contains(eventHub, 'partitionCount') ? eventHub.partitionCount : 2
roleAssignments: contains(eventHub, 'roleAssignments') ? eventHub.roleAssignments : []
diff --git a/modules/event-hub/namespace/main.json b/modules/event-hub/namespace/main.json
index 9ac0b5ba7c..4914e01eba 100644
--- a/modules/event-hub/namespace/main.json
+++ b/modules/event-hub/namespace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "5400370874559204104"
+ "templateHash": "2216108787200401845"
},
"name": "Event Hub Namespaces",
"description": "This module deploys an Event Hub Namespace.",
@@ -718,7 +718,9 @@
"captureDescriptionSizeLimitInBytes": "[if(contains(parameters('eventhubs')[copyIndex()], 'captureDescriptionSizeLimitInBytes'), createObject('value', parameters('eventhubs')[copyIndex()].captureDescriptionSizeLimitInBytes), createObject('value', 314572800))]",
"captureDescriptionSkipEmptyArchives": "[if(contains(parameters('eventhubs')[copyIndex()], 'captureDescriptionSkipEmptyArchives'), createObject('value', parameters('eventhubs')[copyIndex()].captureDescriptionSkipEmptyArchives), createObject('value', false()))]",
"consumergroups": "[if(contains(parameters('eventhubs')[copyIndex()], 'consumergroups'), createObject('value', parameters('eventhubs')[copyIndex()].consumergroups), createObject('value', createArray()))]",
- "lock": "[if(contains(parameters('eventhubs')[copyIndex()], 'lock'), createObject('value', parameters('eventhubs')[copyIndex()].lock), createObject('value', ''))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('eventhubs')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"messageRetentionInDays": "[if(contains(parameters('eventhubs')[copyIndex()], 'messageRetentionInDays'), createObject('value', parameters('eventhubs')[copyIndex()].messageRetentionInDays), createObject('value', 1))]",
"partitionCount": "[if(contains(parameters('eventhubs')[copyIndex()], 'partitionCount'), createObject('value', parameters('eventhubs')[copyIndex()].partitionCount), createObject('value', 2))]",
"roleAssignments": "[if(contains(parameters('eventhubs')[copyIndex()], 'roleAssignments'), createObject('value', parameters('eventhubs')[copyIndex()].roleAssignments), createObject('value', createArray()))]",
diff --git a/modules/healthcare-apis/workspace/main.bicep b/modules/healthcare-apis/workspace/main.bicep
index 5b6b4c098a..933c998407 100644
--- a/modules/healthcare-apis/workspace/main.bicep
+++ b/modules/healthcare-apis/workspace/main.bicep
@@ -114,7 +114,7 @@ module workspace_fhirservices 'fhirservice/main.bicep' = [for (fhir, index) in f
importStorageAccountName: contains(fhir, 'importStorageAccountName') ? fhir.importStorageAccountName : ''
importEnabled: contains(fhir, 'importEnabled') ? fhir.importEnabled : false
initialImportMode: contains(fhir, 'initialImportMode') ? fhir.initialImportMode : false
- lock: contains(fhir, 'lock') ? fhir.lock : ''
+ lock: fhir.?lock ?? lock
resourceVersionPolicy: contains(fhir, 'resourceVersionPolicy') ? fhir.resourceVersionPolicy : 'versioned'
resourceVersionOverrides: contains(fhir, 'resourceVersionOverrides') ? fhir.resourceVersionOverrides : {}
smartProxyEnabled: contains(fhir, 'smartProxyEnabled') ? fhir.smartProxyEnabled : false
@@ -143,7 +143,7 @@ module workspace_dicomservices 'dicomservice/main.bicep' = [for (dicom, index) i
diagnosticWorkspaceId: contains(dicom, 'diagnosticWorkspaceId') ? dicom.diagnosticWorkspaceId : ''
diagnosticEventHubAuthorizationRuleId: contains(dicom, 'diagnosticEventHubAuthorizationRuleId') ? dicom.diagnosticEventHubAuthorizationRuleId : ''
diagnosticEventHubName: contains(dicom, 'diagnosticEventHubName') ? dicom.diagnosticEventHubName : ''
- lock: contains(dicom, 'lock') ? dicom.lock : ''
+ lock: dicom.?lock ?? lock
userAssignedIdentities: contains(dicom, 'userAssignedIdentities') ? dicom.userAssignedIdentities : {}
diagnosticLogCategoriesToEnable: contains(dicom, 'diagnosticLogCategoriesToEnable') ? dicom.diagnosticLogCategoriesToEnable : [ 'AuditLogs' ]
enableDefaultTelemetry: enableReferencedModulesTelemetry
@@ -170,7 +170,7 @@ module workspace_iotconnector 'iotconnector/main.bicep' = [for (iotConnector, in
diagnosticWorkspaceId: contains(iotConnector, 'diagnosticWorkspaceId') ? iotConnector.diagnosticWorkspaceId : ''
diagnosticEventHubAuthorizationRuleId: contains(iotConnector, 'diagnosticEventHubAuthorizationRuleId') ? iotConnector.diagnosticEventHubAuthorizationRuleId : ''
diagnosticEventHubName: contains(iotConnector, 'diagnosticEventHubName') ? iotConnector.diagnosticEventHubName : ''
- lock: contains(iotConnector, 'lock') ? iotConnector.lock : ''
+ lock: iotConnector.?lock ?? lock
userAssignedIdentities: contains(iotConnector, 'userAssignedIdentities') ? iotConnector.userAssignedIdentities : {}
diagnosticLogCategoriesToEnable: contains(iotConnector, 'diagnosticLogCategoriesToEnable') ? iotConnector.diagnosticLogCategoriesToEnable : [ 'DiagnosticLogs' ]
diagnosticMetricsToEnable: contains(iotConnector, 'diagnosticMetricsToEnable') ? iotConnector.diagnosticMetricsToEnable : [ 'AllMetrics' ]
diff --git a/modules/healthcare-apis/workspace/main.json b/modules/healthcare-apis/workspace/main.json
index 621b480cc4..41a468c521 100644
--- a/modules/healthcare-apis/workspace/main.json
+++ b/modules/healthcare-apis/workspace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "4597929736305145660"
+ "templateHash": "14046183075929419967"
},
"name": "Healthcare API Workspaces",
"description": "This module deploys a Healthcare API Workspace.",
@@ -361,7 +361,9 @@
"importStorageAccountName": "[if(contains(parameters('fhirservices')[copyIndex()], 'importStorageAccountName'), createObject('value', parameters('fhirservices')[copyIndex()].importStorageAccountName), createObject('value', ''))]",
"importEnabled": "[if(contains(parameters('fhirservices')[copyIndex()], 'importEnabled'), createObject('value', parameters('fhirservices')[copyIndex()].importEnabled), createObject('value', false()))]",
"initialImportMode": "[if(contains(parameters('fhirservices')[copyIndex()], 'initialImportMode'), createObject('value', parameters('fhirservices')[copyIndex()].initialImportMode), createObject('value', false()))]",
- "lock": "[if(contains(parameters('fhirservices')[copyIndex()], 'lock'), createObject('value', parameters('fhirservices')[copyIndex()].lock), createObject('value', ''))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('fhirservices')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"resourceVersionPolicy": "[if(contains(parameters('fhirservices')[copyIndex()], 'resourceVersionPolicy'), createObject('value', parameters('fhirservices')[copyIndex()].resourceVersionPolicy), createObject('value', 'versioned'))]",
"resourceVersionOverrides": "[if(contains(parameters('fhirservices')[copyIndex()], 'resourceVersionOverrides'), createObject('value', parameters('fhirservices')[copyIndex()].resourceVersionOverrides), createObject('value', createObject()))]",
"smartProxyEnabled": "[if(contains(parameters('fhirservices')[copyIndex()], 'smartProxyEnabled'), createObject('value', parameters('fhirservices')[copyIndex()].smartProxyEnabled), createObject('value', false()))]",
@@ -1060,7 +1062,9 @@
"diagnosticWorkspaceId": "[if(contains(parameters('dicomservices')[copyIndex()], 'diagnosticWorkspaceId'), createObject('value', parameters('dicomservices')[copyIndex()].diagnosticWorkspaceId), createObject('value', ''))]",
"diagnosticEventHubAuthorizationRuleId": "[if(contains(parameters('dicomservices')[copyIndex()], 'diagnosticEventHubAuthorizationRuleId'), createObject('value', parameters('dicomservices')[copyIndex()].diagnosticEventHubAuthorizationRuleId), createObject('value', ''))]",
"diagnosticEventHubName": "[if(contains(parameters('dicomservices')[copyIndex()], 'diagnosticEventHubName'), createObject('value', parameters('dicomservices')[copyIndex()].diagnosticEventHubName), createObject('value', ''))]",
- "lock": "[if(contains(parameters('dicomservices')[copyIndex()], 'lock'), createObject('value', parameters('dicomservices')[copyIndex()].lock), createObject('value', ''))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('dicomservices')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"userAssignedIdentities": "[if(contains(parameters('dicomservices')[copyIndex()], 'userAssignedIdentities'), createObject('value', parameters('dicomservices')[copyIndex()].userAssignedIdentities), createObject('value', createObject()))]",
"diagnosticLogCategoriesToEnable": "[if(contains(parameters('dicomservices')[copyIndex()], 'diagnosticLogCategoriesToEnable'), createObject('value', parameters('dicomservices')[copyIndex()].diagnosticLogCategoriesToEnable), createObject('value', createArray('AuditLogs')))]",
"enableDefaultTelemetry": {
@@ -1435,7 +1439,9 @@
"diagnosticWorkspaceId": "[if(contains(parameters('iotconnectors')[copyIndex()], 'diagnosticWorkspaceId'), createObject('value', parameters('iotconnectors')[copyIndex()].diagnosticWorkspaceId), createObject('value', ''))]",
"diagnosticEventHubAuthorizationRuleId": "[if(contains(parameters('iotconnectors')[copyIndex()], 'diagnosticEventHubAuthorizationRuleId'), createObject('value', parameters('iotconnectors')[copyIndex()].diagnosticEventHubAuthorizationRuleId), createObject('value', ''))]",
"diagnosticEventHubName": "[if(contains(parameters('iotconnectors')[copyIndex()], 'diagnosticEventHubName'), createObject('value', parameters('iotconnectors')[copyIndex()].diagnosticEventHubName), createObject('value', ''))]",
- "lock": "[if(contains(parameters('iotconnectors')[copyIndex()], 'lock'), createObject('value', parameters('iotconnectors')[copyIndex()].lock), createObject('value', ''))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('iotconnectors')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"userAssignedIdentities": "[if(contains(parameters('iotconnectors')[copyIndex()], 'userAssignedIdentities'), createObject('value', parameters('iotconnectors')[copyIndex()].userAssignedIdentities), createObject('value', createObject()))]",
"diagnosticLogCategoriesToEnable": "[if(contains(parameters('iotconnectors')[copyIndex()], 'diagnosticLogCategoriesToEnable'), createObject('value', parameters('iotconnectors')[copyIndex()].diagnosticLogCategoriesToEnable), createObject('value', createArray('DiagnosticLogs')))]",
"diagnosticMetricsToEnable": "[if(contains(parameters('iotconnectors')[copyIndex()], 'diagnosticMetricsToEnable'), createObject('value', parameters('iotconnectors')[copyIndex()].diagnosticMetricsToEnable), createObject('value', createArray('AllMetrics')))]",
diff --git a/modules/service-bus/namespace/main.bicep b/modules/service-bus/namespace/main.bicep
index c61e51efbd..8df4330148 100644
--- a/modules/service-bus/namespace/main.bicep
+++ b/modules/service-bus/namespace/main.bicep
@@ -304,7 +304,7 @@ module serviceBusNamespace_queues 'queue/main.bicep' = [for (queue, index) in qu
enableBatchedOperations: contains(queue, 'enableBatchedOperations') ? queue.enableBatchedOperations : true
enableExpress: contains(queue, 'enableExpress') ? queue.enableExpress : false
enablePartitioning: contains(queue, 'enablePartitioning') ? queue.enablePartitioning : false
- lock: contains(queue, 'lock') ? queue.lock : ''
+ lock: queue.?lock ?? lock
lockDuration: contains(queue, 'lockDuration') ? queue.lockDuration : 'PT1M'
maxDeliveryCount: contains(queue, 'maxDeliveryCount') ? queue.maxDeliveryCount : 10
maxSizeInMegabytes: contains(queue, 'maxSizeInMegabytes') ? queue.maxSizeInMegabytes : 1024
@@ -337,7 +337,7 @@ module serviceBusNamespace_topics 'topic/main.bicep' = [for (topic, index) in to
enableBatchedOperations: contains(topic, 'enableBatchedOperations') ? topic.enableBatchedOperations : true
enableExpress: contains(topic, 'enableExpress') ? topic.enableExpress : false
enablePartitioning: contains(topic, 'enablePartitioning') ? topic.enablePartitioning : false
- lock: contains(topic, 'lock') ? topic.lock : ''
+ lock: topic.?lock ?? lock
maxMessageSizeInKilobytes: contains(topic, 'maxMessageSizeInKilobytes') ? topic.maxMessageSizeInKilobytes : 1024
maxSizeInMegabytes: contains(topic, 'maxSizeInMegabytes') ? topic.maxSizeInMegabytes : 1024
requiresDuplicateDetection: contains(topic, 'requiresDuplicateDetection') ? topic.requiresDuplicateDetection : false
diff --git a/modules/sql/managed-instance/main.bicep b/modules/sql/managed-instance/main.bicep
index 2f5f7528ae..1bf99be979 100644
--- a/modules/sql/managed-instance/main.bicep
+++ b/modules/sql/managed-instance/main.bicep
@@ -299,7 +299,7 @@ module managedInstance_databases 'database/main.bicep' = [for (database, index)
diagnosticEventHubAuthorizationRuleId: contains(database, 'diagnosticEventHubAuthorizationRuleId') ? database.diagnosticEventHubAuthorizationRuleId : ''
diagnosticEventHubName: contains(database, 'diagnosticEventHubName') ? database.diagnosticEventHubName : ''
location: contains(database, 'location') ? database.location : managedInstance.location
- lock: contains(database, 'lock') ? database.lock : ''
+ lock: database.?lock ?? lock
longTermRetentionBackupResourceId: contains(database, 'longTermRetentionBackupResourceId') ? database.longTermRetentionBackupResourceId : ''
recoverableDatabaseId: contains(database, 'recoverableDatabaseId') ? database.recoverableDatabaseId : ''
restorableDroppedDatabaseId: contains(database, 'restorableDroppedDatabaseId') ? database.restorableDroppedDatabaseId : ''
diff --git a/modules/sql/managed-instance/main.json b/modules/sql/managed-instance/main.json
index 1a369b5e40..21ce21a1d0 100644
--- a/modules/sql/managed-instance/main.json
+++ b/modules/sql/managed-instance/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "10725109912402429439"
+ "templateHash": "15164808450251247513"
},
"name": "SQL Managed Instances",
"description": "This module deploys a SQL Managed Instance.",
@@ -679,7 +679,9 @@
"diagnosticEventHubAuthorizationRuleId": "[if(contains(parameters('databases')[copyIndex()], 'diagnosticEventHubAuthorizationRuleId'), createObject('value', parameters('databases')[copyIndex()].diagnosticEventHubAuthorizationRuleId), createObject('value', ''))]",
"diagnosticEventHubName": "[if(contains(parameters('databases')[copyIndex()], 'diagnosticEventHubName'), createObject('value', parameters('databases')[copyIndex()].diagnosticEventHubName), createObject('value', ''))]",
"location": "[if(contains(parameters('databases')[copyIndex()], 'location'), createObject('value', parameters('databases')[copyIndex()].location), createObject('value', reference('managedInstance', '2022-05-01-preview', 'full').location))]",
- "lock": "[if(contains(parameters('databases')[copyIndex()], 'lock'), createObject('value', parameters('databases')[copyIndex()].lock), createObject('value', ''))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('databases')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"longTermRetentionBackupResourceId": "[if(contains(parameters('databases')[copyIndex()], 'longTermRetentionBackupResourceId'), createObject('value', parameters('databases')[copyIndex()].longTermRetentionBackupResourceId), createObject('value', ''))]",
"recoverableDatabaseId": "[if(contains(parameters('databases')[copyIndex()], 'recoverableDatabaseId'), createObject('value', parameters('databases')[copyIndex()].recoverableDatabaseId), createObject('value', ''))]",
"restorableDroppedDatabaseId": "[if(contains(parameters('databases')[copyIndex()], 'restorableDroppedDatabaseId'), createObject('value', parameters('databases')[copyIndex()].restorableDroppedDatabaseId), createObject('value', ''))]",
From fd329ec84268cd736d9f46cdff3862d17e045d2f Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 20:59:36 +0200
Subject: [PATCH 17/52] Adjusted scope
---
modules/service-bus/namespace/main.bicep | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/modules/service-bus/namespace/main.bicep b/modules/service-bus/namespace/main.bicep
index 8df4330148..19b7e54880 100644
--- a/modules/service-bus/namespace/main.bicep
+++ b/modules/service-bus/namespace/main.bicep
@@ -194,12 +194,12 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
name: last(split(cMKKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+ scope: resourceGroup(split((cMKKeyVaultResourceId ?? '//'), '/')[2], split((cMKKeyVaultResourceId ?? '////'), '/')[4])
}
resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
name: '${last(split(cMKKeyVaultResourceId, '/'))}/${cMKKeyName}'!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+ scope: resourceGroup(split((cMKKeyVaultResourceId ?? '//'), '/')[2], split((cMKKeyVaultResourceId ?? '////'), '/')[4])
}
resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2022-10-01-preview' = {
From fce512ce8577c214c54060f4850aa717545b7d7c Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 21:27:42 +0200
Subject: [PATCH 18/52] Adjusted cmk for service bus ns
---
modules/service-bus/namespace/main.bicep | 4 ++--
modules/service-bus/namespace/main.json | 22 +++++++++++++---------
2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/modules/service-bus/namespace/main.bicep b/modules/service-bus/namespace/main.bicep
index 19b7e54880..d806effe5b 100644
--- a/modules/service-bus/namespace/main.bicep
+++ b/modules/service-bus/namespace/main.bicep
@@ -193,12 +193,12 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
}
resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
- name: last(split(cMKKeyVaultResourceId, '/'))!
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
scope: resourceGroup(split((cMKKeyVaultResourceId ?? '//'), '/')[2], split((cMKKeyVaultResourceId ?? '////'), '/')[4])
}
resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
- name: '${last(split(cMKKeyVaultResourceId, '/'))}/${cMKKeyName}'!
+ name: '${last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))}/${cMKKeyName}'!
scope: resourceGroup(split((cMKKeyVaultResourceId ?? '//'), '/')[2], split((cMKKeyVaultResourceId ?? '////'), '/')[4])
}
diff --git a/modules/service-bus/namespace/main.json b/modules/service-bus/namespace/main.json
index dbd1f16099..db985c2fde 100644
--- a/modules/service-bus/namespace/main.json
+++ b/modules/service-bus/namespace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "2064440867839372163"
+ "templateHash": "6124315257677108113"
},
"name": "Service Bus Namespaces",
"description": "This module deploys a Service Bus Namespace.",
@@ -375,18 +375,18 @@
"existing": true,
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKKeyVaultResourceId'), '/'))]"
+ "subscriptionId": "[split(coalesce(parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(coalesce(parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"cMKKeyVaultKey": {
"condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults/keys",
"apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]"
+ "subscriptionId": "[split(coalesce(parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(coalesce(parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), parameters('cMKKeyName'))]"
},
"serviceBusNamespace": {
"type": "Microsoft.ServiceBus/namespaces",
@@ -1013,7 +1013,9 @@
"enableBatchedOperations": "[if(contains(parameters('queues')[copyIndex()], 'enableBatchedOperations'), createObject('value', parameters('queues')[copyIndex()].enableBatchedOperations), createObject('value', true()))]",
"enableExpress": "[if(contains(parameters('queues')[copyIndex()], 'enableExpress'), createObject('value', parameters('queues')[copyIndex()].enableExpress), createObject('value', false()))]",
"enablePartitioning": "[if(contains(parameters('queues')[copyIndex()], 'enablePartitioning'), createObject('value', parameters('queues')[copyIndex()].enablePartitioning), createObject('value', false()))]",
- "lock": "[if(contains(parameters('queues')[copyIndex()], 'lock'), createObject('value', parameters('queues')[copyIndex()].lock), createObject('value', ''))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('queues')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"lockDuration": "[if(contains(parameters('queues')[copyIndex()], 'lockDuration'), createObject('value', parameters('queues')[copyIndex()].lockDuration), createObject('value', 'PT1M'))]",
"maxDeliveryCount": "[if(contains(parameters('queues')[copyIndex()], 'maxDeliveryCount'), createObject('value', parameters('queues')[copyIndex()].maxDeliveryCount), createObject('value', 10))]",
"maxSizeInMegabytes": "[if(contains(parameters('queues')[copyIndex()], 'maxSizeInMegabytes'), createObject('value', parameters('queues')[copyIndex()].maxSizeInMegabytes), createObject('value', 1024))]",
@@ -1650,7 +1652,9 @@
"enableBatchedOperations": "[if(contains(parameters('topics')[copyIndex()], 'enableBatchedOperations'), createObject('value', parameters('topics')[copyIndex()].enableBatchedOperations), createObject('value', true()))]",
"enableExpress": "[if(contains(parameters('topics')[copyIndex()], 'enableExpress'), createObject('value', parameters('topics')[copyIndex()].enableExpress), createObject('value', false()))]",
"enablePartitioning": "[if(contains(parameters('topics')[copyIndex()], 'enablePartitioning'), createObject('value', parameters('topics')[copyIndex()].enablePartitioning), createObject('value', false()))]",
- "lock": "[if(contains(parameters('topics')[copyIndex()], 'lock'), createObject('value', parameters('topics')[copyIndex()].lock), createObject('value', ''))]",
+ "lock": {
+ "value": "[coalesce(tryGet(parameters('topics')[copyIndex()], 'lock'), parameters('lock'))]"
+ },
"maxMessageSizeInKilobytes": "[if(contains(parameters('topics')[copyIndex()], 'maxMessageSizeInKilobytes'), createObject('value', parameters('topics')[copyIndex()].maxMessageSizeInKilobytes), createObject('value', 1024))]",
"maxSizeInMegabytes": "[if(contains(parameters('topics')[copyIndex()], 'maxSizeInMegabytes'), createObject('value', parameters('topics')[copyIndex()].maxSizeInMegabytes), createObject('value', 1024))]",
"requiresDuplicateDetection": "[if(contains(parameters('topics')[copyIndex()], 'requiresDuplicateDetection'), createObject('value', parameters('topics')[copyIndex()].requiresDuplicateDetection), createObject('value', false()))]",
From aa3b3ea2ace3facacfe3e9ec76a9bebcdbbf31c6 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 22:32:09 +0200
Subject: [PATCH 19/52] Updated ref
---
modules/service-bus/namespace/main.bicep | 4 ++--
modules/service-bus/namespace/main.json | 10 +++++-----
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/modules/service-bus/namespace/main.bicep b/modules/service-bus/namespace/main.bicep
index d806effe5b..250503f876 100644
--- a/modules/service-bus/namespace/main.bicep
+++ b/modules/service-bus/namespace/main.bicep
@@ -194,12 +194,12 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
- scope: resourceGroup(split((cMKKeyVaultResourceId ?? '//'), '/')[2], split((cMKKeyVaultResourceId ?? '////'), '/')[4])
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
}
resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
name: '${last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))}/${cMKKeyName}'!
- scope: resourceGroup(split((cMKKeyVaultResourceId ?? '//'), '/')[2], split((cMKKeyVaultResourceId ?? '////'), '/')[4])
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
}
resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2022-10-01-preview' = {
diff --git a/modules/service-bus/namespace/main.json b/modules/service-bus/namespace/main.json
index db985c2fde..75edf8fa03 100644
--- a/modules/service-bus/namespace/main.json
+++ b/modules/service-bus/namespace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "6124315257677108113"
+ "templateHash": "2504248366941947569"
},
"name": "Service Bus Namespaces",
"description": "This module deploys a Service Bus Namespace.",
@@ -375,8 +375,8 @@
"existing": true,
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2021-10-01",
- "subscriptionId": "[split(coalesce(parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
- "resourceGroup": "[split(coalesce(parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
"name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"cMKKeyVaultKey": {
@@ -384,8 +384,8 @@
"existing": true,
"type": "Microsoft.KeyVault/vaults/keys",
"apiVersion": "2021-10-01",
- "subscriptionId": "[split(coalesce(parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
- "resourceGroup": "[split(coalesce(parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
"name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), parameters('cMKKeyName'))]"
},
"serviceBusNamespace": {
From 65452b3228fea6622b3b6808d1f82ee5b4799c34 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 22:45:21 +0200
Subject: [PATCH 20/52] Updated cmk with udt workaround
---
modules/event-hub/namespace/main.bicep | 8 ++++----
modules/event-hub/namespace/main.json | 16 ++++++++--------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/modules/event-hub/namespace/main.bicep b/modules/event-hub/namespace/main.bicep
index 4ed0815749..3bfd039efa 100644
--- a/modules/event-hub/namespace/main.bicep
+++ b/modules/event-hub/namespace/main.bicep
@@ -183,12 +183,12 @@ var identity = identityType != 'None' ? {
var enableReferencedModulesTelemetry = false
-resource cMKKeyVault 'Microsoft.KeyVault/vaults@2023-02-01' existing = if (!empty(cMKKeyVaultResourceId)) {
- name: last(split(cMKKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
- name: cMKKeyName
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
}
}
diff --git a/modules/event-hub/namespace/main.json b/modules/event-hub/namespace/main.json
index 4914e01eba..1c0cc32b12 100644
--- a/modules/event-hub/namespace/main.json
+++ b/modules/event-hub/namespace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "2216108787200401845"
+ "templateHash": "11328063440515261641"
},
"name": "Event Hub Namespaces",
"description": "This module deploys an Event Hub Namespace.",
@@ -359,9 +359,9 @@
"existing": true,
"type": "Microsoft.KeyVault/vaults/keys",
"apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
"dependsOn": [
"cMKKeyVault"
]
@@ -370,10 +370,10 @@
"condition": "[not(empty(parameters('cMKKeyVaultResourceId')))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKKeyVaultResourceId'), '/'))]"
+ "apiVersion": "2021-10-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
From f8b4c08578af497334c1b9856467cc8fcc4c81c9 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 22:54:03 +0200
Subject: [PATCH 21/52] Updated storage
---
modules/storage/storage-account/main.bicep | 6 +++---
modules/storage/storage-account/main.json | 10 +++++-----
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/modules/storage/storage-account/main.bicep b/modules/storage/storage-account/main.bicep
index e53ed5fe12..cfbb81990d 100644
--- a/modules/storage/storage-account/main.bicep
+++ b/modules/storage/storage-account/main.bicep
@@ -227,9 +227,9 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
}
}
-resource keyVault 'Microsoft.KeyVault/vaults@2021-06-01-preview' existing = if (!empty(cMKKeyVaultResourceId)) {
- name: last(split(cMKKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+resource keyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
}
resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
diff --git a/modules/storage/storage-account/main.json b/modules/storage/storage-account/main.json
index 01537a5506..38d1cc9dd2 100644
--- a/modules/storage/storage-account/main.json
+++ b/modules/storage/storage-account/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "16183767474766935588"
+ "templateHash": "2987578024127826531"
},
"name": "Storage Accounts",
"description": "This module deploys a Storage Account.",
@@ -464,10 +464,10 @@
"condition": "[not(empty(parameters('cMKKeyVaultResourceId')))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2021-06-01-preview",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKKeyVaultResourceId'), '/'))]"
+ "apiVersion": "2021-10-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"storageAccount": {
"type": "Microsoft.Storage/storageAccounts",
From d4f90e9d1e5f5245fb7e10bf7e839ab7cbce0b0e Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 23:17:22 +0200
Subject: [PATCH 22/52] Updated cmk
---
modules/service-bus/namespace/main.bicep | 9 +++---
modules/service-bus/namespace/main.json | 28 ++++++++++---------
modules/service-bus/namespace/topic/README.md | 2 +-
3 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/modules/service-bus/namespace/main.bicep b/modules/service-bus/namespace/main.bicep
index 250503f876..a3d10b116d 100644
--- a/modules/service-bus/namespace/main.bicep
+++ b/modules/service-bus/namespace/main.bicep
@@ -195,11 +195,10 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
-}
-resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
- name: '${last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))}/${cMKKeyName}'!
- scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
+ }
}
resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2022-10-01-preview' = {
@@ -227,7 +226,7 @@ resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2022-10-01-preview
} : null
keyName: cMKKeyName
keyVaultUri: cMKKeyVault.properties.vaultUri
- keyVersion: !empty(cMKKeyVersion) ? cMKKeyVersion : last(split(cMKKeyVaultKey.properties.keyUriWithVersion, '/'))
+ keyVersion: !empty(cMKKeyVersion) ? cMKKeyVersion : last(split(cMKKeyVault::cMKKey.properties.keyUriWithVersion, '/'))
}
]
requireInfrastructureEncryption: requireInfrastructureEncryption
diff --git a/modules/service-bus/namespace/main.json b/modules/service-bus/namespace/main.json
index 75edf8fa03..dbe9a914ec 100644
--- a/modules/service-bus/namespace/main.json
+++ b/modules/service-bus/namespace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "2504248366941947569"
+ "templateHash": "16649033312069788826"
},
"name": "Service Bus Namespaces",
"description": "This module deploys a Service Bus Namespace.",
@@ -356,6 +356,18 @@
"enableReferencedModulesTelemetry": false
},
"resources": {
+ "cMKKeyVault::cMKKey": {
+ "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults/keys",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
+ "dependsOn": [
+ "cMKKeyVault"
+ ]
+ },
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
@@ -379,15 +391,6 @@
"resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
"name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
- "cMKKeyVaultKey": {
- "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
- "existing": true,
- "type": "Microsoft.KeyVault/vaults/keys",
- "apiVersion": "2021-10-01",
- "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
- "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), parameters('cMKKeyName'))]"
- },
"serviceBusNamespace": {
"type": "Microsoft.ServiceBus/namespaces",
"apiVersion": "2022-10-01-preview",
@@ -406,11 +409,10 @@
"zoneRedundant": "[parameters('zoneRedundant')]",
"disableLocalAuth": "[parameters('disableLocalAuth')]",
"premiumMessagingPartitions": "[if(equals(parameters('skuName'), 'Premium'), parameters('premiumMessagingPartitions'), 0)]",
- "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('keySource', 'Microsoft.KeyVault', 'keyVaultProperties', createArray(createObject('identity', if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), createObject('userAssignedIdentity', parameters('cMKUserAssignedIdentityResourceId')), null()), 'keyName', parameters('cMKKeyName'), 'keyVaultUri', reference('cMKKeyVault').vaultUri, 'keyVersion', if(not(empty(parameters('cMKKeyVersion'))), parameters('cMKKeyVersion'), last(split(reference('cMKKeyVaultKey').keyUriWithVersion, '/'))))), 'requireInfrastructureEncryption', parameters('requireInfrastructureEncryption')), null())]"
+ "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('keySource', 'Microsoft.KeyVault', 'keyVaultProperties', createArray(createObject('identity', if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), createObject('userAssignedIdentity', parameters('cMKUserAssignedIdentityResourceId')), null()), 'keyName', parameters('cMKKeyName'), 'keyVaultUri', reference('cMKKeyVault').vaultUri, 'keyVersion', if(not(empty(parameters('cMKKeyVersion'))), parameters('cMKKeyVersion'), last(split(reference('cMKKeyVault::cMKKey').keyUriWithVersion, '/'))))), 'requireInfrastructureEncryption', parameters('requireInfrastructureEncryption')), null())]"
},
"dependsOn": [
- "cMKKeyVault",
- "cMKKeyVaultKey"
+ "cMKKeyVault"
]
},
"serviceBusNamespace_lock": {
diff --git a/modules/service-bus/namespace/topic/README.md b/modules/service-bus/namespace/topic/README.md
index 00edc62f20..de9d36f335 100644
--- a/modules/service-bus/namespace/topic/README.md
+++ b/modules/service-bus/namespace/topic/README.md
@@ -15,7 +15,7 @@ This module deploys a Service Bus Namespace Topic.
| :-- | :-- |
| `Microsoft.Authorization/locks` | [2020-05-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2020-05-01/locks) |
| `Microsoft.Authorization/roleAssignments` | [2022-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2022-04-01/roleAssignments) |
-| `Microsoft.ServiceBus/namespaces/topics` | [2022-10-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.ServiceBus/2022-10-01-preview/namespaces/topics) |
+| `Microsoft.ServiceBus/namespaces/topics` | [2022-10-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.ServiceBus/namespaces/topics) |
| `Microsoft.ServiceBus/namespaces/topics/authorizationRules` | [2022-10-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.ServiceBus/2022-10-01-preview/namespaces/topics/authorizationRules) |
## Parameters
From b07c7a001a346a764539cba8792dd514c569be2e Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 23:19:29 +0200
Subject: [PATCH 23/52] Fixed readme
---
modules/service-bus/namespace/topic/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules/service-bus/namespace/topic/README.md b/modules/service-bus/namespace/topic/README.md
index de9d36f335..00edc62f20 100644
--- a/modules/service-bus/namespace/topic/README.md
+++ b/modules/service-bus/namespace/topic/README.md
@@ -15,7 +15,7 @@ This module deploys a Service Bus Namespace Topic.
| :-- | :-- |
| `Microsoft.Authorization/locks` | [2020-05-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2020-05-01/locks) |
| `Microsoft.Authorization/roleAssignments` | [2022-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2022-04-01/roleAssignments) |
-| `Microsoft.ServiceBus/namespaces/topics` | [2022-10-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.ServiceBus/namespaces/topics) |
+| `Microsoft.ServiceBus/namespaces/topics` | [2022-10-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.ServiceBus/2022-10-01-preview/namespaces/topics) |
| `Microsoft.ServiceBus/namespaces/topics/authorizationRules` | [2022-10-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.ServiceBus/2022-10-01-preview/namespaces/topics/authorizationRules) |
## Parameters
From 350aa372687459d759166506a9ac93524815fbf1 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 23:28:38 +0200
Subject: [PATCH 24/52] Updated cmk for app-config
---
.../configuration-store/main.bicep | 14 +++++------
.../configuration-store/main.json | 24 +++++++++----------
2 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/modules/app-configuration/configuration-store/main.bicep b/modules/app-configuration/configuration-store/main.bicep
index 136fd6ec40..9a4d2e75dd 100644
--- a/modules/app-configuration/configuration-store/main.bicep
+++ b/modules/app-configuration/configuration-store/main.bicep
@@ -150,18 +150,18 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
}
}
-resource cMKKeyVault 'Microsoft.KeyVault/vaults@2023-02-01' existing = if (!empty(cMKKeyVaultResourceId)) {
- name: last(split(cMKKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
- resource cMKKey 'keys@2022-07-01' existing = if (!empty(cMKKeyName)) {
- name: cMKKeyName
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
}
}
resource cMKUserAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' existing = if (!empty(cMKUserAssignedIdentityResourceId)) {
- name: last(split(cMKUserAssignedIdentityResourceId, '/'))!
- scope: resourceGroup(split(cMKUserAssignedIdentityResourceId, '/')[2], split(cMKUserAssignedIdentityResourceId, '/')[4])
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyMsi'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
}
resource configurationStore 'Microsoft.AppConfiguration/configurationStores@2023-03-01' = {
diff --git a/modules/app-configuration/configuration-store/main.json b/modules/app-configuration/configuration-store/main.json
index 4e1c45795b..cf6f84dcb5 100644
--- a/modules/app-configuration/configuration-store/main.json
+++ b/modules/app-configuration/configuration-store/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "3783400318412037439"
+ "templateHash": "11343967706179576865"
},
"name": "App Configuration Stores",
"description": "This module deploys an App Configuration Store.",
@@ -289,10 +289,10 @@
"condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults/keys",
- "apiVersion": "2022-07-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
"dependsOn": [
"cMKKeyVault"
]
@@ -315,19 +315,19 @@
"condition": "[not(empty(parameters('cMKKeyVaultResourceId')))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKKeyVaultResourceId'), '/'))]"
+ "apiVersion": "2021-10-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"cMKUserAssignedIdentity": {
"condition": "[not(empty(parameters('cMKUserAssignedIdentityResourceId')))]",
"existing": true,
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"apiVersion": "2023-01-31",
- "subscriptionId": "[split(parameters('cMKUserAssignedIdentityResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKUserAssignedIdentityResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKUserAssignedIdentityResourceId'), '/'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyMsi'), '/'))]"
},
"configurationStore": {
"type": "Microsoft.AppConfiguration/configurationStores",
From c6128ab2f48ea99f8e589d21da2a40c99fb4cdda Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 23:31:21 +0200
Subject: [PATCH 25/52] Updated cmk for batch
---
modules/batch/batch-account/main.bicep | 17 ++++++-----
modules/batch/batch-account/main.json | 40 ++++++++++++++------------
2 files changed, 29 insertions(+), 28 deletions(-)
diff --git a/modules/batch/batch-account/main.bicep b/modules/batch/batch-account/main.bicep
index 25ac3e4f4b..e0f720a1d2 100644
--- a/modules/batch/batch-account/main.bicep
+++ b/modules/batch/batch-account/main.bicep
@@ -171,14 +171,13 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
}
}
-resource keyVaultReferenceKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(keyVaultReferenceResourceId)) {
- name: last(split(keyVaultReferenceResourceId, '/'))!
- scope: resourceGroup(split(keyVaultReferenceResourceId, '/')[2], split(keyVaultReferenceResourceId, '/')[4])
-}
+resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
-resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
- name: '${last(split(cMKKeyVaultResourceId, '/'))}/${cMKKeyName}'
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
+ }
}
resource batchAccount 'Microsoft.Batch/batchAccounts@2022-06-01' = {
@@ -192,12 +191,12 @@ resource batchAccount 'Microsoft.Batch/batchAccounts@2022-06-01' = {
encryption: !empty(cMKKeyName) ? {
keySource: 'Microsoft.KeyVault'
keyVaultProperties: {
- keyIdentifier: !empty(cMKKeyVersion) ? '${cMKKeyVaultKey.properties.keyUri}/${cMKKeyVersion}' : cMKKeyVaultKey.properties.keyUriWithVersion
+ keyIdentifier: !empty(cMKKeyVersion) ? '${cMKKeyVault::cMKKey.properties.keyUri}/${cMKKeyVersion}' : cMKKeyVault::cMKKey.properties.keyUriWithVersion
}
} : null
keyVaultReference: poolAllocationMode == 'UserSubscription' ? {
id: keyVaultReferenceResourceId
- url: keyVaultReferenceKeyVault.properties.vaultUri
+ url: cMKKeyVault.properties.vaultUri
} : null
networkProfile: (publicNetworkAccess == 'Disabled') || empty(networkProfileAllowedIpRanges) ? null : {
accountAccess: {
diff --git a/modules/batch/batch-account/main.json b/modules/batch/batch-account/main.json
index 497941e430..3c256755bd 100644
--- a/modules/batch/batch-account/main.json
+++ b/modules/batch/batch-account/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "7307637121796009731"
+ "templateHash": "2439163015108038599"
},
"name": "Batch Accounts",
"description": "This module deploys a Batch Account.",
@@ -304,6 +304,18 @@
"enableReferencedModulesTelemetry": false
},
"resources": {
+ "cMKKeyVault::cMKKey": {
+ "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults/keys",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
+ "dependsOn": [
+ "cMKKeyVault"
+ ]
+ },
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
@@ -318,23 +330,14 @@
}
}
},
- "keyVaultReferenceKeyVault": {
- "condition": "[not(empty(parameters('keyVaultReferenceResourceId')))]",
+ "cMKKeyVault": {
+ "condition": "[not(empty(parameters('cMKKeyVaultResourceId')))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('keyVaultReferenceResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('keyVaultReferenceResourceId'), '/')[4]]",
- "name": "[last(split(parameters('keyVaultReferenceResourceId'), '/'))]"
- },
- "cMKKeyVaultKey": {
- "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
- "existing": true,
- "type": "Microsoft.KeyVault/vaults/keys",
- "apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"batchAccount": {
"type": "Microsoft.Batch/batchAccounts",
@@ -346,15 +349,14 @@
"properties": {
"allowedAuthenticationModes": "[parameters('allowedAuthenticationModes')]",
"autoStorage": "[variables('autoStorageConfig')]",
- "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('keySource', 'Microsoft.KeyVault', 'keyVaultProperties', createObject('keyIdentifier', if(not(empty(parameters('cMKKeyVersion'))), format('{0}/{1}', reference('cMKKeyVaultKey').keyUri, parameters('cMKKeyVersion')), reference('cMKKeyVaultKey').keyUriWithVersion))), null())]",
- "keyVaultReference": "[if(equals(parameters('poolAllocationMode'), 'UserSubscription'), createObject('id', parameters('keyVaultReferenceResourceId'), 'url', reference('keyVaultReferenceKeyVault').vaultUri), null())]",
+ "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('keySource', 'Microsoft.KeyVault', 'keyVaultProperties', createObject('keyIdentifier', if(not(empty(parameters('cMKKeyVersion'))), format('{0}/{1}', reference('cMKKeyVault::cMKKey').keyUri, parameters('cMKKeyVersion')), reference('cMKKeyVault::cMKKey').keyUriWithVersion))), null())]",
+ "keyVaultReference": "[if(equals(parameters('poolAllocationMode'), 'UserSubscription'), createObject('id', parameters('keyVaultReferenceResourceId'), 'url', reference('cMKKeyVault').vaultUri), null())]",
"networkProfile": "[if(or(equals(parameters('publicNetworkAccess'), 'Disabled'), empty(parameters('networkProfileAllowedIpRanges'))), null(), createObject('accountAccess', createObject('defaultAction', parameters('networkProfileDefaultAction'), 'ipRules', variables('networkProfileIpRules'))))]",
"poolAllocationMode": "[parameters('poolAllocationMode')]",
"publicNetworkAccess": "[if(not(empty(parameters('publicNetworkAccess'))), parameters('publicNetworkAccess'), if(and(not(empty(parameters('privateEndpoints'))), empty(parameters('networkProfileAllowedIpRanges'))), 'Disabled', null()))]"
},
"dependsOn": [
- "cMKKeyVaultKey",
- "keyVaultReferenceKeyVault"
+ "cMKKeyVault"
]
},
"batchAccount_lock": {
From 89135ebdc6ababda2c6134eb5ec4aa48398edbf2 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 23:32:29 +0200
Subject: [PATCH 26/52] Updated cmk for cognitive
---
modules/cognitive-services/account/main.bicep | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/modules/cognitive-services/account/main.bicep b/modules/cognitive-services/account/main.bicep
index 06494998b2..5fbb6da6e4 100644
--- a/modules/cognitive-services/account/main.bicep
+++ b/modules/cognitive-services/account/main.bicep
@@ -201,19 +201,18 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2022-09-01' = if (ena
}
}
-resource cMKKeyVault 'Microsoft.KeyVault/vaults@2023-02-01' existing = if (!empty(cMKKeyVaultResourceId)) {
- name: last(split(cMKKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
-}
+resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
-resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2023-02-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
- name: '${last(split(cMKKeyVaultResourceId, '/'))}/${cMKKeyName}'!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
+ }
}
resource cMKUserAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' existing = if (!empty(cMKUserAssignedIdentityResourceId)) {
- name: last(split(cMKUserAssignedIdentityResourceId, '/'))!
- scope: resourceGroup(split(cMKUserAssignedIdentityResourceId, '/')[2], split(cMKUserAssignedIdentityResourceId, '/')[4])
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyMsi'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
}
resource cognitiveServices 'Microsoft.CognitiveServices/accounts@2022-12-01' = {
@@ -242,7 +241,7 @@ resource cognitiveServices 'Microsoft.CognitiveServices/accounts@2022-12-01' = {
identityClientId: cMKUserAssignedIdentity.properties.clientId
keyVaultUri: cMKKeyVault.properties.vaultUri
keyName: cMKKeyName
- keyVersion: !empty(cMKKeyVersion) ? cMKKeyVersion : last(split(cMKKeyVaultKey.properties.keyUriWithVersion, '/'))
+ keyVersion: !empty(cMKKeyVersion) ? cMKKeyVersion : last(split(cMKKeyVault::cMKKey.properties.keyUriWithVersion, '/'))
}
} : null
migrationToken: !empty(migrationToken) ? migrationToken : null
From 1fea92eb14a5f5664fafce156bbb6d39b11e0346 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 23:33:46 +0200
Subject: [PATCH 27/52] Updated cmk for container instance
---
.../container-group/main.bicep | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/modules/container-instance/container-group/main.bicep b/modules/container-instance/container-group/main.bicep
index 7479f3b30b..c6ae9e6363 100644
--- a/modules/container-instance/container-group/main.bicep
+++ b/modules/container-instance/container-group/main.bicep
@@ -116,14 +116,13 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
}
}
-resource cmkKeyVault 'Microsoft.KeyVault/vaults@2021-06-01-preview' existing = if (!empty(cMKKeyVaultResourceId)) {
- name: last(split(cMKKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
-}
+resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
-resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
- name: '${last(split(cMKKeyVaultResourceId, '/'))}/${cMKKeyName}'!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
+ }
}
resource containergroup 'Microsoft.ContainerInstance/containerGroups@2022-09-01' = {
@@ -136,8 +135,8 @@ resource containergroup 'Microsoft.ContainerInstance/containerGroups@2022-09-01'
encryptionProperties: !empty(cMKKeyName) ? {
identity: cMKUserAssignedIdentityResourceId
keyName: cMKKeyName
- keyVersion: !empty(cMKKeyVersion) ? cMKKeyVersion : last(split(cMKKeyVaultKey.properties.keyUriWithVersion, '/'))
- vaultBaseUrl: cmkKeyVault.properties.vaultUri
+ keyVersion: !empty(cMKKeyVersion) ? cMKKeyVersion : last(split(cMKKeyVault::cMKKey.properties.keyUriWithVersion, '/'))
+ vaultBaseUrl: cMKKeyVault.properties.vaultUri
} : null
imageRegistryCredentials: imageRegistryCredentials
initContainers: initContainers
From 223706a0a7d29251a9974d9f818f157aac074efc Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Thu, 19 Oct 2023 23:38:31 +0200
Subject: [PATCH 28/52] Updated logs for data collection
---
.../insights/data-collection-rule/README.md | 29 ++++++--
.../insights/data-collection-rule/main.bicep | 29 +++++---
.../insights/data-collection-rule/main.json | 68 ++++++++++++-------
3 files changed, 87 insertions(+), 39 deletions(-)
diff --git a/modules/insights/data-collection-rule/README.md b/modules/insights/data-collection-rule/README.md
index 495a3a8734..a2632e8b5f 100644
--- a/modules/insights/data-collection-rule/README.md
+++ b/modules/insights/data-collection-rule/README.md
@@ -14,7 +14,7 @@ This module deploys a Data Collection Rule.
| Resource Type | API Version |
| :-- | :-- |
-| `Microsoft.Authorization/locks` | [2017-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2017-04-01/locks) |
+| `Microsoft.Authorization/locks` | [2020-05-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2020-05-01/locks) |
| `Microsoft.Authorization/roleAssignments` | [2022-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2022-04-01/roleAssignments) |
| `Microsoft.Insights/dataCollectionRules` | [2021-09-01-preview](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Insights/2021-09-01-preview/dataCollectionRules) |
@@ -1519,7 +1519,7 @@ module dataCollectionRule 'br:bicep/modules/insights.data-collection-rule:1.0.0'
| [`enableDefaultTelemetry`](#parameter-enabledefaulttelemetry) | bool | Enable telemetry via the Customer Usage Attribution ID (GUID). |
| [`kind`](#parameter-kind) | string | The kind of the resource. |
| [`location`](#parameter-location) | string | Location for all Resources. |
-| [`lock`](#parameter-lock) | string | Specify the type of lock. |
+| [`lock`](#parameter-lock) | object | The lock settings of the service. |
| [`roleAssignments`](#parameter-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'. |
| [`streamDeclarations`](#parameter-streamdeclarations) | object | Declaration of custom streams used in this rule. |
| [`tags`](#parameter-tags) | object | Resource tags. |
@@ -1580,11 +1580,30 @@ Location for all Resources.
### Parameter: `lock`
-Specify the type of lock.
+The lock settings of the service.
+- Required: No
+- Type: object
+
+
+| Name | Required | Type | Description |
+| :-- | :-- | :--| :-- |
+| [`kind`](#parameter-lockkind) | No | string | Optional. Specify the type of lock. |
+| [`name`](#parameter-lockname) | No | string | Optional. Specify the name of lock. |
+
+### Parameter: `lock.kind`
+
+Optional. Specify the type of lock.
+
+- Required: No
+- Type: string
+- Allowed: `[CanNotDelete, None, ReadOnly]`
+
+### Parameter: `lock.name`
+
+Optional. Specify the name of lock.
+
- Required: No
- Type: string
-- Default: `''`
-- Allowed: `['', CanNotDelete, ReadOnly]`
### Parameter: `name`
diff --git a/modules/insights/data-collection-rule/main.bicep b/modules/insights/data-collection-rule/main.bicep
index 139fe62a5a..1c17c12f6a 100644
--- a/modules/insights/data-collection-rule/main.bicep
+++ b/modules/insights/data-collection-rule/main.bicep
@@ -37,13 +37,8 @@ param kind string = 'Linux'
@sys.description('Optional. Location for all Resources.')
param location string = resourceGroup().location
-@sys.description('Optional. Specify the type of lock.')
-@allowed([
- ''
- 'CanNotDelete'
- 'ReadOnly'
-])
-param lock string = ''
+@sys.description('Optional. The lock settings of the service.')
+param lock lockType
@sys.description('Optional. 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\'.')
param roleAssignments array = []
@@ -85,11 +80,11 @@ resource dataCollectionRule 'Microsoft.Insights/dataCollectionRules@2021-09-01-p
}
}
-resource dataCollectionRule_lock 'Microsoft.Authorization/locks@2017-04-01' = if (!empty(lock)) {
- name: '${dataCollectionRule.name}-${lock}-lock'
+resource dataCollectionRule_lock 'Microsoft.Authorization/locks@2020-05-01' = if (!empty(lock ?? {}) && lock.?kind != 'None') {
+ name: lock.?name ?? 'lock-${name}'
properties: {
- level: any(lock)
- notes: lock == 'CanNotDelete' ? 'Cannot delete resource or child resources.' : 'Cannot modify the resource or child resources.'
+ level: lock.?kind ?? ''
+ notes: lock.?kind == 'CanNotDelete' ? 'Cannot delete resource or child resources.' : 'Cannot delete or modify the resource or child resources.'
}
scope: dataCollectionRule
}
@@ -122,3 +117,15 @@ output resourceGroupName string = resourceGroup().name
@sys.description('The location the resource was deployed into.')
output location string = dataCollectionRule.location
+
+// =============== //
+// Definitions //
+// =============== //
+
+type lockType = {
+ @sys.description('Optional. Specify the name of lock.')
+ name: string?
+
+ @sys.description('Optional. Specify the type of lock.')
+ kind: ('CanNotDelete' | 'ReadOnly' | 'None')?
+}?
diff --git a/modules/insights/data-collection-rule/main.json b/modules/insights/data-collection-rule/main.json
index 9fd6a4d083..81c24ae888 100644
--- a/modules/insights/data-collection-rule/main.json
+++ b/modules/insights/data-collection-rule/main.json
@@ -1,16 +1,44 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
+ "languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "12233779363216703767"
+ "templateHash": "3483587059200697547"
},
"name": "Data Collection Rules",
"description": "This module deploys a Data Collection Rule.",
"owner": "Azure/module-maintainers"
},
+ "definitions": {
+ "lockType": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "nullable": true,
+ "metadata": {
+ "description": "Optional. Specify the name of lock."
+ }
+ },
+ "kind": {
+ "type": "string",
+ "allowedValues": [
+ "CanNotDelete",
+ "None",
+ "ReadOnly"
+ ],
+ "nullable": true,
+ "metadata": {
+ "description": "Optional. Specify the type of lock."
+ }
+ }
+ },
+ "nullable": true
+ }
+ },
"parameters": {
"name": {
"type": "string",
@@ -76,15 +104,9 @@
}
},
"lock": {
- "type": "string",
- "defaultValue": "",
- "allowedValues": [
- "",
- "CanNotDelete",
- "ReadOnly"
- ],
+ "$ref": "#/definitions/lockType",
"metadata": {
- "description": "Optional. Specify the type of lock."
+ "description": "Optional. The lock settings of the service."
}
},
"roleAssignments": {
@@ -109,8 +131,8 @@
}
}
},
- "resources": [
- {
+ "resources": {
+ "defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
@@ -124,7 +146,7 @@
}
}
},
- {
+ "dataCollectionRule": {
"type": "Microsoft.Insights/dataCollectionRules",
"apiVersion": "2021-09-01-preview",
"name": "[parameters('name')]",
@@ -140,21 +162,21 @@
"description": "[if(not(empty(parameters('description'))), parameters('description'), null())]"
}
},
- {
- "condition": "[not(empty(parameters('lock')))]",
+ "dataCollectionRule_lock": {
+ "condition": "[and(not(empty(coalesce(parameters('lock'), createObject()))), not(equals(tryGet(parameters('lock'), 'kind'), 'None')))]",
"type": "Microsoft.Authorization/locks",
- "apiVersion": "2017-04-01",
+ "apiVersion": "2020-05-01",
"scope": "[format('Microsoft.Insights/dataCollectionRules/{0}', parameters('name'))]",
- "name": "[format('{0}-{1}-lock', parameters('name'), parameters('lock'))]",
+ "name": "[coalesce(tryGet(parameters('lock'), 'name'), format('lock-{0}', parameters('name')))]",
"properties": {
- "level": "[parameters('lock')]",
- "notes": "[if(equals(parameters('lock'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot modify the resource or child resources.')]"
+ "level": "[coalesce(tryGet(parameters('lock'), 'kind'), '')]",
+ "notes": "[if(equals(tryGet(parameters('lock'), 'kind'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot delete or modify the resource or child resources.')]"
},
"dependsOn": [
- "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('name'))]"
+ "dataCollectionRule"
]
},
- {
+ "dataCollectionRule_roleAssignments": {
"copy": {
"name": "dataCollectionRule_roleAssignments",
"count": "[length(parameters('roleAssignments'))]"
@@ -429,10 +451,10 @@
}
},
"dependsOn": [
- "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('name'))]"
+ "dataCollectionRule"
]
}
- ],
+ },
"outputs": {
"name": {
"type": "string",
@@ -460,7 +482,7 @@
"metadata": {
"description": "The location the resource was deployed into."
},
- "value": "[reference(resourceId('Microsoft.Insights/dataCollectionRules', parameters('name')), '2021-09-01-preview', 'full').location]"
+ "value": "[reference('dataCollectionRule', '2021-09-01-preview', 'full').location]"
}
}
}
\ No newline at end of file
From 5433b513d3c35acd3c7564c4374d0df8ce133087 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 07:50:10 +0200
Subject: [PATCH 29/52] Updated cmk for auto
---
.../automation/automation-account/main.bicep | 13 ++++---
.../automation/automation-account/main.json | 34 ++++++++++---------
2 files changed, 24 insertions(+), 23 deletions(-)
diff --git a/modules/automation/automation-account/main.bicep b/modules/automation/automation-account/main.bicep
index ce12ca57a5..cf1f10bfe0 100644
--- a/modules/automation/automation-account/main.bicep
+++ b/modules/automation/automation-account/main.bicep
@@ -158,13 +158,12 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
}
resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
- name: last(split(cMKKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
-}
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
-resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
- name: '${last(split(cMKKeyVaultResourceId, '/'))}/${cMKKeyName}'!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
+ }
}
resource automationAccount 'Microsoft.Automation/automationAccounts@2022-08-08' = {
@@ -184,7 +183,7 @@ resource automationAccount 'Microsoft.Automation/automationAccounts@2022-08-08'
keyVaultProperties: {
keyName: cMKKeyName
keyVaultUri: cMKKeyVault.properties.vaultUri
- keyVersion: !empty(cMKKeyVersion) ? cMKKeyVersion : last(split(cMKKeyVaultKey.properties.keyUriWithVersion, '/'))
+ keyVersion: !empty(cMKKeyVersion) ? cMKKeyVersion : last(split(cMKKeyVault::cMKKey.properties.keyUriWithVersion, '/'))
}
} : null
publicNetworkAccess: !empty(publicNetworkAccess) ? (publicNetworkAccess == 'Disabled' ? false : true) : (!empty(privateEndpoints) ? false : null)
diff --git a/modules/automation/automation-account/main.json b/modules/automation/automation-account/main.json
index 5ffa04e30b..78fbfa0b65 100644
--- a/modules/automation/automation-account/main.json
+++ b/modules/automation/automation-account/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "1174270229343871055"
+ "templateHash": "7950772312586811014"
},
"name": "Automation Accounts",
"description": "This module deploys an Azure Automation Account.",
@@ -305,6 +305,18 @@
"identity": "[if(not(equals(variables('identityType'), 'None')), createObject('type', variables('identityType'), 'userAssignedIdentities', if(not(empty(parameters('userAssignedIdentities'))), parameters('userAssignedIdentities'), null())), null())]"
},
"resources": {
+ "cMKKeyVault::cMKKey": {
+ "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults/keys",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
+ "dependsOn": [
+ "cMKKeyVault"
+ ]
+ },
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
@@ -324,18 +336,9 @@
"existing": true,
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKKeyVaultResourceId'), '/'))]"
- },
- "cMKKeyVaultKey": {
- "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
- "existing": true,
- "type": "Microsoft.KeyVault/vaults/keys",
- "apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"automationAccount": {
"type": "Microsoft.Automation/automationAccounts",
@@ -348,13 +351,12 @@
"sku": {
"name": "[parameters('skuName')]"
},
- "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('keySource', 'Microsoft.KeyVault', 'identity', createObject('userAssignedIdentity', parameters('cMKUserAssignedIdentityResourceId')), 'keyVaultProperties', createObject('keyName', parameters('cMKKeyName'), 'keyVaultUri', reference('cMKKeyVault').vaultUri, 'keyVersion', if(not(empty(parameters('cMKKeyVersion'))), parameters('cMKKeyVersion'), last(split(reference('cMKKeyVaultKey').keyUriWithVersion, '/'))))), null())]",
+ "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('keySource', 'Microsoft.KeyVault', 'identity', createObject('userAssignedIdentity', parameters('cMKUserAssignedIdentityResourceId')), 'keyVaultProperties', createObject('keyName', parameters('cMKKeyName'), 'keyVaultUri', reference('cMKKeyVault').vaultUri, 'keyVersion', if(not(empty(parameters('cMKKeyVersion'))), parameters('cMKKeyVersion'), last(split(reference('cMKKeyVault::cMKKey').keyUriWithVersion, '/'))))), null())]",
"publicNetworkAccess": "[if(not(empty(parameters('publicNetworkAccess'))), if(equals(parameters('publicNetworkAccess'), 'Disabled'), false(), true()), if(not(empty(parameters('privateEndpoints'))), false(), null()))]",
"disableLocalAuth": "[parameters('disableLocalAuth')]"
},
"dependsOn": [
- "cMKKeyVault",
- "cMKKeyVaultKey"
+ "cMKKeyVault"
]
},
"automationAccount_lock": {
From 05e42e8d43d5547897eb4d18f64def666550554e Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 07:58:24 +0200
Subject: [PATCH 30/52] Updated batch pe test
---
modules/batch/batch-account/.test/common/main.test.bicep | 4 +---
modules/batch/batch-account/README.md | 8 ++------
2 files changed, 3 insertions(+), 9 deletions(-)
diff --git a/modules/batch/batch-account/.test/common/main.test.bicep b/modules/batch/batch-account/.test/common/main.test.bicep
index 6cdefd3b6a..0c9dc0bec0 100644
--- a/modules/batch/batch-account/.test/common/main.test.bicep
+++ b/modules/batch/batch-account/.test/common/main.test.bicep
@@ -88,9 +88,7 @@ module testDeployment '../../main.bicep' = {
roleAssignments: [
{
roleDefinitionIdOrName: 'Reader'
- principalIds: [
- nestedDependencies.outputs.managedIdentityPrincipalId
- ]
+ principalId: nestedDependencies.outputs.managedIdentityPrincipalId
principalType: 'ServicePrincipal'
}
]
diff --git a/modules/batch/batch-account/README.md b/modules/batch/batch-account/README.md
index 538f346570..74a18e3afd 100644
--- a/modules/batch/batch-account/README.md
+++ b/modules/batch/batch-account/README.md
@@ -67,9 +67,7 @@ module batchAccount 'br:bicep/modules/batch.batch-account:1.0.0' = {
]
roleAssignments: [
{
- principalIds: [
- ''
- ]
+ principalId: ''
principalType: 'ServicePrincipal'
roleDefinitionIdOrName: 'Reader'
}
@@ -147,9 +145,7 @@ module batchAccount 'br:bicep/modules/batch.batch-account:1.0.0' = {
],
"roleAssignments": [
{
- "principalIds": [
- ""
- ],
+ "principalId": "",
"principalType": "ServicePrincipal",
"roleDefinitionIdOrName": "Reader"
}
From 3cf91612f79feb42e3a691ab4ea6e625e2cb3f0e Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 08:05:45 +0200
Subject: [PATCH 31/52] Updated cog ser json
---
modules/cognitive-services/account/main.json | 40 ++++++++++----------
1 file changed, 21 insertions(+), 19 deletions(-)
diff --git a/modules/cognitive-services/account/main.json b/modules/cognitive-services/account/main.json
index 71b31d3c72..3053512263 100644
--- a/modules/cognitive-services/account/main.json
+++ b/modules/cognitive-services/account/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "18296719440990844872"
+ "templateHash": "9331368408921308569"
},
"name": "Cognitive Services",
"description": "This module deploys a Cognitive Service.",
@@ -356,6 +356,18 @@
"identity": "[if(not(equals(variables('identityType'), 'None')), createObject('type', variables('identityType'), 'userAssignedIdentities', if(not(empty(parameters('userAssignedIdentities'))), parameters('userAssignedIdentities'), null())), null())]"
},
"resources": {
+ "cMKKeyVault::cMKKey": {
+ "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults/keys",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
+ "dependsOn": [
+ "cMKKeyVault"
+ ]
+ },
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
@@ -374,28 +386,19 @@
"condition": "[not(empty(parameters('cMKKeyVaultResourceId')))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKKeyVaultResourceId'), '/'))]"
- },
- "cMKKeyVaultKey": {
- "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
- "existing": true,
- "type": "Microsoft.KeyVault/vaults/keys",
- "apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]"
+ "apiVersion": "2021-10-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"cMKUserAssignedIdentity": {
"condition": "[not(empty(parameters('cMKUserAssignedIdentityResourceId')))]",
"existing": true,
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"apiVersion": "2023-01-31",
- "subscriptionId": "[split(parameters('cMKUserAssignedIdentityResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKUserAssignedIdentityResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKUserAssignedIdentityResourceId'), '/'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyMsi'), '/'))]"
},
"cognitiveServices": {
"type": "Microsoft.CognitiveServices/accounts",
@@ -415,7 +418,7 @@
"allowedFqdnList": "[parameters('allowedFqdnList')]",
"apiProperties": "[parameters('apiProperties')]",
"disableLocalAuth": "[parameters('disableLocalAuth')]",
- "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('keySource', 'Microsoft.KeyVault', 'keyVaultProperties', createObject('identityClientId', reference('cMKUserAssignedIdentity').clientId, 'keyVaultUri', reference('cMKKeyVault').vaultUri, 'keyName', parameters('cMKKeyName'), 'keyVersion', if(not(empty(parameters('cMKKeyVersion'))), parameters('cMKKeyVersion'), last(split(reference('cMKKeyVaultKey').keyUriWithVersion, '/'))))), null())]",
+ "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('keySource', 'Microsoft.KeyVault', 'keyVaultProperties', createObject('identityClientId', reference('cMKUserAssignedIdentity').clientId, 'keyVaultUri', reference('cMKKeyVault').vaultUri, 'keyName', parameters('cMKKeyName'), 'keyVersion', if(not(empty(parameters('cMKKeyVersion'))), parameters('cMKKeyVersion'), last(split(reference('cMKKeyVault::cMKKey').keyUriWithVersion, '/'))))), null())]",
"migrationToken": "[if(not(empty(parameters('migrationToken'))), parameters('migrationToken'), null())]",
"restore": "[parameters('restore')]",
"restrictOutboundNetworkAccess": "[parameters('restrictOutboundNetworkAccess')]",
@@ -424,7 +427,6 @@
},
"dependsOn": [
"cMKKeyVault",
- "cMKKeyVaultKey",
"cMKUserAssignedIdentity"
]
},
From 66957847ac3755e6a4d47753a78163dbb24f5086 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 08:12:05 +0200
Subject: [PATCH 32/52] Updated VM
---
modules/compute/virtual-machine-scale-set/main.bicep | 4 ++--
modules/compute/virtual-machine-scale-set/main.json | 12 ++++++------
modules/compute/virtual-machine/main.bicep | 4 ++--
modules/compute/virtual-machine/main.json | 10 +++++-----
4 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/modules/compute/virtual-machine-scale-set/main.bicep b/modules/compute/virtual-machine-scale-set/main.bicep
index 4c376c7380..d7da341351 100644
--- a/modules/compute/virtual-machine-scale-set/main.bicep
+++ b/modules/compute/virtual-machine-scale-set/main.bicep
@@ -494,8 +494,8 @@ module vmss_microsoftAntiMalwareExtension 'extension/main.bicep' = if (extension
}
resource vmss_logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2021-06-01' existing = if (!empty(monitoringWorkspaceId)) {
- name: last(split(monitoringWorkspaceId, '/'))!
- scope: resourceGroup(split(monitoringWorkspaceId, '/')[2], split(monitoringWorkspaceId, '/')[4])
+ name: last(split((!empty(monitoringWorkspaceId) ? monitoringWorkspaceId : 'law'), '/'))!
+ scope: az.resourceGroup(split((!empty(monitoringWorkspaceId) ? monitoringWorkspaceId : '//'), '/')[2], split((!empty(monitoringWorkspaceId) ? monitoringWorkspaceId : '////'), '/')[4])
}
module vmss_microsoftMonitoringAgentExtension 'extension/main.bicep' = if (extensionMonitoringAgentConfig.enabled) {
diff --git a/modules/compute/virtual-machine-scale-set/main.json b/modules/compute/virtual-machine-scale-set/main.json
index 03061a4918..9274a59e54 100644
--- a/modules/compute/virtual-machine-scale-set/main.json
+++ b/modules/compute/virtual-machine-scale-set/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "11691873166192750677"
+ "templateHash": "6686356746172129467"
},
"name": "Virtual Machine Scale Sets",
"description": "This module deploys a Virtual Machine Scale Set.",
@@ -794,9 +794,9 @@
"existing": true,
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2021-06-01",
- "subscriptionId": "[split(parameters('monitoringWorkspaceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('monitoringWorkspaceId'), '/')[4]]",
- "name": "[last(split(parameters('monitoringWorkspaceId'), '/'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), 'law'), '/'))]"
},
"vmss_lock": {
"condition": "[and(not(empty(coalesce(parameters('lock'), createObject()))), not(equals(tryGet(parameters('lock'), 'kind'), 'None')))]",
@@ -1232,12 +1232,12 @@
"enableAutomaticUpgrade": "[if(contains(parameters('extensionMonitoringAgentConfig'), 'enableAutomaticUpgrade'), createObject('value', parameters('extensionMonitoringAgentConfig').enableAutomaticUpgrade), createObject('value', false()))]",
"settings": {
"value": {
- "workspaceId": "[if(not(empty(parameters('monitoringWorkspaceId'))), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(parameters('monitoringWorkspaceId'), '/')[2], split(parameters('monitoringWorkspaceId'), '/')[4]), 'Microsoft.OperationalInsights/workspaces', last(split(parameters('monitoringWorkspaceId'), '/'))), '2021-06-01').customerId, '')]"
+ "workspaceId": "[if(not(empty(parameters('monitoringWorkspaceId'))), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), '//'), '/')[2], split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), '////'), '/')[4]), 'Microsoft.OperationalInsights/workspaces', last(split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), 'law'), '/'))), '2021-06-01').customerId, '')]"
}
},
"protectedSettings": {
"value": {
- "workspaceKey": "[if(not(empty(parameters('monitoringWorkspaceId'))), listKeys(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(parameters('monitoringWorkspaceId'), '/')[2], split(parameters('monitoringWorkspaceId'), '/')[4]), 'Microsoft.OperationalInsights/workspaces', last(split(parameters('monitoringWorkspaceId'), '/'))), '2021-06-01').primarySharedKey, '')]"
+ "workspaceKey": "[if(not(empty(parameters('monitoringWorkspaceId'))), listKeys(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), '//'), '/')[2], split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), '////'), '/')[4]), 'Microsoft.OperationalInsights/workspaces', last(split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), 'law'), '/'))), '2021-06-01').primarySharedKey, '')]"
}
},
"enableDefaultTelemetry": {
diff --git a/modules/compute/virtual-machine/main.bicep b/modules/compute/virtual-machine/main.bicep
index 2e1204be57..b3c15c8c7f 100644
--- a/modules/compute/virtual-machine/main.bicep
+++ b/modules/compute/virtual-machine/main.bicep
@@ -558,8 +558,8 @@ module vm_microsoftAntiMalwareExtension 'extension/main.bicep' = if (extensionAn
}
resource vm_logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2021-06-01' existing = if (!empty(monitoringWorkspaceId)) {
- name: last(split(monitoringWorkspaceId, '/'))!
- scope: az.resourceGroup(split(monitoringWorkspaceId, '/')[2], split(monitoringWorkspaceId, '/')[4])
+ name: last(split((!empty(monitoringWorkspaceId) ? monitoringWorkspaceId : 'law'), '/'))!
+ scope: az.resourceGroup(split((!empty(monitoringWorkspaceId) ? monitoringWorkspaceId : '//'), '/')[2], split((!empty(monitoringWorkspaceId) ? monitoringWorkspaceId : '////'), '/')[4])
}
module vm_microsoftMonitoringAgentExtension 'extension/main.bicep' = if (extensionMonitoringAgentConfig.enabled) {
diff --git a/modules/compute/virtual-machine/main.json b/modules/compute/virtual-machine/main.json
index 09e5bbc131..c2ef35d1a5 100644
--- a/modules/compute/virtual-machine/main.json
+++ b/modules/compute/virtual-machine/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "6666222898286420921"
+ "templateHash": "6984217347675709865"
},
"name": "Virtual Machines",
"description": "This module deploys a Virtual Machine with one or multiple NICs and optionally one or multiple public IPs.",
@@ -786,9 +786,9 @@
"existing": true,
"type": "Microsoft.OperationalInsights/workspaces",
"apiVersion": "2021-06-01",
- "subscriptionId": "[split(parameters('monitoringWorkspaceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('monitoringWorkspaceId'), '/')[4]]",
- "name": "[last(split(parameters('monitoringWorkspaceId'), '/'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), 'law'), '/'))]"
},
"vm_lock": {
"condition": "[and(not(empty(coalesce(parameters('lock'), createObject()))), not(equals(tryGet(parameters('lock'), 'kind'), 'None')))]",
@@ -2834,7 +2834,7 @@
"tags": "[if(contains(parameters('extensionMonitoringAgentConfig'), 'tags'), createObject('value', parameters('extensionMonitoringAgentConfig').tags), createObject('value', createObject()))]",
"protectedSettings": {
"value": {
- "workspaceKey": "[if(not(empty(parameters('monitoringWorkspaceId'))), listKeys(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(parameters('monitoringWorkspaceId'), '/')[2], split(parameters('monitoringWorkspaceId'), '/')[4]), 'Microsoft.OperationalInsights/workspaces', last(split(parameters('monitoringWorkspaceId'), '/'))), '2021-06-01').primarySharedKey, '')]"
+ "workspaceKey": "[if(not(empty(parameters('monitoringWorkspaceId'))), listKeys(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), '//'), '/')[2], split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), '////'), '/')[4]), 'Microsoft.OperationalInsights/workspaces', last(split(if(not(empty(parameters('monitoringWorkspaceId'))), parameters('monitoringWorkspaceId'), 'law'), '/'))), '2021-06-01').primarySharedKey, '')]"
}
},
"enableDefaultTelemetry": {
From 4cf5872114570d1d4d570145fb03620dd34af245 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 08:14:24 +0200
Subject: [PATCH 33/52] Container group refresh
---
.../container-group/main.json | 36 ++++++++++---------
1 file changed, 19 insertions(+), 17 deletions(-)
diff --git a/modules/container-instance/container-group/main.json b/modules/container-instance/container-group/main.json
index 07e6df7729..6d60f75d9f 100644
--- a/modules/container-instance/container-group/main.json
+++ b/modules/container-instance/container-group/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "7574542077751658739"
+ "templateHash": "745176097189380240"
},
"name": "Container Instances Container Groups",
"description": "This module deploys a Container Instance Container Group.",
@@ -238,6 +238,18 @@
"identity": "[if(not(equals(variables('identityType'), 'None')), createObject('type', variables('identityType'), 'userAssignedIdentities', if(not(empty(parameters('userAssignedIdentities'))), parameters('userAssignedIdentities'), null())), null())]"
},
"resources": {
+ "cMKKeyVault::cMKKey": {
+ "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults/keys",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
+ "dependsOn": [
+ "cMKKeyVault"
+ ]
+ },
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
@@ -252,23 +264,14 @@
}
}
},
- "cmkKeyVault": {
+ "cMKKeyVault": {
"condition": "[not(empty(parameters('cMKKeyVaultResourceId')))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2021-06-01-preview",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKKeyVaultResourceId'), '/'))]"
- },
- "cMKKeyVaultKey": {
- "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
- "existing": true,
- "type": "Microsoft.KeyVault/vaults/keys",
"apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"containergroup": {
"type": "Microsoft.ContainerInstance/containerGroups",
@@ -277,10 +280,9 @@
"location": "[parameters('location')]",
"identity": "[variables('identity')]",
"tags": "[parameters('tags')]",
- "properties": "[union(createObject('containers', parameters('containers'), 'encryptionProperties', if(not(empty(parameters('cMKKeyName'))), createObject('identity', parameters('cMKUserAssignedIdentityResourceId'), 'keyName', parameters('cMKKeyName'), 'keyVersion', if(not(empty(parameters('cMKKeyVersion'))), parameters('cMKKeyVersion'), last(split(reference('cMKKeyVaultKey').keyUriWithVersion, '/'))), 'vaultBaseUrl', reference('cmkKeyVault').vaultUri), null()), 'imageRegistryCredentials', parameters('imageRegistryCredentials'), 'initContainers', parameters('initContainers'), 'restartPolicy', parameters('restartPolicy'), 'osType', parameters('osType'), 'ipAddress', createObject('type', parameters('ipAddressType'), 'autoGeneratedDomainNameLabelScope', if(not(empty(parameters('dnsNameServers'))), parameters('autoGeneratedDomainNameLabelScope'), null()), 'dnsNameLabel', parameters('dnsNameLabel'), 'ports', parameters('ipAddressPorts')), 'sku', parameters('sku'), 'subnetIds', if(not(empty(parameters('subnetId'))), createArray(createObject('id', parameters('subnetId'))), null()), 'volumes', parameters('volumes')), if(not(empty(parameters('dnsNameServers'))), createObject('dnsConfig', createObject('nameServers', parameters('dnsNameServers'), 'searchDomains', parameters('dnsSearchDomains'))), createObject()))]",
+ "properties": "[union(createObject('containers', parameters('containers'), 'encryptionProperties', if(not(empty(parameters('cMKKeyName'))), createObject('identity', parameters('cMKUserAssignedIdentityResourceId'), 'keyName', parameters('cMKKeyName'), 'keyVersion', if(not(empty(parameters('cMKKeyVersion'))), parameters('cMKKeyVersion'), last(split(reference('cMKKeyVault::cMKKey').keyUriWithVersion, '/'))), 'vaultBaseUrl', reference('cMKKeyVault').vaultUri), null()), 'imageRegistryCredentials', parameters('imageRegistryCredentials'), 'initContainers', parameters('initContainers'), 'restartPolicy', parameters('restartPolicy'), 'osType', parameters('osType'), 'ipAddress', createObject('type', parameters('ipAddressType'), 'autoGeneratedDomainNameLabelScope', if(not(empty(parameters('dnsNameServers'))), parameters('autoGeneratedDomainNameLabelScope'), null()), 'dnsNameLabel', parameters('dnsNameLabel'), 'ports', parameters('ipAddressPorts')), 'sku', parameters('sku'), 'subnetIds', if(not(empty(parameters('subnetId'))), createArray(createObject('id', parameters('subnetId'))), null()), 'volumes', parameters('volumes')), if(not(empty(parameters('dnsNameServers'))), createObject('dnsConfig', createObject('nameServers', parameters('dnsNameServers'), 'searchDomains', parameters('dnsSearchDomains'))), createObject()))]",
"dependsOn": [
- "cmkKeyVault",
- "cMKKeyVaultKey"
+ "cMKKeyVault"
]
},
"containergroup_lock": {
From 5fcd5ec9cf2845c09a282390de924696a73c121b Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 08:17:59 +0200
Subject: [PATCH 34/52] Updated reg
---
.../container-registry/registry/main.bicep | 18 +++++---
modules/container-registry/registry/main.json | 44 ++++++++++++-------
2 files changed, 39 insertions(+), 23 deletions(-)
diff --git a/modules/container-registry/registry/main.bicep b/modules/container-registry/registry/main.bicep
index 1f4ac8544c..75927d64ec 100644
--- a/modules/container-registry/registry/main.bicep
+++ b/modules/container-registry/registry/main.bicep
@@ -222,14 +222,18 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
}
}
-resource cMKUserAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' existing = if (!empty(cMKUserAssignedIdentityResourceId)) {
- name: last(split(cMKUserAssignedIdentityResourceId, '/'))!
- scope: resourceGroup(split(cMKUserAssignedIdentityResourceId, '/')[2], split(cMKUserAssignedIdentityResourceId, '/')[4])
+resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
+
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
+ }
}
-resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
- name: '${last(split(cMKKeyVaultResourceId, '/'))}/${cMKKeyName}'
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+resource cMKUserAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' existing = if (!empty(cMKUserAssignedIdentityResourceId)) {
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyMsi'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
}
resource registry 'Microsoft.ContainerRegistry/registries@2023-06-01-preview' = {
@@ -247,7 +251,7 @@ resource registry 'Microsoft.ContainerRegistry/registries@2023-06-01-preview' =
status: 'enabled'
keyVaultProperties: {
identity: cMKUserAssignedIdentity.properties.clientId
- keyIdentifier: !empty(cMKKeyVersion) ? '${cMKKeyVaultKey.properties.keyUri}/${cMKKeyVersion}' : cMKKeyVaultKey.properties.keyUriWithVersion
+ keyIdentifier: !empty(cMKKeyVersion) ? '${cMKKeyVault::cMKKey.properties.keyUri}/${cMKKeyVersion}' : cMKKeyVault::cMKKey.properties.keyUriWithVersion
}
} : null
policies: {
diff --git a/modules/container-registry/registry/main.json b/modules/container-registry/registry/main.json
index de195acd6c..8baa9eeff7 100644
--- a/modules/container-registry/registry/main.json
+++ b/modules/container-registry/registry/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "15598884416180127975"
+ "templateHash": "12613913283174213145"
},
"name": "Azure Container Registries (ACR)",
"description": "This module deploys an Azure Container Registry (ACR).",
@@ -406,6 +406,18 @@
"enableReferencedModulesTelemetry": false
},
"resources": {
+ "cMKKeyVault::cMKKey": {
+ "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults/keys",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
+ "dependsOn": [
+ "cMKKeyVault"
+ ]
+ },
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
@@ -420,23 +432,23 @@
}
}
},
+ "cMKKeyVault": {
+ "condition": "[not(empty(parameters('cMKKeyVaultResourceId')))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults",
+ "apiVersion": "2021-10-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
+ },
"cMKUserAssignedIdentity": {
"condition": "[not(empty(parameters('cMKUserAssignedIdentityResourceId')))]",
"existing": true,
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
- "apiVersion": "2018-11-30",
- "subscriptionId": "[split(parameters('cMKUserAssignedIdentityResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKUserAssignedIdentityResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKUserAssignedIdentityResourceId'), '/'))]"
- },
- "cMKKeyVaultKey": {
- "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
- "existing": true,
- "type": "Microsoft.KeyVault/vaults/keys",
- "apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]"
+ "apiVersion": "2023-01-31",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyMsi'), '/'))]"
},
"registry": {
"type": "Microsoft.ContainerRegistry/registries",
@@ -451,7 +463,7 @@
"properties": {
"anonymousPullEnabled": "[parameters('anonymousPullEnabled')]",
"adminUserEnabled": "[parameters('acrAdminUserEnabled')]",
- "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('status', 'enabled', 'keyVaultProperties', createObject('identity', reference('cMKUserAssignedIdentity').clientId, 'keyIdentifier', if(not(empty(parameters('cMKKeyVersion'))), format('{0}/{1}', reference('cMKKeyVaultKey').keyUri, parameters('cMKKeyVersion')), reference('cMKKeyVaultKey').keyUriWithVersion))), null())]",
+ "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('status', 'enabled', 'keyVaultProperties', createObject('identity', reference('cMKUserAssignedIdentity').clientId, 'keyIdentifier', if(not(empty(parameters('cMKKeyVersion'))), format('{0}/{1}', reference('cMKKeyVault::cMKKey').keyUri, parameters('cMKKeyVersion')), reference('cMKKeyVault::cMKKey').keyUriWithVersion))), null())]",
"policies": {
"azureADAuthenticationAsArmPolicy": {
"status": "[parameters('azureADAuthenticationAsArmPolicyStatus')]"
@@ -477,7 +489,7 @@
"zoneRedundancy": "[if(equals(parameters('acrSku'), 'Premium'), parameters('zoneRedundancy'), null())]"
},
"dependsOn": [
- "cMKKeyVaultKey",
+ "cMKKeyVault",
"cMKUserAssignedIdentity"
]
},
From 6a6fa909980c37c54e999f5c19d2ff0bbac365ea Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 08:23:48 +0200
Subject: [PATCH 35/52] Updated managed service
---
modules/container-service/managed-cluster/main.bicep | 6 ++++--
modules/container-service/managed-cluster/main.json | 10 ++++++----
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/modules/container-service/managed-cluster/main.bicep b/modules/container-service/managed-cluster/main.bicep
index 27201c8fb2..d4f3a4192b 100644
--- a/modules/container-service/managed-cluster/main.bicep
+++ b/modules/container-service/managed-cluster/main.bicep
@@ -465,7 +465,9 @@ resource managedCluster 'Microsoft.ContainerService/managedClusters@2023-07-02-p
ingressProfile: {
webAppRouting: {
enabled: webApplicationRoutingEnabled
- dnsZoneResourceId: !empty(dnsZoneResourceId) ? any(dnsZoneResourceId) : null
+ dnsZoneResourceIds: [
+ !empty(dnsZoneResourceId) ? any(dnsZoneResourceId) : null
+ ]
}
}
addonProfiles: {
@@ -696,7 +698,7 @@ module managedCluster_roleAssignments '.bicep/nested_roleAssignments.bicep' = [f
}]
resource dnsZone 'Microsoft.Network/dnsZones@2018-05-01' existing = if (dnsZoneResourceId != null && webApplicationRoutingEnabled) {
- name: last(split(dnsZoneResourceId, '/'))!
+ name: last(split((!empty(dnsZoneResourceId) ? dnsZoneResourceId : 'dummmyZone'), '/'))!
}
resource dnsZone_roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (enableDnsZoneContributorRoleAssignment == true && dnsZoneResourceId != null && webApplicationRoutingEnabled) {
diff --git a/modules/container-service/managed-cluster/main.json b/modules/container-service/managed-cluster/main.json
index 10118514e6..77d03fb85f 100644
--- a/modules/container-service/managed-cluster/main.json
+++ b/modules/container-service/managed-cluster/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "10441788183325724370"
+ "templateHash": "13409538219229947959"
},
"name": "Azure Kubernetes Service (AKS) Managed Clusters",
"description": "This module deploys an Azure Kubernetes Service (AKS) Managed Cluster.",
@@ -897,7 +897,9 @@
"ingressProfile": {
"webAppRouting": {
"enabled": "[parameters('webApplicationRoutingEnabled')]",
- "dnsZoneResourceId": "[if(not(empty(parameters('dnsZoneResourceId'))), parameters('dnsZoneResourceId'), null())]"
+ "dnsZoneResourceIds": [
+ "[if(not(empty(parameters('dnsZoneResourceId'))), parameters('dnsZoneResourceId'), null())]"
+ ]
}
},
"addonProfiles": {
@@ -1050,13 +1052,13 @@
"existing": true,
"type": "Microsoft.Network/dnsZones",
"apiVersion": "2018-05-01",
- "name": "[last(split(parameters('dnsZoneResourceId'), '/'))]"
+ "name": "[last(split(if(not(empty(parameters('dnsZoneResourceId'))), parameters('dnsZoneResourceId'), 'dummmyZone'), '/'))]"
},
"dnsZone_roleAssignment": {
"condition": "[and(and(equals(parameters('enableDnsZoneContributorRoleAssignment'), true()), not(equals(parameters('dnsZoneResourceId'), null()))), parameters('webApplicationRoutingEnabled'))]",
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
- "scope": "[format('Microsoft.Network/dnsZones/{0}', last(split(parameters('dnsZoneResourceId'), '/')))]",
+ "scope": "[format('Microsoft.Network/dnsZones/{0}', last(split(if(not(empty(parameters('dnsZoneResourceId'))), parameters('dnsZoneResourceId'), 'dummmyZone'), '/')))]",
"name": "[guid(parameters('dnsZoneResourceId'), subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'befefa01-2a29-4197-83a8-272ff33ce314'), 'DNS Zone Contributor')]",
"properties": {
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'befefa01-2a29-4197-83a8-272ff33ce314')]",
From 06cce417814202a861500aef717bc521a52374bf Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 08:29:32 +0200
Subject: [PATCH 36/52] Updated databricks
---
modules/databricks/workspace/main.bicep | 30 ++++++-----
modules/databricks/workspace/main.json | 66 +++++++++++++------------
2 files changed, 49 insertions(+), 47 deletions(-)
diff --git a/modules/databricks/workspace/main.bicep b/modules/databricks/workspace/main.bicep
index adcc98225c..cdf70662ed 100644
--- a/modules/databricks/workspace/main.bicep
+++ b/modules/databricks/workspace/main.bicep
@@ -171,24 +171,22 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
}
}
-resource cMKManagedDisksKeyVault 'Microsoft.KeyVault/vaults@2023-02-01' existing = if (!empty(cMKManagedDisksKeyVaultResourceId)) {
- name: last(split(cMKManagedDisksKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKManagedDisksKeyVaultResourceId, '/')[2], split(cMKManagedDisksKeyVaultResourceId, '/')[4])
-}
+resource cMKManagedDisksKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKManagedDisksKeyVaultResourceId)) {
+ name: last(split((!empty(cMKManagedDisksKeyVaultResourceId) ? cMKManagedDisksKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKManagedDisksKeyVaultResourceId) ? cMKManagedDisksKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKManagedDisksKeyVaultResourceId) ? cMKManagedDisksKeyVaultResourceId : '////'), '/')[4])
-resource cMKManagedDisksKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2023-02-01' existing = if (!empty(cMKManagedDisksKeyVaultResourceId) && !empty(cMKManagedDisksKeyName)) {
- name: '${last(split(cMKManagedDisksKeyVaultResourceId, '/'))}/${cMKManagedDisksKeyName}'!
- scope: resourceGroup(split(cMKManagedDisksKeyVaultResourceId, '/')[2], split(cMKManagedDisksKeyVaultResourceId, '/')[4])
+ resource cMKKeyDisk 'keys@2023-02-01' existing = if (!empty(cMKManagedDisksKeyName)) {
+ name: !empty(cMKManagedDisksKeyName) ? cMKManagedDisksKeyName : 'dummyKey'
+ }
}
-resource cMKManagedServicesKeyVault 'Microsoft.KeyVault/vaults@2023-02-01' existing = if (!empty(cMKManagedServicesKeyVaultResourceId)) {
- name: last(split(cMKManagedServicesKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKManagedServicesKeyVaultResourceId, '/')[2], split(cMKManagedServicesKeyVaultResourceId, '/')[4])
-}
+resource cMKManagedServicesKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKManagedServicesKeyVaultResourceId)) {
+ name: last(split((!empty(cMKManagedServicesKeyVaultResourceId) ? cMKManagedServicesKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKManagedServicesKeyVaultResourceId) ? cMKManagedServicesKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKManagedServicesKeyVaultResourceId) ? cMKManagedServicesKeyVaultResourceId : '////'), '/')[4])
-resource cMKManagedServicesKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2023-02-01' existing = if (!empty(cMKManagedServicesKeyVaultResourceId) && !empty(cMKManagedServicesKeyName)) {
- name: '${last(split(cMKManagedServicesKeyVaultResourceId, '/'))}/${cMKManagedServicesKeyName}'!
- scope: resourceGroup(split(cMKManagedServicesKeyVaultResourceId, '/')[2], split(cMKManagedServicesKeyVaultResourceId, '/')[4])
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKManagedServicesKeyName)) {
+ name: !empty(cMKManagedServicesKeyName) ? cMKManagedServicesKeyName : 'dummyKey'
+ }
}
resource workspace 'Microsoft.Databricks/workspaces@2023-02-01' = {
@@ -276,7 +274,7 @@ resource workspace 'Microsoft.Databricks/workspaces@2023-02-01' = {
keyVaultProperties: {
keyVaultUri: cMKManagedServicesKeyVault.properties.vaultUri
keyName: cMKManagedServicesKeyName
- keyVersion: !empty(cMKManagedServicesKeyVersion) ? cMKManagedServicesKeyVersion : last(split(cMKManagedServicesKeyVaultKey.properties.keyUriWithVersion, '/'))
+ keyVersion: !empty(cMKManagedServicesKeyVersion) ? cMKManagedServicesKeyVersion : last(split(cMKManagedServicesKeyVault::cMKKey.properties.keyUriWithVersion, '/'))
}
} : null
managedDisk: !empty(cMKManagedDisksKeyName) ? {
@@ -284,7 +282,7 @@ resource workspace 'Microsoft.Databricks/workspaces@2023-02-01' = {
keyVaultProperties: {
keyVaultUri: cMKManagedDisksKeyVault.properties.vaultUri
keyName: cMKManagedDisksKeyName
- keyVersion: !empty(cMKManagedDisksKeyVersion) ? cMKManagedDisksKeyVersion : last(split(cMKManagedDisksKeyVaultKey.properties.keyUriWithVersion, '/'))
+ keyVersion: !empty(cMKManagedDisksKeyVersion) ? cMKManagedDisksKeyVersion : last(split(cMKManagedDisksKeyVault::cMKKeyDisk.properties.keyUriWithVersion, '/'))
}
rotationToLatestKeyVersionEnabled: cMKManagedDisksKeyRotationToLatestKeyVersionEnabled
} : null
diff --git a/modules/databricks/workspace/main.json b/modules/databricks/workspace/main.json
index b33050d59d..a176ae81d9 100644
--- a/modules/databricks/workspace/main.json
+++ b/modules/databricks/workspace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "12018870674080457266"
+ "templateHash": "16205616448170164073"
},
"name": "Azure Databricks Workspaces",
"description": "This module deploys an Azure Databricks Workspace.",
@@ -349,6 +349,30 @@
"enableReferencedModulesTelemetry": false
},
"resources": {
+ "cMKManagedDisksKeyVault::cMKKeyDisk": {
+ "condition": "[and(not(empty(parameters('cMKManagedDisksKeyVaultResourceId'))), not(empty(parameters('cMKManagedDisksKeyName'))))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults/keys",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKManagedDisksKeyVaultResourceId'))), parameters('cMKManagedDisksKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKManagedDisksKeyVaultResourceId'))), parameters('cMKManagedDisksKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKManagedDisksKeyVaultResourceId'))), parameters('cMKManagedDisksKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKManagedDisksKeyName'))), parameters('cMKManagedDisksKeyName'), 'dummyKey'))]",
+ "dependsOn": [
+ "cMKManagedDisksKeyVault"
+ ]
+ },
+ "cMKManagedServicesKeyVault::cMKKey": {
+ "condition": "[and(not(empty(parameters('cMKManagedServicesKeyVaultResourceId'))), not(empty(parameters('cMKManagedServicesKeyName'))))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults/keys",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKManagedServicesKeyVaultResourceId'))), parameters('cMKManagedServicesKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKManagedServicesKeyVaultResourceId'))), parameters('cMKManagedServicesKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKManagedServicesKeyVaultResourceId'))), parameters('cMKManagedServicesKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKManagedServicesKeyName'))), parameters('cMKManagedServicesKeyName'), 'dummyKey'))]",
+ "dependsOn": [
+ "cMKManagedServicesKeyVault"
+ ]
+ },
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
@@ -367,37 +391,19 @@
"condition": "[not(empty(parameters('cMKManagedDisksKeyVaultResourceId')))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('cMKManagedDisksKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKManagedDisksKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKManagedDisksKeyVaultResourceId'), '/'))]"
- },
- "cMKManagedDisksKeyVaultKey": {
- "condition": "[and(not(empty(parameters('cMKManagedDisksKeyVaultResourceId'))), not(empty(parameters('cMKManagedDisksKeyName'))))]",
- "existing": true,
- "type": "Microsoft.KeyVault/vaults/keys",
- "apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('cMKManagedDisksKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKManagedDisksKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKManagedDisksKeyVaultResourceId'), '/')), parameters('cMKManagedDisksKeyName'))]"
+ "apiVersion": "2021-10-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKManagedDisksKeyVaultResourceId'))), parameters('cMKManagedDisksKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKManagedDisksKeyVaultResourceId'))), parameters('cMKManagedDisksKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKManagedDisksKeyVaultResourceId'))), parameters('cMKManagedDisksKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"cMKManagedServicesKeyVault": {
"condition": "[not(empty(parameters('cMKManagedServicesKeyVaultResourceId')))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('cMKManagedServicesKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKManagedServicesKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKManagedServicesKeyVaultResourceId'), '/'))]"
- },
- "cMKManagedServicesKeyVaultKey": {
- "condition": "[and(not(empty(parameters('cMKManagedServicesKeyVaultResourceId'))), not(empty(parameters('cMKManagedServicesKeyName'))))]",
- "existing": true,
- "type": "Microsoft.KeyVault/vaults/keys",
- "apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('cMKManagedServicesKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKManagedServicesKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKManagedServicesKeyVaultResourceId'), '/')), parameters('cMKManagedServicesKeyName'))]"
+ "apiVersion": "2021-10-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKManagedServicesKeyVaultResourceId'))), parameters('cMKManagedServicesKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKManagedServicesKeyVaultResourceId'))), parameters('cMKManagedServicesKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKManagedServicesKeyVaultResourceId'))), parameters('cMKManagedServicesKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"workspace": {
"type": "Microsoft.Databricks/workspaces",
@@ -413,13 +419,11 @@
"parameters": "[union(createObject('enableNoPublicIp', createObject('value', parameters('disablePublicIp')), 'prepareEncryption', createObject('value', parameters('prepareEncryption')), 'vnetAddressPrefix', createObject('value', parameters('vnetAddressPrefix')), 'requireInfrastructureEncryption', createObject('value', parameters('requireInfrastructureEncryption'))), if(not(empty(parameters('customVirtualNetworkResourceId'))), createObject('customVirtualNetworkId', createObject('value', parameters('customVirtualNetworkResourceId'))), createObject()), if(not(empty(parameters('amlWorkspaceResourceId'))), createObject('amlWorkspaceId', createObject('value', parameters('amlWorkspaceResourceId'))), createObject()), if(not(empty(parameters('customPrivateSubnetName'))), createObject('customPrivateSubnetName', createObject('value', parameters('customPrivateSubnetName'))), createObject()), if(not(empty(parameters('customPublicSubnetName'))), createObject('customPublicSubnetName', createObject('value', parameters('customPublicSubnetName'))), createObject()), if(not(empty(parameters('loadBalancerBackendPoolName'))), createObject('loadBalancerBackendPoolName', createObject('value', parameters('loadBalancerBackendPoolName'))), createObject()), if(not(empty(parameters('loadBalancerResourceId'))), createObject('loadBalancerId', createObject('value', parameters('loadBalancerResourceId'))), createObject()), if(not(empty(parameters('natGatewayName'))), createObject('natGatewayName', createObject('value', parameters('natGatewayName'))), createObject()), if(not(empty(parameters('publicIpName'))), createObject('publicIpName', createObject('value', parameters('publicIpName'))), createObject()), if(not(empty(parameters('storageAccountName'))), createObject('storageAccountName', createObject('value', parameters('storageAccountName'))), createObject()), if(not(empty(parameters('storageAccountSkuName'))), createObject('storageAccountSkuName', createObject('value', parameters('storageAccountSkuName'))), createObject()))]",
"publicNetworkAccess": "[parameters('publicNetworkAccess')]",
"requiredNsgRules": "[parameters('requiredNsgRules')]",
- "encryption": "[if(or(not(empty(parameters('cMKManagedServicesKeyName'))), not(empty(parameters('cMKManagedServicesKeyName')))), createObject('entities', createObject('managedServices', if(not(empty(parameters('cMKManagedServicesKeyName'))), createObject('keySource', 'Microsoft.Keyvault', 'keyVaultProperties', createObject('keyVaultUri', reference('cMKManagedServicesKeyVault').vaultUri, 'keyName', parameters('cMKManagedServicesKeyName'), 'keyVersion', if(not(empty(parameters('cMKManagedServicesKeyVersion'))), parameters('cMKManagedServicesKeyVersion'), last(split(reference('cMKManagedServicesKeyVaultKey').keyUriWithVersion, '/'))))), null()), 'managedDisk', if(not(empty(parameters('cMKManagedDisksKeyName'))), createObject('keySource', 'Microsoft.Keyvault', 'keyVaultProperties', createObject('keyVaultUri', reference('cMKManagedDisksKeyVault').vaultUri, 'keyName', parameters('cMKManagedDisksKeyName'), 'keyVersion', if(not(empty(parameters('cMKManagedDisksKeyVersion'))), parameters('cMKManagedDisksKeyVersion'), last(split(reference('cMKManagedDisksKeyVaultKey').keyUriWithVersion, '/')))), 'rotationToLatestKeyVersionEnabled', parameters('cMKManagedDisksKeyRotationToLatestKeyVersionEnabled')), null()))), null())]"
+ "encryption": "[if(or(not(empty(parameters('cMKManagedServicesKeyName'))), not(empty(parameters('cMKManagedServicesKeyName')))), createObject('entities', createObject('managedServices', if(not(empty(parameters('cMKManagedServicesKeyName'))), createObject('keySource', 'Microsoft.Keyvault', 'keyVaultProperties', createObject('keyVaultUri', reference('cMKManagedServicesKeyVault').vaultUri, 'keyName', parameters('cMKManagedServicesKeyName'), 'keyVersion', if(not(empty(parameters('cMKManagedServicesKeyVersion'))), parameters('cMKManagedServicesKeyVersion'), last(split(reference('cMKManagedServicesKeyVault::cMKKey').keyUriWithVersion, '/'))))), null()), 'managedDisk', if(not(empty(parameters('cMKManagedDisksKeyName'))), createObject('keySource', 'Microsoft.Keyvault', 'keyVaultProperties', createObject('keyVaultUri', reference('cMKManagedDisksKeyVault').vaultUri, 'keyName', parameters('cMKManagedDisksKeyName'), 'keyVersion', if(not(empty(parameters('cMKManagedDisksKeyVersion'))), parameters('cMKManagedDisksKeyVersion'), last(split(reference('cMKManagedDisksKeyVault::cMKKeyDisk').keyUriWithVersion, '/')))), 'rotationToLatestKeyVersionEnabled', parameters('cMKManagedDisksKeyRotationToLatestKeyVersionEnabled')), null()))), null())]"
},
"dependsOn": [
"cMKManagedDisksKeyVault",
- "cMKManagedDisksKeyVaultKey",
- "cMKManagedServicesKeyVault",
- "cMKManagedServicesKeyVaultKey"
+ "cMKManagedServicesKeyVault"
]
},
"workspace_lock": {
From d111569c27583e8740224156763552666eb8d1f1 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 08:31:53 +0200
Subject: [PATCH 37/52] Udated data factory
---
modules/data-factory/factory/main.bicep | 4 ++--
modules/data-factory/factory/main.json | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/modules/data-factory/factory/main.bicep b/modules/data-factory/factory/main.bicep
index 8a0685e3ae..973f187561 100644
--- a/modules/data-factory/factory/main.bicep
+++ b/modules/data-factory/factory/main.bicep
@@ -157,8 +157,8 @@ var identity = identityType != 'None' ? {
var enableReferencedModulesTelemetry = false
resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
- name: last(split(cMKKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
}
resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (enableDefaultTelemetry) {
diff --git a/modules/data-factory/factory/main.json b/modules/data-factory/factory/main.json
index 78a9efea3d..c52194153a 100644
--- a/modules/data-factory/factory/main.json
+++ b/modules/data-factory/factory/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "12584866101218671882"
+ "templateHash": "7844406569986738481"
},
"name": "Data Factories",
"description": "This module deploys a Data Factory.",
@@ -333,9 +333,9 @@
"existing": true,
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKKeyVaultResourceId'), '/'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
From 9e2534db2c4d5b262de880aa29265498c8c020c3 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 09:05:26 +0200
Subject: [PATCH 38/52] Fixed msi ref
---
modules/app-configuration/configuration-store/main.bicep | 4 ++--
modules/app-configuration/configuration-store/main.json | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/modules/app-configuration/configuration-store/main.bicep b/modules/app-configuration/configuration-store/main.bicep
index 9a4d2e75dd..84d4bf947f 100644
--- a/modules/app-configuration/configuration-store/main.bicep
+++ b/modules/app-configuration/configuration-store/main.bicep
@@ -160,8 +160,8 @@ resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empt
}
resource cMKUserAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' existing = if (!empty(cMKUserAssignedIdentityResourceId)) {
- name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyMsi'), '/'))!
- scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
+ name: last(split((!empty(cMKUserAssignedIdentityResourceId) ? cMKUserAssignedIdentityResourceId : 'dummyMsi'), '/'))!
+ scope: resourceGroup(split((!empty(cMKUserAssignedIdentityResourceId) ? cMKUserAssignedIdentityResourceId : '//'), '/')[2], split((!empty(cMKUserAssignedIdentityResourceId) ? cMKUserAssignedIdentityResourceId : '////'), '/')[4])
}
resource configurationStore 'Microsoft.AppConfiguration/configurationStores@2023-03-01' = {
diff --git a/modules/app-configuration/configuration-store/main.json b/modules/app-configuration/configuration-store/main.json
index cf6f84dcb5..b39777fc07 100644
--- a/modules/app-configuration/configuration-store/main.json
+++ b/modules/app-configuration/configuration-store/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "11343967706179576865"
+ "templateHash": "14429413611786326402"
},
"name": "App Configuration Stores",
"description": "This module deploys an App Configuration Store.",
@@ -325,9 +325,9 @@
"existing": true,
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"apiVersion": "2023-01-31",
- "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
- "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
- "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyMsi'), '/'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), parameters('cMKUserAssignedIdentityResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), parameters('cMKUserAssignedIdentityResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), parameters('cMKUserAssignedIdentityResourceId'), 'dummyMsi'), '/'))]"
},
"configurationStore": {
"type": "Microsoft.AppConfiguration/configurationStores",
From 6fcbe246bca66a2fe8bc852d05b0341ef481956f Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 09:10:53 +0200
Subject: [PATCH 39/52] Fixed script ref & cog
---
modules/cognitive-services/account/main.bicep | 4 ++--
modules/cognitive-services/account/main.json | 8 ++++----
utilities/tools/Set-Module.ps1 | 3 +--
3 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/modules/cognitive-services/account/main.bicep b/modules/cognitive-services/account/main.bicep
index 5fbb6da6e4..9bee40a178 100644
--- a/modules/cognitive-services/account/main.bicep
+++ b/modules/cognitive-services/account/main.bicep
@@ -211,8 +211,8 @@ resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empt
}
resource cMKUserAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' existing = if (!empty(cMKUserAssignedIdentityResourceId)) {
- name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyMsi'), '/'))!
- scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
+ name: last(split((!empty(cMKUserAssignedIdentityResourceId) ? cMKUserAssignedIdentityResourceId : 'dummyMsi'), '/'))!
+ scope: resourceGroup(split((!empty(cMKUserAssignedIdentityResourceId) ? cMKUserAssignedIdentityResourceId : '//'), '/')[2], split((!empty(cMKUserAssignedIdentityResourceId) ? cMKUserAssignedIdentityResourceId : '////'), '/')[4])
}
resource cognitiveServices 'Microsoft.CognitiveServices/accounts@2022-12-01' = {
diff --git a/modules/cognitive-services/account/main.json b/modules/cognitive-services/account/main.json
index 3053512263..c4e3c4d5a8 100644
--- a/modules/cognitive-services/account/main.json
+++ b/modules/cognitive-services/account/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "9331368408921308569"
+ "templateHash": "333012564949665738"
},
"name": "Cognitive Services",
"description": "This module deploys a Cognitive Service.",
@@ -396,9 +396,9 @@
"existing": true,
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"apiVersion": "2023-01-31",
- "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
- "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
- "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyMsi'), '/'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), parameters('cMKUserAssignedIdentityResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), parameters('cMKUserAssignedIdentityResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), parameters('cMKUserAssignedIdentityResourceId'), 'dummyMsi'), '/'))]"
},
"cognitiveServices": {
"type": "Microsoft.CognitiveServices/accounts",
diff --git a/utilities/tools/Set-Module.ps1 b/utilities/tools/Set-Module.ps1
index 4d322caa90..874cf09ddc 100644
--- a/utilities/tools/Set-Module.ps1
+++ b/utilities/tools/Set-Module.ps1
@@ -119,8 +119,6 @@ function Set-Module {
$job = $relevantTemplatePaths | ForEach-Object -ThrottleLimit $ThrottleLimit -AsJob -Parallel {
$resourceTypeIdentifier = ((Split-Path $_) -split '[\/|\\]{1}modules[\/|\\]{1}')[1] # avm/res//
- . $using:ReadMeScriptFilePath
-
###############
## Build ##
###############
@@ -134,6 +132,7 @@ function Set-Module {
################
if (-not $using:SkipReadMe) {
Write-Output "Generating readme for [$resourceTypeIdentifier]"
+ . $using:ReadMeScriptFilePath
# If the template was just build, we can pass the JSON into the readme script to be more efficient
$readmeTemplateFilePath = (-not $using:SkipBuild) ? (Join-Path (Split-Path $_ -Parent) 'main.json') : $_
From 357f693e1ff07369bf85cb9e2cebd16103a16de2 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 09:13:07 +0200
Subject: [PATCH 40/52] Fixed cotainer reg
---
modules/container-registry/registry/main.bicep | 4 ++--
modules/container-registry/registry/main.json | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/modules/container-registry/registry/main.bicep b/modules/container-registry/registry/main.bicep
index 75927d64ec..b4a3c04050 100644
--- a/modules/container-registry/registry/main.bicep
+++ b/modules/container-registry/registry/main.bicep
@@ -232,8 +232,8 @@ resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empt
}
resource cMKUserAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' existing = if (!empty(cMKUserAssignedIdentityResourceId)) {
- name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyMsi'), '/'))!
- scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
+ name: last(split((!empty(cMKUserAssignedIdentityResourceId) ? cMKUserAssignedIdentityResourceId : 'dummyMsi'), '/'))!
+ scope: resourceGroup(split((!empty(cMKUserAssignedIdentityResourceId) ? cMKUserAssignedIdentityResourceId : '//'), '/')[2], split((!empty(cMKUserAssignedIdentityResourceId) ? cMKUserAssignedIdentityResourceId : '////'), '/')[4])
}
resource registry 'Microsoft.ContainerRegistry/registries@2023-06-01-preview' = {
diff --git a/modules/container-registry/registry/main.json b/modules/container-registry/registry/main.json
index 8baa9eeff7..a12b37dde0 100644
--- a/modules/container-registry/registry/main.json
+++ b/modules/container-registry/registry/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "12613913283174213145"
+ "templateHash": "13715645846097523943"
},
"name": "Azure Container Registries (ACR)",
"description": "This module deploys an Azure Container Registry (ACR).",
@@ -446,9 +446,9 @@
"existing": true,
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"apiVersion": "2023-01-31",
- "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
- "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
- "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyMsi'), '/'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), parameters('cMKUserAssignedIdentityResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), parameters('cMKUserAssignedIdentityResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), parameters('cMKUserAssignedIdentityResourceId'), 'dummyMsi'), '/'))]"
},
"registry": {
"type": "Microsoft.ContainerRegistry/registries",
From a1cdf6490e5272edc5d1c5786e90856ca4cc6ae2 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 09:18:54 +0200
Subject: [PATCH 41/52] Atempted to fix managed-cluster
---
modules/container-service/managed-cluster/main.bicep | 8 ++++----
modules/container-service/managed-cluster/main.json | 10 ++++------
2 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/modules/container-service/managed-cluster/main.bicep b/modules/container-service/managed-cluster/main.bicep
index d4f3a4192b..3e3648a527 100644
--- a/modules/container-service/managed-cluster/main.bicep
+++ b/modules/container-service/managed-cluster/main.bicep
@@ -465,9 +465,9 @@ resource managedCluster 'Microsoft.ContainerService/managedClusters@2023-07-02-p
ingressProfile: {
webAppRouting: {
enabled: webApplicationRoutingEnabled
- dnsZoneResourceIds: [
- !empty(dnsZoneResourceId) ? any(dnsZoneResourceId) : null
- ]
+ dnsZoneResourceIds: !empty(dnsZoneResourceId) ? [
+ dnsZoneResourceId
+ ] : null
}
}
addonProfiles: {
@@ -698,7 +698,7 @@ module managedCluster_roleAssignments '.bicep/nested_roleAssignments.bicep' = [f
}]
resource dnsZone 'Microsoft.Network/dnsZones@2018-05-01' existing = if (dnsZoneResourceId != null && webApplicationRoutingEnabled) {
- name: last(split((!empty(dnsZoneResourceId) ? dnsZoneResourceId : 'dummmyZone'), '/'))!
+ name: last(split((!empty(dnsZoneResourceId) ? dnsZoneResourceId : '/dummmyZone'), '/'))!
}
resource dnsZone_roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (enableDnsZoneContributorRoleAssignment == true && dnsZoneResourceId != null && webApplicationRoutingEnabled) {
diff --git a/modules/container-service/managed-cluster/main.json b/modules/container-service/managed-cluster/main.json
index 77d03fb85f..a2363b3784 100644
--- a/modules/container-service/managed-cluster/main.json
+++ b/modules/container-service/managed-cluster/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "13409538219229947959"
+ "templateHash": "9142221246471978199"
},
"name": "Azure Kubernetes Service (AKS) Managed Clusters",
"description": "This module deploys an Azure Kubernetes Service (AKS) Managed Cluster.",
@@ -897,9 +897,7 @@
"ingressProfile": {
"webAppRouting": {
"enabled": "[parameters('webApplicationRoutingEnabled')]",
- "dnsZoneResourceIds": [
- "[if(not(empty(parameters('dnsZoneResourceId'))), parameters('dnsZoneResourceId'), null())]"
- ]
+ "dnsZoneResourceIds": "[if(not(empty(parameters('dnsZoneResourceId'))), createArray(parameters('dnsZoneResourceId')), null())]"
}
},
"addonProfiles": {
@@ -1052,13 +1050,13 @@
"existing": true,
"type": "Microsoft.Network/dnsZones",
"apiVersion": "2018-05-01",
- "name": "[last(split(if(not(empty(parameters('dnsZoneResourceId'))), parameters('dnsZoneResourceId'), 'dummmyZone'), '/'))]"
+ "name": "[last(split(if(not(empty(parameters('dnsZoneResourceId'))), parameters('dnsZoneResourceId'), '/dummmyZone'), '/'))]"
},
"dnsZone_roleAssignment": {
"condition": "[and(and(equals(parameters('enableDnsZoneContributorRoleAssignment'), true()), not(equals(parameters('dnsZoneResourceId'), null()))), parameters('webApplicationRoutingEnabled'))]",
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
- "scope": "[format('Microsoft.Network/dnsZones/{0}', last(split(if(not(empty(parameters('dnsZoneResourceId'))), parameters('dnsZoneResourceId'), 'dummmyZone'), '/')))]",
+ "scope": "[format('Microsoft.Network/dnsZones/{0}', last(split(if(not(empty(parameters('dnsZoneResourceId'))), parameters('dnsZoneResourceId'), '/dummmyZone'), '/')))]",
"name": "[guid(parameters('dnsZoneResourceId'), subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'befefa01-2a29-4197-83a8-272ff33ce314'), 'DNS Zone Contributor')]",
"properties": {
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'befefa01-2a29-4197-83a8-272ff33ce314')]",
From cfc937d20dd7b318d3f4e9303033052dccab4433 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 09:23:45 +0200
Subject: [PATCH 42/52] Try & fix new key treating in databricks
---
.../workspace/.test/common/dependencies.bicep | 10 ++++++++++
.../databricks/workspace/.test/common/main.test.bicep | 2 +-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/modules/databricks/workspace/.test/common/dependencies.bicep b/modules/databricks/workspace/.test/common/dependencies.bicep
index 31203d82a3..ebef077726 100644
--- a/modules/databricks/workspace/.test/common/dependencies.bicep
+++ b/modules/databricks/workspace/.test/common/dependencies.bicep
@@ -56,6 +56,13 @@ resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' = {
kty: 'RSA'
}
}
+
+ resource keyDisk 'keys@2022-07-01' = {
+ name: 'keyEncryptionKeyDisk'
+ properties: {
+ kty: 'RSA'
+ }
+ }
}
resource keyPermissions 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
@@ -329,5 +336,8 @@ output loadBalancerBackendPoolName string = loadBalancer.properties.backendAddre
@description('The name of the created Key Vault encryption key.')
output keyVaultKeyName string = keyVault::key.name
+@description('The name of the created Key Vault Disk encryption key.')
+output keyVaultDiskKeyName string = keyVault::keyDisk.name
+
@description('The principal ID of the created Managed Identity.')
output managedIdentityPrincipalId string = managedIdentity.properties.principalId
diff --git a/modules/databricks/workspace/.test/common/main.test.bicep b/modules/databricks/workspace/.test/common/main.test.bicep
index ae584f845e..e39481d4ac 100644
--- a/modules/databricks/workspace/.test/common/main.test.bicep
+++ b/modules/databricks/workspace/.test/common/main.test.bicep
@@ -101,7 +101,7 @@ module testDeployment '../../main.bicep' = {
}
cMKManagedServicesKeyName: nestedDependencies.outputs.keyVaultKeyName
cMKManagedServicesKeyVaultResourceId: nestedDependencies.outputs.keyVaultResourceId
- cMKManagedDisksKeyName: nestedDependencies.outputs.keyVaultKeyName
+ cMKManagedDisksKeyName: nestedDependencies.outputs.keyVaultDiskKeyName
cMKManagedDisksKeyVaultResourceId: nestedDependencies.outputs.keyVaultResourceId
cMKManagedDisksKeyRotationToLatestKeyVersionEnabled: true
storageAccountName: 'sa${namePrefix}${serviceShort}001'
From 948459586c68a58448c42e28462e637ca529175d Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 09:28:00 +0200
Subject: [PATCH 43/52] Updated db-for
---
.../db-for-my-sql/flexible-server/main.bicep | 18 +++++------
.../db-for-my-sql/flexible-server/main.json | 32 +++++++++----------
.../flexible-server/main.bicep | 12 ++++---
.../flexible-server/main.json | 32 +++++++++++++------
4 files changed, 55 insertions(+), 39 deletions(-)
diff --git a/modules/db-for-my-sql/flexible-server/main.bicep b/modules/db-for-my-sql/flexible-server/main.bicep
index 4042bdabab..419cf6b925 100644
--- a/modules/db-for-my-sql/flexible-server/main.bicep
+++ b/modules/db-for-my-sql/flexible-server/main.bicep
@@ -250,21 +250,21 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2022-09-01' = if (ena
}
}
-resource cMKKeyVault 'Microsoft.KeyVault/vaults@2023-02-01' existing = if (!empty(cMKKeyVaultResourceId)) {
- name: last(split(cMKKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
- resource cMKKey 'keys@2022-07-01' existing = if (!empty(cMKKeyName)) {
- name: cMKKeyName
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
}
}
-resource geoBackupCMKKeyVault 'Microsoft.KeyVault/vaults@2023-02-01' existing = if (!empty(geoBackupCMKKeyVaultResourceId)) {
- name: last(split(geoBackupCMKKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(geoBackupCMKKeyVaultResourceId, '/')[2], split(geoBackupCMKKeyVaultResourceId, '/')[4])
+resource geoBackupCMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(geoBackupCMKKeyVaultResourceId)) {
+ name: last(split((!empty(geoBackupCMKKeyVaultResourceId) ? geoBackupCMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(geoBackupCMKKeyVaultResourceId) ? geoBackupCMKKeyVaultResourceId : '//'), '/')[2], split((!empty(geoBackupCMKKeyVaultResourceId) ? geoBackupCMKKeyVaultResourceId : '////'), '/')[4])
resource geoBackupCMKKey 'keys@2023-02-01' existing = if (!empty(geoBackupCMKKeyName)) {
- name: geoBackupCMKKeyName
+ name: !empty(geoBackupCMKKeyName) ? geoBackupCMKKeyName : 'dummyKey'
}
}
diff --git a/modules/db-for-my-sql/flexible-server/main.json b/modules/db-for-my-sql/flexible-server/main.json
index 14934d696f..803d30c7b5 100644
--- a/modules/db-for-my-sql/flexible-server/main.json
+++ b/modules/db-for-my-sql/flexible-server/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "9516546029876865175"
+ "templateHash": "4402521755740806457"
},
"name": "DBforMySQL Flexible Servers",
"description": "This module deploys a DBforMySQL Flexible Server.",
@@ -455,10 +455,10 @@
"condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults/keys",
- "apiVersion": "2022-07-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
"dependsOn": [
"cMKKeyVault"
]
@@ -468,9 +468,9 @@
"existing": true,
"type": "Microsoft.KeyVault/vaults/keys",
"apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('geoBackupCMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('geoBackupCMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('geoBackupCMKKeyVaultResourceId'), '/')), parameters('geoBackupCMKKeyName'))]",
+ "subscriptionId": "[split(if(not(empty(parameters('geoBackupCMKKeyVaultResourceId'))), parameters('geoBackupCMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('geoBackupCMKKeyVaultResourceId'))), parameters('geoBackupCMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('geoBackupCMKKeyVaultResourceId'))), parameters('geoBackupCMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('geoBackupCMKKeyName'))), parameters('geoBackupCMKKeyName'), 'dummyKey'))]",
"dependsOn": [
"geoBackupCMKKeyVault"
]
@@ -493,19 +493,19 @@
"condition": "[not(empty(parameters('cMKKeyVaultResourceId')))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKKeyVaultResourceId'), '/'))]"
+ "apiVersion": "2021-10-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"geoBackupCMKKeyVault": {
"condition": "[not(empty(parameters('geoBackupCMKKeyVaultResourceId')))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2023-02-01",
- "subscriptionId": "[split(parameters('geoBackupCMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('geoBackupCMKKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('geoBackupCMKKeyVaultResourceId'), '/'))]"
+ "apiVersion": "2021-10-01",
+ "subscriptionId": "[split(if(not(empty(parameters('geoBackupCMKKeyVaultResourceId'))), parameters('geoBackupCMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('geoBackupCMKKeyVaultResourceId'))), parameters('geoBackupCMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('geoBackupCMKKeyVaultResourceId'))), parameters('geoBackupCMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"flexibleServer": {
"type": "Microsoft.DBforMySQL/flexibleServers",
diff --git a/modules/db-for-postgre-sql/flexible-server/main.bicep b/modules/db-for-postgre-sql/flexible-server/main.bicep
index f89cfe56c3..16b25a4744 100644
--- a/modules/db-for-postgre-sql/flexible-server/main.bicep
+++ b/modules/db-for-postgre-sql/flexible-server/main.bicep
@@ -231,9 +231,13 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
}
}
-resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2022-07-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
- name: '${last(split(cMKKeyVaultResourceId, '/'))}/${cMKKeyName}'
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
+
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
+ }
}
resource flexibleServer 'Microsoft.DBforPostgreSQL/flexibleServers@2022-12-01' = {
@@ -263,7 +267,7 @@ resource flexibleServer 'Microsoft.DBforPostgreSQL/flexibleServers@2022-12-01' =
}
createMode: createMode
dataEncryption: !empty(cMKKeyName) ? {
- primaryKeyURI: !empty(cMKKeyVersion) ? '${cMKKeyVaultKey.properties.keyUri}/${cMKKeyVersion}' : cMKKeyVaultKey.properties.keyUriWithVersion
+ primaryKeyURI: !empty(cMKKeyVersion) ? '${cMKKeyVault::cMKKey.properties.keyUri}/${cMKKeyVersion}' : cMKKeyVault::cMKKey.properties.keyUriWithVersion
primaryUserAssignedIdentityId: cMKUserAssignedIdentityResourceId
type: 'AzureKeyVault'
} : null
diff --git a/modules/db-for-postgre-sql/flexible-server/main.json b/modules/db-for-postgre-sql/flexible-server/main.json
index a777f2cfde..d432f9e923 100644
--- a/modules/db-for-postgre-sql/flexible-server/main.json
+++ b/modules/db-for-postgre-sql/flexible-server/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "14367037120774129856"
+ "templateHash": "12105259818259511725"
},
"name": "DBforPostgreSQL Flexible Servers",
"description": "This module deploys a DBforPostgreSQL Flexible Server.",
@@ -420,6 +420,18 @@
"enableReferencedModulesTelemetry": false
},
"resources": {
+ "cMKKeyVault::cMKKey": {
+ "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults/keys",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
+ "dependsOn": [
+ "cMKKeyVault"
+ ]
+ },
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
@@ -434,14 +446,14 @@
}
}
},
- "cMKKeyVaultKey": {
- "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
+ "cMKKeyVault": {
+ "condition": "[not(empty(parameters('cMKKeyVaultResourceId')))]",
"existing": true,
- "type": "Microsoft.KeyVault/vaults/keys",
- "apiVersion": "2022-07-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]"
+ "type": "Microsoft.KeyVault/vaults",
+ "apiVersion": "2021-10-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"flexibleServer": {
"type": "Microsoft.DBforPostgreSQL/flexibleServers",
@@ -471,7 +483,7 @@
"geoRedundantBackup": "[parameters('geoRedundantBackup')]"
},
"createMode": "[parameters('createMode')]",
- "dataEncryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('primaryKeyURI', if(not(empty(parameters('cMKKeyVersion'))), format('{0}/{1}', reference('cMKKeyVaultKey').keyUri, parameters('cMKKeyVersion')), reference('cMKKeyVaultKey').keyUriWithVersion), 'primaryUserAssignedIdentityId', parameters('cMKUserAssignedIdentityResourceId'), 'type', 'AzureKeyVault'), null())]",
+ "dataEncryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('primaryKeyURI', if(not(empty(parameters('cMKKeyVersion'))), format('{0}/{1}', reference('cMKKeyVault::cMKKey').keyUri, parameters('cMKKeyVersion')), reference('cMKKeyVault::cMKKey').keyUriWithVersion), 'primaryUserAssignedIdentityId', parameters('cMKUserAssignedIdentityResourceId'), 'type', 'AzureKeyVault'), null())]",
"highAvailability": {
"mode": "[parameters('highAvailability')]",
"standbyAvailabilityZone": "[if(equals(parameters('highAvailability'), 'SameZone'), parameters('availabilityZone'), null())]"
@@ -486,7 +498,7 @@
"version": "[parameters('version')]"
},
"dependsOn": [
- "cMKKeyVaultKey"
+ "cMKKeyVault"
]
},
"flexibleServer_lock": {
From 2523f734edb536ba7726b7384d9e94916188cc4e Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 09:33:01 +0200
Subject: [PATCH 44/52] Updated log for digital twin
---
.../digital-twins/digital-twins-instance/README.md | 1 -
.../digital-twins/digital-twins-instance/main.bicep | 8 ++++----
.../digital-twins/digital-twins-instance/main.json | 12 ++++++------
3 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/modules/digital-twins/digital-twins-instance/README.md b/modules/digital-twins/digital-twins-instance/README.md
index 1075d78369..f7fa5d9476 100644
--- a/modules/digital-twins/digital-twins-instance/README.md
+++ b/modules/digital-twins/digital-twins-instance/README.md
@@ -14,7 +14,6 @@ This module deploys an Azure Digital Twins Instance.
| Resource Type | API Version |
| :-- | :-- |
-| `Microsoft.Authorization/locks` | [2017-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2017-04-01/locks) |
| `Microsoft.Authorization/locks` | [2020-05-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2020-05-01/locks) |
| `Microsoft.Authorization/roleAssignments` | [2022-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2022-04-01/roleAssignments) |
| `Microsoft.DigitalTwins/digitalTwinsInstances` | [2023-01-31](https://learn.microsoft.com/en-us/azure/templates/Microsoft.DigitalTwins/2023-01-31/digitalTwinsInstances) |
diff --git a/modules/digital-twins/digital-twins-instance/main.bicep b/modules/digital-twins/digital-twins-instance/main.bicep
index 7b803a5b93..1b66f5077c 100644
--- a/modules/digital-twins/digital-twins-instance/main.bicep
+++ b/modules/digital-twins/digital-twins-instance/main.bicep
@@ -205,11 +205,11 @@ module digitalTwinsInstance_privateEndpoints '../../network/private-endpoint/mai
}
}]
-resource digitalTwinsInstance_lock 'Microsoft.Authorization/locks@2017-04-01' = if (!empty(lock)) {
- name: '${digitalTwinsInstance.name}-${lock}-lock'
+resource digitalTwinsInstance_lock 'Microsoft.Authorization/locks@2020-05-01' = if (!empty(lock ?? {}) && lock.?kind != 'None') {
+ name: lock.?name ?? 'lock-${name}'
properties: {
- level: any(lock)
- notes: lock == 'CanNotDelete' ? 'Cannot delete resource or child resources.' : 'Cannot modify the resource or child resources.'
+ level: lock.?kind ?? ''
+ notes: lock.?kind == 'CanNotDelete' ? 'Cannot delete resource or child resources.' : 'Cannot delete or modify the resource or child resources.'
}
scope: digitalTwinsInstance
}
diff --git a/modules/digital-twins/digital-twins-instance/main.json b/modules/digital-twins/digital-twins-instance/main.json
index f4b34ccaea..f156f61380 100644
--- a/modules/digital-twins/digital-twins-instance/main.json
+++ b/modules/digital-twins/digital-twins-instance/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "14910327860190049489"
+ "templateHash": "18430271797869106154"
},
"name": "Digital Twins Instances",
"description": "This module deploys an Azure Digital Twins Instance.",
@@ -255,14 +255,14 @@
}
},
"digitalTwinsInstance_lock": {
- "condition": "[not(empty(parameters('lock')))]",
+ "condition": "[and(not(empty(coalesce(parameters('lock'), createObject()))), not(equals(tryGet(parameters('lock'), 'kind'), 'None')))]",
"type": "Microsoft.Authorization/locks",
- "apiVersion": "2017-04-01",
+ "apiVersion": "2020-05-01",
"scope": "[format('Microsoft.DigitalTwins/digitalTwinsInstances/{0}', parameters('name'))]",
- "name": "[format('{0}-{1}-lock', parameters('name'), parameters('lock'))]",
+ "name": "[coalesce(tryGet(parameters('lock'), 'name'), format('lock-{0}', parameters('name')))]",
"properties": {
- "level": "[parameters('lock')]",
- "notes": "[if(equals(parameters('lock'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot modify the resource or child resources.')]"
+ "level": "[coalesce(tryGet(parameters('lock'), 'kind'), '')]",
+ "notes": "[if(equals(tryGet(parameters('lock'), 'kind'), 'CanNotDelete'), 'Cannot delete resource or child resources.', 'Cannot delete or modify the resource or child resources.')]"
},
"dependsOn": [
"digitalTwinsInstance"
From e99050cee38670ccc3297859355ccec1b289d1e5 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 09:54:02 +0200
Subject: [PATCH 45/52] Updated ML
---
.../workspace/main.bicep | 12 +++++---
.../workspace/main.json | 30 +++++++++++++------
2 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/modules/machine-learning-services/workspace/main.bicep b/modules/machine-learning-services/workspace/main.bicep
index ad3c021a6a..38af26ff9f 100644
--- a/modules/machine-learning-services/workspace/main.bicep
+++ b/modules/machine-learning-services/workspace/main.bicep
@@ -184,9 +184,13 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
}
}
-resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
- name: '${last(split(cMKKeyVaultResourceId, '/'))}/${cMKKeyName}'
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
+
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
+ }
}
resource workspace 'Microsoft.MachineLearningServices/workspaces@2022-10-01' = {
@@ -215,7 +219,7 @@ resource workspace 'Microsoft.MachineLearningServices/workspaces@2022-10-01' = {
} : null
keyVaultProperties: {
keyVaultArmId: cMKKeyVaultResourceId
- keyIdentifier: !empty(cMKKeyVersion) ? '${cMKKeyVaultKey.properties.keyUri}/${cMKKeyVersion}' : cMKKeyVaultKey.properties.keyUriWithVersion
+ keyIdentifier: !empty(cMKKeyVersion) ? '${cMKKeyVault::cMKKey.properties.keyUri}/${cMKKeyVersion}' : cMKKeyVault::cMKKey.properties.keyUriWithVersion
}
} : null
imageBuildCompute: imageBuildCompute
diff --git a/modules/machine-learning-services/workspace/main.json b/modules/machine-learning-services/workspace/main.json
index 6e07dd0f64..5f059e2b37 100644
--- a/modules/machine-learning-services/workspace/main.json
+++ b/modules/machine-learning-services/workspace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "13016639761646646515"
+ "templateHash": "7851635446929911077"
},
"name": "Machine Learning Services Workspaces",
"description": "This module deploys a Machine Learning Services Workspace.",
@@ -333,6 +333,18 @@
"diagnosticsLogs": "[if(contains(parameters('diagnosticLogCategoriesToEnable'), 'allLogs'), createArray(createObject('categoryGroup', 'allLogs', 'enabled', true())), if(contains(parameters('diagnosticLogCategoriesToEnable'), ''), createArray(), variables('diagnosticsLogsSpecified')))]"
},
"resources": {
+ "cMKKeyVault::cMKKey": {
+ "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults/keys",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
+ "dependsOn": [
+ "cMKKeyVault"
+ ]
+ },
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
"type": "Microsoft.Resources/deployments",
@@ -347,14 +359,14 @@
}
}
},
- "cMKKeyVaultKey": {
- "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
+ "cMKKeyVault": {
+ "condition": "[not(empty(parameters('cMKKeyVaultResourceId')))]",
"existing": true,
- "type": "Microsoft.KeyVault/vaults/keys",
+ "type": "Microsoft.KeyVault/vaults",
"apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"workspace": {
"type": "Microsoft.MachineLearningServices/workspaces",
@@ -377,7 +389,7 @@
"allowPublicAccessWhenBehindVnet": "[parameters('allowPublicAccessWhenBehindVnet')]",
"description": "[parameters('description')]",
"discoveryUrl": "[parameters('discoveryUrl')]",
- "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('status', 'Enabled', 'identity', if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), createObject('userAssignedIdentity', parameters('cMKUserAssignedIdentityResourceId')), null()), 'keyVaultProperties', createObject('keyVaultArmId', parameters('cMKKeyVaultResourceId'), 'keyIdentifier', if(not(empty(parameters('cMKKeyVersion'))), format('{0}/{1}', reference('cMKKeyVaultKey').keyUri, parameters('cMKKeyVersion')), reference('cMKKeyVaultKey').keyUriWithVersion))), null())]",
+ "encryption": "[if(not(empty(parameters('cMKKeyName'))), createObject('status', 'Enabled', 'identity', if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), createObject('userAssignedIdentity', parameters('cMKUserAssignedIdentityResourceId')), null()), 'keyVaultProperties', createObject('keyVaultArmId', parameters('cMKKeyVaultResourceId'), 'keyIdentifier', if(not(empty(parameters('cMKKeyVersion'))), format('{0}/{1}', reference('cMKKeyVault::cMKKey').keyUri, parameters('cMKKeyVersion')), reference('cMKKeyVault::cMKKey').keyUriWithVersion))), null())]",
"imageBuildCompute": "[parameters('imageBuildCompute')]",
"primaryUserAssignedIdentity": "[parameters('primaryUserAssignedIdentity')]",
"publicNetworkAccess": "[if(not(empty(parameters('publicNetworkAccess'))), parameters('publicNetworkAccess'), if(not(empty(parameters('privateEndpoints'))), 'Disabled', 'Enabled'))]",
@@ -385,7 +397,7 @@
"sharedPrivateLinkResources": "[parameters('sharedPrivateLinkResources')]"
},
"dependsOn": [
- "cMKKeyVaultKey"
+ "cMKKeyVault"
]
},
"workspace_lock": {
From b0bd43e22abe903cfd40c84dbb1d72e93bd07304 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 10:37:16 +0200
Subject: [PATCH 46/52] Update synapse
---
modules/synapse/workspace/main.bicep | 13 +++++------
modules/synapse/workspace/main.json | 35 +++++++++++++++-------------
2 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/modules/synapse/workspace/main.bicep b/modules/synapse/workspace/main.bicep
index 0d039d366d..9f1bac808f 100644
--- a/modules/synapse/workspace/main.bicep
+++ b/modules/synapse/workspace/main.bicep
@@ -159,13 +159,12 @@ var diagnosticsLogs = contains(diagnosticLogCategoriesToEnable, 'allLogs') ? [
var enableReferencedModulesTelemetry = false
resource cMKKeyVault 'Microsoft.KeyVault/vaults@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId)) {
- name: last(split(cMKKeyVaultResourceId, '/'))!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
-}
+ name: last(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : 'dummyVault'), '/'))!
+ scope: resourceGroup(split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '//'), '/')[2], split((!empty(cMKKeyVaultResourceId) ? cMKKeyVaultResourceId : '////'), '/')[4])
-resource cMKKeyVaultKey 'Microsoft.KeyVault/vaults/keys@2021-10-01' existing = if (!empty(cMKKeyVaultResourceId) && !empty(cMKKeyName)) {
- name: '${last(split(cMKKeyVaultResourceId, '/'))}/${cMKKeyName}'!
- scope: resourceGroup(split(cMKKeyVaultResourceId, '/')[2], split(cMKKeyVaultResourceId, '/')[4])
+ resource cMKKey 'keys@2023-02-01' existing = if (!empty(cMKKeyName)) {
+ name: !empty(cMKKeyName) ? cMKKeyName : 'dummyKey'
+ }
}
resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (enableDefaultTelemetry) {
@@ -203,7 +202,7 @@ resource workspace 'Microsoft.Synapse/workspaces@2021-06-01' = {
useSystemAssignedIdentity: cMKUseSystemAssignedIdentity
}
key: {
- keyVaultUrl: cMKKeyVaultKey.properties.keyUri
+ keyVaultUrl: cMKKeyVault::cMKKey.properties.keyUri
name: cMKKeyName
}
}
diff --git a/modules/synapse/workspace/main.json b/modules/synapse/workspace/main.json
index f4f45edcc9..8c6486e6ea 100644
--- a/modules/synapse/workspace/main.json
+++ b/modules/synapse/workspace/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "17488808869576693510"
+ "templateHash": "2812430715889836837"
},
"name": "Synapse Workspaces",
"description": "This module deploys a Synapse Workspace.",
@@ -329,23 +329,26 @@
"enableReferencedModulesTelemetry": false
},
"resources": {
+ "cMKKeyVault::cMKKey": {
+ "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
+ "existing": true,
+ "type": "Microsoft.KeyVault/vaults/keys",
+ "apiVersion": "2023-02-01",
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[format('{0}/{1}', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/')), if(not(empty(parameters('cMKKeyName'))), parameters('cMKKeyName'), 'dummyKey'))]",
+ "dependsOn": [
+ "cMKKeyVault"
+ ]
+ },
"cMKKeyVault": {
"condition": "[not(empty(parameters('cMKKeyVaultResourceId')))]",
"existing": true,
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[last(split(parameters('cMKKeyVaultResourceId'), '/'))]"
- },
- "cMKKeyVaultKey": {
- "condition": "[and(not(empty(parameters('cMKKeyVaultResourceId'))), not(empty(parameters('cMKKeyName'))))]",
- "existing": true,
- "type": "Microsoft.KeyVault/vaults/keys",
- "apiVersion": "2021-10-01",
- "subscriptionId": "[split(parameters('cMKKeyVaultResourceId'), '/')[2]]",
- "resourceGroup": "[split(parameters('cMKKeyVaultResourceId'), '/')[4]]",
- "name": "[format('{0}/{1}', last(split(parameters('cMKKeyVaultResourceId'), '/')), parameters('cMKKeyName'))]"
+ "subscriptionId": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '//'), '/')[2]]",
+ "resourceGroup": "[split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), '////'), '/')[4]]",
+ "name": "[last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))]"
},
"defaultTelemetry": {
"condition": "[parameters('enableDefaultTelemetry')]",
@@ -377,7 +380,7 @@
"filesystem": "[parameters('defaultDataLakeStorageFilesystem')]",
"createManagedPrivateEndpoint": "[if(parameters('managedVirtualNetwork'), parameters('defaultDataLakeStorageCreateManagedPrivateEndpoint'), null())]"
},
- "encryption": "[if(parameters('encryption'), createObject('cmk', createObject('kekIdentity', createObject('userAssignedIdentity', if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), parameters('cMKUserAssignedIdentityResourceId'), null()), 'useSystemAssignedIdentity', parameters('cMKUseSystemAssignedIdentity')), 'key', createObject('keyVaultUrl', reference('cMKKeyVaultKey').keyUri, 'name', parameters('cMKKeyName')))), null())]",
+ "encryption": "[if(parameters('encryption'), createObject('cmk', createObject('kekIdentity', createObject('userAssignedIdentity', if(not(empty(parameters('cMKUserAssignedIdentityResourceId'))), parameters('cMKUserAssignedIdentityResourceId'), null()), 'useSystemAssignedIdentity', parameters('cMKUseSystemAssignedIdentity')), 'key', createObject('keyVaultUrl', reference('cMKKeyVault::cMKKey').keyUri, 'name', parameters('cMKKeyName')))), null())]",
"managedResourceGroupName": "[if(not(empty(parameters('managedResourceGroupName'))), parameters('managedResourceGroupName'), null())]",
"managedVirtualNetwork": "[if(parameters('managedVirtualNetwork'), 'default', null())]",
"managedVirtualNetworkSettings": "[if(parameters('managedVirtualNetwork'), createObject('allowedAadTenantIdsForLinking', parameters('allowedAadTenantIdsForLinking'), 'linkedAccessCheckOnTargetResource', parameters('linkedAccessCheckOnTargetResource'), 'preventDataExfiltration', parameters('preventDataExfiltration')), null())]",
@@ -388,7 +391,7 @@
"workspaceRepositoryConfiguration": "[parameters('workspaceRepositoryConfiguration')]"
},
"dependsOn": [
- "cMKKeyVaultKey"
+ "cMKKeyVault"
]
},
"workspace_lock": {
@@ -566,7 +569,7 @@
"workspaceIndentityPrincipalId": {
"value": "[reference('workspace', '2021-06-01', 'full').identity.principalId]"
},
- "keyvaultName": "[if(not(empty(parameters('cMKKeyVaultResourceId'))), createObject('value', last(split(parameters('cMKKeyVaultResourceId'), '/'))), createObject('value', ''))]",
+ "keyvaultName": "[if(not(empty(parameters('cMKKeyVaultResourceId'))), createObject('value', last(split(if(not(empty(parameters('cMKKeyVaultResourceId'))), parameters('cMKKeyVaultResourceId'), 'dummyVault'), '/'))), createObject('value', ''))]",
"usesRbacAuthorization": "[if(not(empty(parameters('cMKKeyVaultResourceId'))), createObject('value', reference('cMKKeyVault').enableRbacAuthorization), createObject('value', true()))]"
},
"template": {
From 6f50b61d64bc8edb1e6e51ea594842d8e25ca767 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 10:57:12 +0200
Subject: [PATCH 47/52] Updated databricks to work around new bicep limitation
---
.../workspace/.test/common/dependencies.bicep | 29 +++++++++++++++++--
.../workspace/.test/common/main.test.bicep | 3 +-
2 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/modules/databricks/workspace/.test/common/dependencies.bicep b/modules/databricks/workspace/.test/common/dependencies.bicep
index ebef077726..4c074d6ae8 100644
--- a/modules/databricks/workspace/.test/common/dependencies.bicep
+++ b/modules/databricks/workspace/.test/common/dependencies.bicep
@@ -7,6 +7,9 @@ param managedIdentityName string
@description('Required. The name of the Key Vault to create.')
param keyVaultName string
+@description('Required. The name of the Key Vault for Disk Encryption to create.')
+param keyVaultDiskName string
+
@description('Required. The name of the Azure Machine Learning Workspace to create.')
param amlWorkspaceName string
@@ -56,8 +59,27 @@ resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' = {
kty: 'RSA'
}
}
+}
+
+resource keyVaultDisk 'Microsoft.KeyVault/vaults@2022-07-01' = {
+ name: keyVaultDiskName
+ location: location
+ properties: {
+ sku: {
+ family: 'A'
+ name: 'standard'
+ }
+ tenantId: tenant().tenantId
+ enablePurgeProtection: true // Required by batch account
+ softDeleteRetentionInDays: 7
+ enabledForTemplateDeployment: true
+ enabledForDiskEncryption: true
+ enabledForDeployment: true
+ enableRbacAuthorization: true
+ accessPolicies: []
+ }
- resource keyDisk 'keys@2022-07-01' = {
+ resource key 'keys@2022-07-01' = {
name: 'keyEncryptionKeyDisk'
properties: {
kty: 'RSA'
@@ -327,6 +349,9 @@ output machineLearningWorkspaceResourceId string = machineLearningWorkspace.id
@description('The resource ID of the created Key Vault.')
output keyVaultResourceId string = keyVault.id
+@description('The resource ID of the created Disk Key Vault.')
+output keyVaultDiskResourceId string = keyVaultDisk.id
+
@description('The resource ID of the created Load Balancer.')
output loadBalancerResourceId string = loadBalancer.id
@@ -337,7 +362,7 @@ output loadBalancerBackendPoolName string = loadBalancer.properties.backendAddre
output keyVaultKeyName string = keyVault::key.name
@description('The name of the created Key Vault Disk encryption key.')
-output keyVaultDiskKeyName string = keyVault::keyDisk.name
+output keyVaultDiskKeyName string = keyVaultDisk::key.name
@description('The principal ID of the created Managed Identity.')
output managedIdentityPrincipalId string = managedIdentity.properties.principalId
diff --git a/modules/databricks/workspace/.test/common/main.test.bicep b/modules/databricks/workspace/.test/common/main.test.bicep
index e39481d4ac..52f646fd67 100644
--- a/modules/databricks/workspace/.test/common/main.test.bicep
+++ b/modules/databricks/workspace/.test/common/main.test.bicep
@@ -50,6 +50,7 @@ module nestedDependencies 'dependencies.bicep' = {
networkSecurityGroupName: 'dep-${namePrefix}-nsg-${serviceShort}'
// Adding base time to make the name unique as purge protection must be enabled (but may not be longer than 24 characters total)
keyVaultName: 'dep-${namePrefix}-kv-${serviceShort}-${substring(uniqueString(baseTime), 0, 3)}'
+ keyVaultDiskName: 'dep-${namePrefix}-kve-${serviceShort}-${substring(uniqueString(baseTime), 0, 3)}'
}
}
@@ -102,7 +103,7 @@ module testDeployment '../../main.bicep' = {
cMKManagedServicesKeyName: nestedDependencies.outputs.keyVaultKeyName
cMKManagedServicesKeyVaultResourceId: nestedDependencies.outputs.keyVaultResourceId
cMKManagedDisksKeyName: nestedDependencies.outputs.keyVaultDiskKeyName
- cMKManagedDisksKeyVaultResourceId: nestedDependencies.outputs.keyVaultResourceId
+ cMKManagedDisksKeyVaultResourceId: nestedDependencies.outputs.keyVaultDiskResourceId
cMKManagedDisksKeyRotationToLatestKeyVersionEnabled: true
storageAccountName: 'sa${namePrefix}${serviceShort}001'
storageAccountSkuName: 'Standard_ZRS'
From 70360b6d89fd1d72a9a5154bbf919e764bd601f8 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 18:46:42 +0200
Subject: [PATCH 48/52] Updated KVLT + Purview
---
.../vault/.test/common/main.test.bicep | 2 -
.../key-vault/vault/.test/pe/main.test.bicep | 10 +--
modules/key-vault/vault/README.md | 20 ++---
.../account/.test/common/main.test.bicep | 40 ++++------
modules/purview/account/README.md | 80 +++++++------------
5 files changed, 57 insertions(+), 95 deletions(-)
diff --git a/modules/key-vault/vault/.test/common/main.test.bicep b/modules/key-vault/vault/.test/common/main.test.bicep
index cc4c00df50..54db495112 100644
--- a/modules/key-vault/vault/.test/common/main.test.bicep
+++ b/modules/key-vault/vault/.test/common/main.test.bicep
@@ -136,9 +136,7 @@ module testDeployment '../../main.bicep' = {
privateEndpoints: [
{
privateDnsZoneResourceIds: [
-
nestedDependencies.outputs.privateDNSZoneResourceId
-
]
service: 'vault'
subnetResourceId: nestedDependencies.outputs.subnetResourceId
diff --git a/modules/key-vault/vault/.test/pe/main.test.bicep b/modules/key-vault/vault/.test/pe/main.test.bicep
index 2a99bb5bf2..32078f69a2 100644
--- a/modules/key-vault/vault/.test/pe/main.test.bicep
+++ b/modules/key-vault/vault/.test/pe/main.test.bicep
@@ -87,12 +87,10 @@ module testDeployment '../../main.bicep' = {
}
privateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- nestedDependencies.outputs.privateDNSZoneResourceId
- ]
- privateEndpointName: 'dep-${namePrefix}-pe-${serviceShort}'
- }
+ privateDnsZoneResourceIds: [
+ nestedDependencies.outputs.privateDNSZoneResourceId
+ ]
+ name: 'dep-${namePrefix}-pe-${serviceShort}'
service: 'vault'
subnetResourceId: nestedDependencies.outputs.subnetResourceId
tags: {
diff --git a/modules/key-vault/vault/README.md b/modules/key-vault/vault/README.md
index 53a2294e41..ef1ac097eb 100644
--- a/modules/key-vault/vault/README.md
+++ b/modules/key-vault/vault/README.md
@@ -599,12 +599,10 @@ module vault 'br:bicep/modules/key-vault.vault:1.0.0' = {
}
privateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- ''
- ]
- privateEndpointName: 'dep-pe-kvvpe'
- }
+ name: 'dep-pe-kvvpe'
+ privateDnsZoneResourceIds: [
+ ''
+ ]
service: 'vault'
subnetResourceId: ''
tags: {
@@ -681,12 +679,10 @@ module vault 'br:bicep/modules/key-vault.vault:1.0.0' = {
"privateEndpoints": {
"value": [
{
- "privateDnsZoneGroup": {
- "privateDNSResourceIds": [
- ""
- ],
- "privateEndpointName": "dep-pe-kvvpe"
- },
+ "name": "dep-pe-kvvpe",
+ "privateDnsZoneResourceIds": [
+ ""
+ ],
"service": "vault",
"subnetResourceId": "",
"tags": {
diff --git a/modules/purview/account/.test/common/main.test.bicep b/modules/purview/account/.test/common/main.test.bicep
index 994f498e69..1db2c2caf0 100644
--- a/modules/purview/account/.test/common/main.test.bicep
+++ b/modules/purview/account/.test/common/main.test.bicep
@@ -92,11 +92,9 @@ module testDeployment '../../main.bicep' = {
]
accountPrivateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- nestedDependencies.outputs.purviewAccountPrivateDNSResourceId
- ]
- }
+ privateDnsZoneResourceIds: [
+ nestedDependencies.outputs.purviewAccountPrivateDNSResourceId
+ ]
service: 'account'
subnetResourceId: nestedDependencies.outputs.subnetResourceId
tags: {
@@ -108,11 +106,9 @@ module testDeployment '../../main.bicep' = {
]
portalPrivateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- nestedDependencies.outputs.purviewPortalPrivateDNSResourceId
- ]
- }
+ privateDnsZoneResourceIds: [
+ nestedDependencies.outputs.purviewPortalPrivateDNSResourceId
+ ]
service: 'portal'
subnetResourceId: nestedDependencies.outputs.subnetResourceId
tags: {
@@ -124,11 +120,9 @@ module testDeployment '../../main.bicep' = {
]
storageBlobPrivateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- nestedDependencies.outputs.storageBlobPrivateDNSResourceId
- ]
- }
+ privateDnsZoneResourceIds: [
+ nestedDependencies.outputs.storageBlobPrivateDNSResourceId
+ ]
service: 'blob'
subnetResourceId: nestedDependencies.outputs.subnetResourceId
tags: {
@@ -140,11 +134,9 @@ module testDeployment '../../main.bicep' = {
]
storageQueuePrivateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- nestedDependencies.outputs.storageQueuePrivateDNSResourceId
- ]
- }
+ privateDnsZoneResourceIds: [
+ nestedDependencies.outputs.storageQueuePrivateDNSResourceId
+ ]
service: 'queue'
subnetResourceId: nestedDependencies.outputs.subnetResourceId
tags: {
@@ -156,11 +148,9 @@ module testDeployment '../../main.bicep' = {
]
eventHubPrivateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- nestedDependencies.outputs.eventHubPrivateDNSResourceId
- ]
- }
+ privateDnsZoneResourceIds: [
+ nestedDependencies.outputs.eventHubPrivateDNSResourceId
+ ]
service: 'namespace'
subnetResourceId: nestedDependencies.outputs.subnetResourceId
tags: {
diff --git a/modules/purview/account/README.md b/modules/purview/account/README.md
index 9bf78ad43f..c41e02d5c5 100644
--- a/modules/purview/account/README.md
+++ b/modules/purview/account/README.md
@@ -50,11 +50,9 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
// Non-required parameters
accountPrivateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- ''
- ]
- }
+ privateDnsZoneResourceIds: [
+ ''
+ ]
service: 'account'
subnetResourceId: ''
tags: {
@@ -77,11 +75,9 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
enableDefaultTelemetry: ''
eventHubPrivateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- ''
- ]
- }
+ privateDnsZoneResourceIds: [
+ ''
+ ]
service: 'namespace'
subnetResourceId: ''
tags: {
@@ -99,11 +95,9 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
managedResourceGroupName: 'pvacom001-managed-rg'
portalPrivateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- ''
- ]
- }
+ privateDnsZoneResourceIds: [
+ ''
+ ]
service: 'portal'
subnetResourceId: ''
tags: {
@@ -125,11 +119,9 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
]
storageBlobPrivateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- ''
- ]
- }
+ privateDnsZoneResourceIds: [
+ ''
+ ]
service: 'blob'
subnetResourceId: ''
tags: {
@@ -141,11 +133,9 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
]
storageQueuePrivateEndpoints: [
{
- privateDnsZoneGroup: {
- privateDNSResourceIds: [
- ''
- ]
- }
+ privateDnsZoneResourceIds: [
+ ''
+ ]
service: 'queue'
subnetResourceId: ''
tags: {
@@ -187,11 +177,9 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
"accountPrivateEndpoints": {
"value": [
{
- "privateDnsZoneGroup": {
- "privateDNSResourceIds": [
- ""
- ]
- },
+ "privateDnsZoneResourceIds": [
+ ""
+ ],
"service": "account",
"subnetResourceId": "",
"tags": {
@@ -230,11 +218,9 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
"eventHubPrivateEndpoints": {
"value": [
{
- "privateDnsZoneGroup": {
- "privateDNSResourceIds": [
- ""
- ]
- },
+ "privateDnsZoneResourceIds": [
+ ""
+ ],
"service": "namespace",
"subnetResourceId": "",
"tags": {
@@ -260,11 +246,9 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
"portalPrivateEndpoints": {
"value": [
{
- "privateDnsZoneGroup": {
- "privateDNSResourceIds": [
- ""
- ]
- },
+ "privateDnsZoneResourceIds": [
+ ""
+ ],
"service": "portal",
"subnetResourceId": "",
"tags": {
@@ -292,11 +276,9 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
"storageBlobPrivateEndpoints": {
"value": [
{
- "privateDnsZoneGroup": {
- "privateDNSResourceIds": [
- ""
- ]
- },
+ "privateDnsZoneResourceIds": [
+ ""
+ ],
"service": "blob",
"subnetResourceId": "",
"tags": {
@@ -310,11 +292,9 @@ module account 'br:bicep/modules/purview.account:1.0.0' = {
"storageQueuePrivateEndpoints": {
"value": [
{
- "privateDnsZoneGroup": {
- "privateDNSResourceIds": [
- ""
- ]
- },
+ "privateDnsZoneResourceIds": [
+ ""
+ ],
"service": "queue",
"subnetResourceId": "",
"tags": {
From 4530ccb4d003447cf4d61c8339e51369f5aba6b4 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 20:47:10 +0200
Subject: [PATCH 49/52] Added batch to security center to how to fix update bug
---
modules/security/azure-security-center/main.bicep | 1 +
modules/security/azure-security-center/main.json | 6 ++++--
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/modules/security/azure-security-center/main.bicep b/modules/security/azure-security-center/main.bicep
index e1f9fbcab4..d0adb8211a 100644
--- a/modules/security/azure-security-center/main.bicep
+++ b/modules/security/azure-security-center/main.bicep
@@ -191,6 +191,7 @@ resource defaultTelemetry 'Microsoft.Resources/deployments@2021-04-01' = if (ena
}
}
+@batchSize(1)
resource pricingTiers 'Microsoft.Security/pricings@2018-06-01' = [for (pricing, index) in pricings: {
name: pricing.name
properties: {
diff --git a/modules/security/azure-security-center/main.json b/modules/security/azure-security-center/main.json
index cf4fce1f0b..757ee94252 100644
--- a/modules/security/azure-security-center/main.json
+++ b/modules/security/azure-security-center/main.json
@@ -5,7 +5,7 @@
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
- "templateHash": "5337788890835022528"
+ "templateHash": "6628258573559470770"
},
"name": "Azure Security Center (Defender for Cloud)",
"description": "This module deploys an Azure Security Center (Defender for Cloud) Configuration.",
@@ -289,7 +289,9 @@
{
"copy": {
"name": "pricingTiers",
- "count": "[length(variables('pricings'))]"
+ "count": "[length(variables('pricings'))]",
+ "mode": "serial",
+ "batchSize": 1
},
"type": "Microsoft.Security/pricings",
"apiVersion": "2018-06-01",
From 7cc838f3cbccc08f07516797a80c818850dc8989 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 21:04:02 +0200
Subject: [PATCH 50/52] Added write host for readme in case of diff for
troubleshooting
---
utilities/pipelines/staticValidation/module.tests.ps1 | 2 ++
1 file changed, 2 insertions(+)
diff --git a/utilities/pipelines/staticValidation/module.tests.ps1 b/utilities/pipelines/staticValidation/module.tests.ps1
index 59805a7a6d..09fb88a75a 100644
--- a/utilities/pipelines/staticValidation/module.tests.ps1
+++ b/utilities/pipelines/staticValidation/module.tests.ps1
@@ -391,6 +391,8 @@ Describe 'Module tests' -Tag 'Module' {
$diffReponse = git diff $readMeFilePath
Write-Warning ($diffReponse | Out-String) -Verbose
+ Write-Host (Get-Content -Path $readMeFilePath | Out-String) -Verbose
+
# Reset readme file to original state
git checkout HEAD -- $readMeFilePath
}
From 848cd90df4b86506c08364af80d6a9d3a32991c3 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Fri, 20 Oct 2023 21:11:07 +0200
Subject: [PATCH 51/52] Rollback
---
utilities/pipelines/staticValidation/module.tests.ps1 | 2 --
1 file changed, 2 deletions(-)
diff --git a/utilities/pipelines/staticValidation/module.tests.ps1 b/utilities/pipelines/staticValidation/module.tests.ps1
index 09fb88a75a..59805a7a6d 100644
--- a/utilities/pipelines/staticValidation/module.tests.ps1
+++ b/utilities/pipelines/staticValidation/module.tests.ps1
@@ -391,8 +391,6 @@ Describe 'Module tests' -Tag 'Module' {
$diffReponse = git diff $readMeFilePath
Write-Warning ($diffReponse | Out-String) -Verbose
- Write-Host (Get-Content -Path $readMeFilePath | Out-String) -Verbose
-
# Reset readme file to original state
git checkout HEAD -- $readMeFilePath
}
From e2171604d286a0dbf1b7ee6563008a11480c92a8 Mon Sep 17 00:00:00 2001
From: AlexanderSehr
Date: Sat, 21 Oct 2023 14:27:40 +0200
Subject: [PATCH 52/52] Rollback of constructs
---
constructs/Compute/virtualMachinesMultiple/main.bicep | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/constructs/Compute/virtualMachinesMultiple/main.bicep b/constructs/Compute/virtualMachinesMultiple/main.bicep
index 88257d6a32..9fc00d6f9e 100644
--- a/constructs/Compute/virtualMachinesMultiple/main.bicep
+++ b/constructs/Compute/virtualMachinesMultiple/main.bicep
@@ -242,8 +242,13 @@ param diagnosticEventHubAuthorizationRuleId string = ''
@description('Optional. Name of the diagnostic event hub within the namespace to which logs are streamed. Without this, an event hub is created for each log category.')
param diagnosticEventHubName string = ''
-@description('Optional. The lock settings of the service.')
-param lock lockType
+@allowed([
+ ''
+ 'CanNotDelete'
+ 'ReadOnly'
+])
+@description('Optional. Specify the type of lock.')
+param lock string = ''
@description('Optional. 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\'.')
param roleAssignments array = []