diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index ad549db7..ad259099 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,2 +1,2 @@
# These owners will be the default owners for everything in the repo.
-* @hudua @SenthuranSivananthan @skeeler
+* @hudua @SenthuranSivananthan @skeeler @kevinevans @bawillis
diff --git a/docs/archetypes/logging.md b/docs/archetypes/logging.md
index 0585d51f..35be9b2b 100644
--- a/docs/archetypes/logging.md
+++ b/docs/archetypes/logging.md
@@ -2,15 +2,13 @@
## Table of Contents
-- [Archetype: Logging](#archetype--logging)
- - [Table of Contents](#table-of-contents)
- - [Overview](#overview)
- - [Schema Definition](#schema-definition)
- - [Delete Locks](#delete-locks)
- - [Service Health](#service-health)
- - [Deployment Scenarios](#deployment-scenarios)
- - [Example Deployment Parameters](#example-deployment-parameters)
- - [Deployment Instructions](#deployment-instructions)
+* [Overview](#overview)
+* [Schema Definition](#schema-definition)
+* [Delete Locks](#delete-locks)
+* [Service Health](#service-health)
+* [Deployment Scenarios](#deployment-scenarios)
+* [Example Deployment Parameters](#example-deployment-parameters)
+* [Deployment Instructions](#deployment-instructions)
## Overview
diff --git a/schemas/v0.6.0/landingzones/lz-generic-subscription.json b/schemas/v0.6.0/landingzones/lz-generic-subscription.json
new file mode 100644
index 00000000..31a931cb
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/lz-generic-subscription.json
@@ -0,0 +1,265 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "$ref": "#/definitions/GenericSubscriptionArchetypeDefinition",
+ "definitions": {
+ "GenericSubscriptionArchetypeDefinition": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "$schema": {
+ "type": "string",
+ "format": "uri",
+ "qt-uri-protocols": [
+ "https"
+ ],
+ "qt-uri-extensions": [
+ ".json"
+ ]
+ },
+ "contentVersion": {
+ "type": "string"
+ },
+ "parameters": {
+ "$ref": "#/definitions/Parameters"
+ }
+ },
+ "required": [
+ "$schema",
+ "contentVersion",
+ "parameters"
+ ],
+ "title": "GenericSubscriptionArchetypeDefinition"
+ },
+ "Parameters": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "location": {
+ "$ref": "types/location.json#/definitions/Location"
+ },
+ "serviceHealthAlerts": {
+ "$ref": "types/serviceHealthAlerts.json#/definitions/ServiceHealthAlerts"
+ },
+ "securityCenter": {
+ "$ref": "types/securityCenter.json#/definitions/SecurityCenter"
+ },
+ "subscriptionRoleAssignments": {
+ "$ref": "types/subscriptionRoleAssignments.json#/definitions/SubscriptionRoleAssignments"
+ },
+ "subscriptionBudget": {
+ "$ref": "types/subscriptionBudget.json#/definitions/SubscriptionBudget"
+ },
+ "subscriptionTags": {
+ "$ref": "types/subscriptionTags.json#/definitions/SubscriptionTags"
+ },
+ "resourceTags": {
+ "$ref": "types/resourceTags.json#/definitions/ResourceTags"
+ },
+ "logAnalyticsWorkspaceResourceId": {
+ "$ref": "types/logAnalyticsWorkspaceId.json#/definitions/LogAnalyticsWorkspaceId"
+ },
+ "resourceGroups": {
+ "$ref": "#/definitions/ResourceGroups"
+ },
+ "automation": {
+ "$ref": "types/automation.json#/definitions/Automation"
+ },
+ "backupRecoveryVault": {
+ "$ref": "types/backupRecoveryVault.json#/definitions/RecoveryVault"
+ },
+ "hubNetwork": {
+ "$ref": "types/hubNetwork.json#/definitions/HubNetworkWithoutPrivateDNS"
+ },
+ "network": {
+ "$ref": "#/definitions/Network"
+ }
+ },
+ "required": [
+ "resourceTags",
+ "securityCenter",
+ "serviceHealthAlerts",
+ "subscriptionBudget",
+ "subscriptionRoleAssignments",
+ "subscriptionTags",
+ "resourceGroups",
+ "automation",
+ "hubNetwork",
+ "network",
+ "backupRecoveryVault"
+ ],
+ "title": "Parameters"
+ },
+ "ResourceGroups": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/ResourceGroupsValue"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "ResourceGroups"
+ },
+ "ResourceGroupsValue": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "automation": {
+ "type": "string"
+ },
+ "backupRecoveryVault": {
+ "type": "string"
+ },
+ "networking": {
+ "type": "string"
+ },
+ "networkWatcher": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "automation",
+ "networkWatcher",
+ "networking",
+ "backupRecoveryVault"
+ ],
+ "title": "ResourceGroupsValue"
+ },
+ "Network": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/NetworkValue"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "Network"
+ },
+ "NetworkValue": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "deployVnet": {
+ "type": "boolean"
+ },
+ "peerToHubVirtualNetwork": {
+ "type": "boolean"
+ },
+ "useRemoteGateway": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "dnsServers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "addressPrefixes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "subnets": {
+ "$ref": "#/definitions/Subnets"
+ }
+ },
+ "required": [
+ "addressPrefixes",
+ "deployVnet",
+ "dnsServers",
+ "name",
+ "peerToHubVirtualNetwork",
+ "subnets",
+ "useRemoteGateway"
+ ],
+ "title": "NetworkValue"
+ },
+ "Subnets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Subnet"
+ },
+ "title": "Subnets"
+ },
+ "Delegations": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "serviceName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "serviceName"
+ ],
+ "title": "Delegations"
+ },
+ "Nsg": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "title": "Nsg"
+ },
+ "Udr": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "title": "Udr"
+ },
+ "Subnet": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "comments": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "addressPrefix": {
+ "type": "string"
+ },
+ "nsg": {
+ "$ref": "#/definitions/Nsg"
+ },
+ "udr": {
+ "$ref": "#/definitions/Udr"
+ },
+ "delegations": {
+ "$ref": "#/definitions/Delegations"
+ }
+ },
+ "required": [
+ "addressPrefix",
+ "comments",
+ "name",
+ "nsg",
+ "udr"
+ ],
+ "title": "subnet"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/lz-healthcare.json b/schemas/v0.6.0/landingzones/lz-healthcare.json
new file mode 100644
index 00000000..a12b487f
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/lz-healthcare.json
@@ -0,0 +1,342 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "$ref": "#/definitions/HealthcareArchetypeDefinition",
+ "definitions": {
+ "HealthcareArchetypeDefinition": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "$schema": {
+ "type": "string",
+ "format": "uri",
+ "qt-uri-protocols": [
+ "https"
+ ],
+ "qt-uri-extensions": [
+ ".json"
+ ]
+ },
+ "contentVersion": {
+ "type": "string"
+ },
+ "parameters": {
+ "$ref": "#/definitions/Parameters"
+ }
+ },
+ "required": [
+ "$schema",
+ "contentVersion",
+ "parameters"
+ ],
+ "title": "HealthcareArchetypeDefinition"
+ },
+ "Parameters": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "location": {
+ "$ref": "types/location.json#/definitions/Location"
+ },
+ "serviceHealthAlerts": {
+ "$ref": "types/serviceHealthAlerts.json#/definitions/ServiceHealthAlerts"
+ },
+ "securityCenter": {
+ "$ref": "types/securityCenter.json#/definitions/SecurityCenter"
+ },
+ "subscriptionRoleAssignments": {
+ "$ref": "types/subscriptionRoleAssignments.json#/definitions/SubscriptionRoleAssignments"
+ },
+ "subscriptionBudget": {
+ "$ref": "types/subscriptionBudget.json#/definitions/SubscriptionBudget"
+ },
+ "subscriptionTags": {
+ "$ref": "types/subscriptionTags.json#/definitions/SubscriptionTags"
+ },
+ "resourceTags": {
+ "$ref": "types/resourceTags.json#/definitions/ResourceTags"
+ },
+ "logAnalyticsWorkspaceResourceId": {
+ "$ref": "types/logAnalyticsWorkspaceId.json#/definitions/LogAnalyticsWorkspaceId"
+ },
+ "useCMK": {
+ "$ref": "#/definitions/UseCMK"
+ },
+ "resourceGroups": {
+ "$ref": "#/definitions/ResourceGroups"
+ },
+ "automation": {
+ "$ref": "types/automation.json#/definitions/Automation"
+ },
+ "keyVault": {
+ "$ref": "types/keyVault.json#/definitions/KeyVault"
+ },
+ "sqldb": {
+ "$ref": "types/sqldb.json#/definitions/SQLDB"
+ },
+ "synapse": {
+ "$ref": "types/synapse.json#/definitions/Synapse"
+ },
+ "hubNetwork": {
+ "$ref": "types/hubNetwork.json#/definitions/HubNetworkWithPrivateDNS"
+ },
+ "network": {
+ "$ref": "#/definitions/Network"
+ }
+ },
+ "required": [
+ "resourceTags",
+ "securityCenter",
+ "serviceHealthAlerts",
+ "subscriptionBudget",
+ "subscriptionRoleAssignments",
+ "subscriptionTags",
+ "useCMK",
+ "resourceGroups",
+ "automation",
+ "keyVault",
+ "sqldb",
+ "hubNetwork"
+ ],
+ "title": "Parameters"
+ },
+ "UseCMK": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "UseCMK"
+ },
+ "ResourceGroups": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/ResourceGroupsValue"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "ResourceGroups"
+ },
+ "ResourceGroupsValue": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "automation": {
+ "type": "string"
+ },
+ "compute": {
+ "type": "string"
+ },
+ "monitor": {
+ "type": "string"
+ },
+ "networking": {
+ "type": "string"
+ },
+ "networkWatcher": {
+ "type": "string"
+ },
+ "security": {
+ "type": "string"
+ },
+ "storage": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "automation",
+ "compute",
+ "monitor",
+ "networkWatcher",
+ "networking",
+ "security",
+ "storage"
+ ],
+ "title": "ResourceGroupsValue"
+ },
+ "Network": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/NetworkValue"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "Network"
+ },
+ "NetworkValue": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "peerToHubVirtualNetwork": {
+ "type": "boolean"
+ },
+ "useRemoteGateway": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "dnsServers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "addressPrefixes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "subnets": {
+ "$ref": "#/definitions/Subnets"
+ }
+ },
+ "required": [
+ "addressPrefixes",
+ "dnsServers",
+ "name",
+ "peerToHubVirtualNetwork",
+ "subnets",
+ "useRemoteGateway"
+ ],
+ "title": "NetworkValue"
+ },
+ "Subnets": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "databricksPublic": {
+ "$ref": "#/definitions/Subnet"
+ },
+ "databricksPrivate": {
+ "$ref": "#/definitions/Subnet"
+ },
+ "privateEndpoints": {
+ "$ref": "#/definitions/Subnet"
+ },
+ "web": {
+ "$ref": "#/definitions/Subnet"
+ },
+ "optional": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OptionalSubnet"
+ }
+ }
+ },
+ "required": [
+ "databricksPublic",
+ "databricksPrivate",
+ "privateEndpoints",
+ "web",
+ "optional"
+ ],
+ "title": "Subnets"
+ },
+ "Subnet": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "comments": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "addressPrefix": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "addressPrefix",
+ "comments",
+ "name"
+ ],
+ "title": "subnet"
+ },
+ "OptionalSubnet": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "comments": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "addressPrefix": {
+ "type": "string"
+ },
+ "nsg": {
+ "$ref": "#/definitions/OptionalSubnetNsg"
+ },
+ "udr": {
+ "$ref": "#/definitions/OptionalSubnetUdr"
+ },
+ "delegations": {
+ "$ref": "#/definitions/OptionalSubnetDelegations"
+ }
+ },
+ "required": [
+ "addressPrefix",
+ "comments",
+ "name",
+ "nsg",
+ "udr"
+ ],
+ "title": "OptionalSubnet"
+ },
+ "OptionalSubnetDelegations": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "serviceName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "serviceName"
+ ],
+ "title": "OptionalSubnetDelegations"
+ },
+ "OptionalSubnetNsg": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "title": "OptionalSubnetNsg"
+ },
+ "OptionalSubnetUdr": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "title": "OptionalSubnetUdr"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/lz-machinelearning.json b/schemas/v0.6.0/landingzones/lz-machinelearning.json
new file mode 100644
index 00000000..065195d6
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/lz-machinelearning.json
@@ -0,0 +1,363 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "$ref": "#/definitions/MachineLearningArchetypeDefinition",
+ "definitions": {
+ "MachineLearningArchetypeDefinition": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "$schema": {
+ "type": "string",
+ "format": "uri",
+ "qt-uri-protocols": [
+ "https"
+ ],
+ "qt-uri-extensions": [
+ ".json"
+ ]
+ },
+ "contentVersion": {
+ "type": "string"
+ },
+ "parameters": {
+ "$ref": "#/definitions/Parameters"
+ }
+ },
+ "required": [
+ "$schema",
+ "contentVersion",
+ "parameters"
+ ],
+ "title": "MachineLearningArchetypeDefinition"
+ },
+ "Parameters": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "location": {
+ "$ref": "types/location.json#/definitions/Location"
+ },
+ "serviceHealthAlerts": {
+ "$ref": "types/serviceHealthAlerts.json#/definitions/ServiceHealthAlerts"
+ },
+ "securityCenter": {
+ "$ref": "types/securityCenter.json#/definitions/SecurityCenter"
+ },
+ "subscriptionRoleAssignments": {
+ "$ref": "types/subscriptionRoleAssignments.json#/definitions/SubscriptionRoleAssignments"
+ },
+ "subscriptionBudget": {
+ "$ref": "types/subscriptionBudget.json#/definitions/SubscriptionBudget"
+ },
+ "subscriptionTags": {
+ "$ref": "types/subscriptionTags.json#/definitions/SubscriptionTags"
+ },
+ "resourceTags": {
+ "$ref": "types/resourceTags.json#/definitions/ResourceTags"
+ },
+ "logAnalyticsWorkspaceResourceId": {
+ "$ref": "types/logAnalyticsWorkspaceId.json#/definitions/LogAnalyticsWorkspaceId"
+ },
+ "useCMK": {
+ "$ref": "#/definitions/UseCMK"
+ },
+ "resourceGroups": {
+ "$ref": "#/definitions/ResourceGroups"
+ },
+ "automation": {
+ "$ref": "types/automation.json#/definitions/Automation"
+ },
+ "keyVault": {
+ "$ref": "types/keyVault.json#/definitions/KeyVault"
+ },
+ "aks": {
+ "$ref": "types/aks.json#/definitions/AKS"
+ },
+ "appServiceLinuxContainer": {
+ "$ref": "types/appServiceLinuxContainer.json#/definitions/APPSERVICELINUXCONTAINER"
+ },
+ "sqldb": {
+ "$ref": "types/sqldb.json#/definitions/SQLDB"
+ },
+ "sqlmi": {
+ "$ref": "types/sqlmi.json#/definitions/SQLMI"
+ },
+ "aml": {
+ "$ref": "types/aml.json#/definitions/AML"
+ },
+ "hubNetwork": {
+ "$ref": "types/hubNetwork.json#/definitions/HubNetworkWithPrivateDNS"
+ },
+ "network": {
+ "$ref": "#/definitions/Network"
+ }
+ },
+ "required": [
+ "resourceTags",
+ "securityCenter",
+ "serviceHealthAlerts",
+ "subscriptionBudget",
+ "subscriptionRoleAssignments",
+ "subscriptionTags",
+ "useCMK",
+ "resourceGroups",
+ "automation",
+ "keyVault",
+ "aks",
+ "appServiceLinuxContainer",
+ "sqldb",
+ "sqlmi",
+ "aml",
+ "hubNetwork"
+ ],
+ "title": "Parameters"
+ },
+ "UseCMK": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "UseCMK"
+ },
+ "ResourceGroups": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/ResourceGroupsValue"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "ResourceGroups"
+ },
+ "ResourceGroupsValue": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "automation": {
+ "type": "string"
+ },
+ "compute": {
+ "type": "string"
+ },
+ "monitor": {
+ "type": "string"
+ },
+ "networking": {
+ "type": "string"
+ },
+ "networkWatcher": {
+ "type": "string"
+ },
+ "security": {
+ "type": "string"
+ },
+ "storage": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "automation",
+ "compute",
+ "monitor",
+ "networkWatcher",
+ "networking",
+ "security",
+ "storage"
+ ],
+ "title": "ResourceGroupsValue"
+ },
+ "Network": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/NetworkValue"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "Network"
+ },
+ "NetworkValue": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "peerToHubVirtualNetwork": {
+ "type": "boolean"
+ },
+ "useRemoteGateway": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "dnsServers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "addressPrefixes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "subnets": {
+ "$ref": "#/definitions/Subnets"
+ }
+ },
+ "required": [
+ "addressPrefixes",
+ "dnsServers",
+ "name",
+ "peerToHubVirtualNetwork",
+ "subnets",
+ "useRemoteGateway"
+ ],
+ "title": "NetworkValue"
+ },
+ "Subnets": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "sqlmi": {
+ "$ref": "#/definitions/Subnet"
+ },
+ "databricksPublic": {
+ "$ref": "#/definitions/Subnet"
+ },
+ "databricksPrivate": {
+ "$ref": "#/definitions/Subnet"
+ },
+ "privateEndpoints": {
+ "$ref": "#/definitions/Subnet"
+ },
+ "aks": {
+ "$ref": "#/definitions/Subnet"
+ },
+ "appService": {
+ "$ref": "#/definitions/Subnet"
+ },
+ "optional": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OptionalSubnet"
+ }
+ }
+ },
+ "required": [
+ "sqlmi",
+ "databricksPublic",
+ "databricksPrivate",
+ "privateEndpoints",
+ "aks",
+ "appService",
+ "optional"
+ ],
+ "title": "Subnets"
+ },
+ "Subnet": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "comments": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "addressPrefix": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "addressPrefix",
+ "comments",
+ "name"
+ ],
+ "title": "subnet"
+ },
+ "OptionalSubnet": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "comments": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "addressPrefix": {
+ "type": "string"
+ },
+ "nsg": {
+ "$ref": "#/definitions/OptionalSubnetNsg"
+ },
+ "udr": {
+ "$ref": "#/definitions/OptionalSubnetUdr"
+ },
+ "delegations": {
+ "$ref": "#/definitions/OptionalSubnetDelegations"
+ }
+ },
+ "required": [
+ "addressPrefix",
+ "comments",
+ "name",
+ "nsg",
+ "udr"
+ ],
+ "title": "OptionalSubnet"
+ },
+ "OptionalSubnetDelegations": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "serviceName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "serviceName"
+ ],
+ "title": "OptionalSubnetDelegations"
+ },
+ "OptionalSubnetNsg": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "title": "OptionalSubnetNsg"
+ },
+ "OptionalSubnetUdr": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "title": "OptionalSubnetUdr"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/lz-platform-connectivity-hub-azfw-policy.json b/schemas/v0.6.0/landingzones/lz-platform-connectivity-hub-azfw-policy.json
new file mode 100644
index 00000000..04a51bbe
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/lz-platform-connectivity-hub-azfw-policy.json
@@ -0,0 +1,71 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "$ref": "#/definitions/PlatformConnectivityHubNetworkAzureFirewallPolicy",
+ "definitions": {
+ "PlatformConnectivityHubNetworkAzureFirewallPolicy": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "$schema": {
+ "type": "string",
+ "format": "uri",
+ "qt-uri-protocols": [
+ "https"
+ ],
+ "qt-uri-extensions": [
+ ".json"
+ ]
+ },
+ "contentVersion": {
+ "type": "string"
+ },
+ "parameters": {
+ "$ref": "#/definitions/Parameters"
+ }
+ },
+ "required": [
+ "$schema",
+ "contentVersion",
+ "parameters"
+ ],
+ "title": "PlatformConnectivityHubNetworkAzureFirewallPolicy"
+ },
+ "Parameters": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "location": {
+ "$ref": "types/location.json#/definitions/Location"
+ },
+ "resourceTags": {
+ "$ref": "types/resourceTags.json#/definitions/ResourceTags"
+ },
+ "resourceGroupName": {
+ "$ref": "#/definitions/StringValue"
+ },
+ "policyName": {
+ "$ref": "#/definitions/StringValue"
+ }
+ },
+ "required": [
+ "resourceTags",
+ "resourceGroupName",
+ "policyName"
+ ],
+ "title": "Parameters"
+ },
+ "StringValue": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": "StringValue"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/lz-platform-connectivity-hub-azfw.json b/schemas/v0.6.0/landingzones/lz-platform-connectivity-hub-azfw.json
new file mode 100644
index 00000000..2c209103
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/lz-platform-connectivity-hub-azfw.json
@@ -0,0 +1,433 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "$ref": "#/definitions/PlatformConnectivityHubNetworkAzureFirewall",
+ "definitions": {
+ "PlatformConnectivityHubNetworkAzureFirewall": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "$schema": {
+ "type": "string",
+ "format": "uri",
+ "qt-uri-protocols": [
+ "https"
+ ],
+ "qt-uri-extensions": [
+ ".json"
+ ]
+ },
+ "contentVersion": {
+ "type": "string"
+ },
+ "parameters": {
+ "$ref": "#/definitions/Parameters"
+ }
+ },
+ "required": [
+ "$schema",
+ "contentVersion",
+ "parameters"
+ ],
+ "title": "PlatformConnectivityHubNetworkAzureFirewall"
+ },
+ "Parameters": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "location": {
+ "$ref": "types/location.json#/definitions/Location"
+ },
+ "serviceHealthAlerts": {
+ "$ref": "types/serviceHealthAlerts.json#/definitions/ServiceHealthAlerts"
+ },
+ "securityCenter": {
+ "$ref": "types/securityCenter.json#/definitions/SecurityCenter"
+ },
+ "subscriptionRoleAssignments": {
+ "$ref": "types/subscriptionRoleAssignments.json#/definitions/SubscriptionRoleAssignments"
+ },
+ "subscriptionBudget": {
+ "$ref": "types/subscriptionBudget.json#/definitions/SubscriptionBudget"
+ },
+ "subscriptionTags": {
+ "$ref": "types/subscriptionTags.json#/definitions/SubscriptionTags"
+ },
+ "resourceTags": {
+ "$ref": "types/resourceTags.json#/definitions/ResourceTags"
+ },
+ "logAnalyticsWorkspaceResourceId": {
+ "$ref": "types/logAnalyticsWorkspaceId.json#/definitions/LogAnalyticsWorkspaceId"
+ },
+ "privateDnsZones": {
+ "$ref": "#/definitions/privateDnsZones"
+ },
+ "ddosStandard": {
+ "$ref": "#/definitions/ddosStandard"
+ },
+ "publicAccessZone": {
+ "$ref": "#/definitions/publicAccessZone"
+ },
+ "managementRestrictedZone": {
+ "$ref": "#/definitions/managementRestrictedZone"
+ },
+ "hub": {
+ "$ref": "#/definitions/hub"
+ },
+ "networkWatcher": {
+ "$ref": "#/definitions/networkWatcher"
+ }
+ },
+ "required": [
+ "resourceTags",
+ "securityCenter",
+ "serviceHealthAlerts",
+ "subscriptionBudget",
+ "subscriptionRoleAssignments",
+ "subscriptionTags",
+ "privateDnsZones",
+ "ddosStandard",
+ "publicAccessZone",
+ "managementRestrictedZone",
+ "hub",
+ "networkWatcher"
+ ],
+ "title": "Parameters"
+ },
+ "privateDnsZones": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "resourceGroupName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "enabled",
+ "resourceGroupName"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "ddosStandard": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "resourceGroupName": {
+ "type": "string"
+ },
+ "planName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "enabled",
+ "resourceGroupName",
+ "planName"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "publicAccessZone": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "resourceGroupName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "enabled",
+ "resourceGroupName"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "managementRestrictedZone": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "resourceGroupName": {
+ "type": "string"
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "addressPrefixes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/optionalSubnet"
+ }
+ }
+ },
+ "required": [
+ "name",
+ "addressPrefixes",
+ "subnets"
+ ]
+ }
+ },
+ "required": [
+ "enabled",
+ "resourceGroupName",
+ "network"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "hub": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "resourceGroupName": {
+ "type": "string"
+ },
+ "bastion": {
+ "$ref": "#/definitions/bastion"
+ },
+ "azureFirewall": {
+ "$ref": "#/definitions/azureFirewall"
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "addressPrefixes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "subnets": {
+ "type": "object",
+ "properties": {
+ "gateway": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "firewall": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "bastion": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "publicAccess": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "optional": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/optionalSubnet"
+ }
+ }
+ }
+ }
+ },
+ "required": [
+ "name",
+ "addressPrefixes",
+ "subnets"
+ ]
+ }
+ },
+ "required": [
+ "resourceGroupName",
+ "bastion",
+ "azureFirewall",
+ "network"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "networkWatcher": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "resourceGroupName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "resourceGroupName"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "requiredSubnet": {
+ "type": "object",
+ "properties": {
+ "comments": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "addressPrefix": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "comments",
+ "name",
+ "addressPrefix"
+ ]
+ },
+ "optionalSubnet": {
+ "type": "object",
+ "properties": {
+ "comments": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "addressPrefix": {
+ "type": "string"
+ },
+ "nsg": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enabled"
+ ]
+ },
+ "udr": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enabled"
+ ]
+ },
+ "delegations": {
+ "type": "object",
+ "properties": {
+ "serviceName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "serviceName"
+ ]
+ }
+ },
+ "required": [
+ "comments",
+ "name",
+ "addressPrefix",
+ "nsg",
+ "udr"
+ ]
+ },
+ "bastion": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "sku": {
+ "type": "string"
+ },
+ "scaleUnits": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "enabled",
+ "name",
+ "sku",
+ "scaleUnits"
+ ]
+ },
+ "azureFirewall": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "availabilityZones": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "forcedTunnelingEnabled": {
+ "type": "boolean"
+ },
+ "forcedTunnelingNextHop": {
+ "type": "string"
+ },
+ "firewallPolicyId": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "availabilityZones",
+ "forcedTunnelingEnabled",
+ "forcedTunnelingNextHop"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/lz-platform-connectivity-hub-nva.json b/schemas/v0.6.0/landingzones/lz-platform-connectivity-hub-nva.json
new file mode 100644
index 00000000..f34c3b8a
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/lz-platform-connectivity-hub-nva.json
@@ -0,0 +1,565 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "$ref": "#/definitions/PlatformConnectivityHubNetworkNVA",
+ "definitions": {
+ "PlatformConnectivityHubNetworkNVA": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "$schema": {
+ "type": "string",
+ "format": "uri",
+ "qt-uri-protocols": [
+ "https"
+ ],
+ "qt-uri-extensions": [
+ ".json"
+ ]
+ },
+ "contentVersion": {
+ "type": "string"
+ },
+ "parameters": {
+ "$ref": "#/definitions/Parameters"
+ }
+ },
+ "required": [
+ "$schema",
+ "contentVersion",
+ "parameters"
+ ],
+ "title": "PlatformConnectivityHubNetworkNVA"
+ },
+ "Parameters": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "location": {
+ "$ref": "types/location.json#/definitions/Location"
+ },
+ "serviceHealthAlerts": {
+ "$ref": "types/serviceHealthAlerts.json#/definitions/ServiceHealthAlerts"
+ },
+ "securityCenter": {
+ "$ref": "types/securityCenter.json#/definitions/SecurityCenter"
+ },
+ "subscriptionRoleAssignments": {
+ "$ref": "types/subscriptionRoleAssignments.json#/definitions/SubscriptionRoleAssignments"
+ },
+ "subscriptionBudget": {
+ "$ref": "types/subscriptionBudget.json#/definitions/SubscriptionBudget"
+ },
+ "subscriptionTags": {
+ "$ref": "types/subscriptionTags.json#/definitions/SubscriptionTags"
+ },
+ "resourceTags": {
+ "$ref": "types/resourceTags.json#/definitions/ResourceTags"
+ },
+ "logAnalyticsWorkspaceResourceId": {
+ "$ref": "types/logAnalyticsWorkspaceId.json#/definitions/LogAnalyticsWorkspaceId"
+ },
+ "privateDnsZones": {
+ "$ref": "#/definitions/privateDnsZones"
+ },
+ "ddosStandard": {
+ "$ref": "#/definitions/ddosStandard"
+ },
+ "publicAccessZone": {
+ "$ref": "#/definitions/publicAccessZone"
+ },
+ "managementRestrictedZone": {
+ "$ref": "#/definitions/managementRestrictedZone"
+ },
+ "hub": {
+ "$ref": "#/definitions/hub"
+ },
+ "networkWatcher": {
+ "$ref": "#/definitions/networkWatcher"
+ },
+ "fwUsername": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string"
+ }
+ }
+ },
+ "fwPassword": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "required": [
+ "resourceTags",
+ "securityCenter",
+ "serviceHealthAlerts",
+ "subscriptionBudget",
+ "subscriptionRoleAssignments",
+ "subscriptionTags",
+ "privateDnsZones",
+ "ddosStandard",
+ "publicAccessZone",
+ "managementRestrictedZone",
+ "hub",
+ "networkWatcher"
+ ],
+ "title": "Parameters"
+ },
+ "privateDnsZones": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "resourceGroupName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "enabled",
+ "resourceGroupName"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "ddosStandard": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "resourceGroupName": {
+ "type": "string"
+ },
+ "planName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "enabled",
+ "resourceGroupName",
+ "planName"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "publicAccessZone": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "resourceGroupName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "enabled",
+ "resourceGroupName"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "managementRestrictedZone": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "resourceGroupName": {
+ "type": "string"
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "addressPrefixes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/optionalSubnet"
+ }
+ }
+ },
+ "required": [
+ "name",
+ "addressPrefixes",
+ "subnets"
+ ]
+ }
+ },
+ "required": [
+ "enabled",
+ "resourceGroupName",
+ "network"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "hub": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "resourceGroupName": {
+ "type": "string"
+ },
+ "bastion": {
+ "$ref": "#/definitions/bastion"
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "addressPrefixes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "subnets": {
+ "type": "object",
+ "properties": {
+ "gateway": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "bastion": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "public": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "publicAccessZone": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "externalAccessNetwork": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "nonProductionInternal": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "productionInternal": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "managementRestrictedZoneInternal": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "highAvailability": {
+ "$ref": "#/definitions/requiredSubnet"
+ },
+ "optional": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/optionalSubnet"
+ }
+ }
+ },
+ "required": [
+ "gateway",
+ "bastion",
+ "public",
+ "publicAccessZone",
+ "externalAccessNetwork",
+ "nonProductionInternal",
+ "productionInternal",
+ "managementRestrictedZoneInternal",
+ "highAvailability",
+ "optional"
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "addressPrefixes",
+ "subnets"
+ ]
+ },
+ "nvaFirewall": {
+ "$ref": "#/definitions/nvaFirewall"
+ }
+ },
+ "required": [
+ "resourceGroupName",
+ "bastion",
+ "network",
+ "nvaFirewall"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "networkWatcher": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "resourceGroupName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "resourceGroupName"
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ]
+ },
+ "requiredSubnet": {
+ "type": "object",
+ "properties": {
+ "comments": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "addressPrefix": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "comments",
+ "name",
+ "addressPrefix"
+ ]
+ },
+ "optionalSubnet": {
+ "type": "object",
+ "properties": {
+ "comments": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "addressPrefix": {
+ "type": "string"
+ },
+ "nsg": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enabled"
+ ]
+ },
+ "udr": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enabled"
+ ]
+ },
+ "delegations": {
+ "type": "object",
+ "properties": {
+ "serviceName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "serviceName"
+ ]
+ }
+ },
+ "required": [
+ "comments",
+ "name",
+ "addressPrefix",
+ "nsg",
+ "udr"
+ ]
+ },
+ "nvaFirewall": {
+ "type": "object",
+ "properties": {
+ "image": {
+ "type": "object",
+ "properties": {
+ "publisher": {
+ "type": "string"
+ },
+ "offer": {
+ "type": "string"
+ },
+ "sku": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "plan": {
+ "type": "string"
+ }
+ }
+ },
+ "nonProduction": {
+ "$ref": "#/definitions/nvaEnvironment"
+ },
+ "production": {
+ "$ref": "#/definitions/nvaEnvironment"
+ }
+ }
+ },
+ "nvaEnvironment": {
+ "type": "object",
+ "properties": {
+ "internalLoadBalancer": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "internalIp": {
+ "type": "string"
+ },
+ "externalIp": {
+ "type": "string"
+ },
+ "tcpProbe": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "port": {
+ "type": "integer"
+ },
+ "intervalInSeconds": {
+ "type": "integer"
+ },
+ "numberOfProbes": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "name",
+ "port",
+ "intervalInSeconds",
+ "numberOfProbes"
+ ]
+ }
+ }
+ },
+ "deployVirtualMachines": {
+ "type": "boolean"
+ },
+ "virtualMachines": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "vmSku": {
+ "type": "string"
+ },
+ "internalIp": {
+ "type": "string"
+ },
+ "externalIp": {
+ "type": "string"
+ },
+ "mrzInternalIp": {
+ "type": "string"
+ },
+ "highAvailabilityIp": {
+ "type": "string"
+ },
+ "availabilityZone": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "vmSku",
+ "internalIp",
+ "externalIp",
+ "mrzInternalIp",
+ "highAvailabilityIp",
+ "availabilityZone"
+ ]
+ }
+ }
+ },
+ "required": [
+ "internalLoadBalancer",
+ "deployVirtualMachines",
+ "virtualMachines"
+ ]
+ },
+ "bastion": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "sku": {
+ "type": "string"
+ },
+ "scaleUnits": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "enabled",
+ "name",
+ "sku",
+ "scaleUnits"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/lz-platform-logging.json b/schemas/v0.6.0/landingzones/lz-platform-logging.json
new file mode 100644
index 00000000..d3818c4e
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/lz-platform-logging.json
@@ -0,0 +1,223 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "$ref": "#/definitions/PlatformLoggingArchetypeDefinition",
+ "definitions": {
+ "PlatformLoggingArchetypeDefinition": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "$schema": {
+ "type": "string",
+ "format": "uri",
+ "qt-uri-protocols": [
+ "https"
+ ],
+ "qt-uri-extensions": [
+ ".json"
+ ]
+ },
+ "contentVersion": {
+ "type": "string"
+ },
+ "parameters": {
+ "$ref": "#/definitions/Parameters"
+ }
+ },
+ "required": [
+ "$schema",
+ "contentVersion",
+ "parameters"
+ ],
+ "title": "PlatformLoggingArchetypeDefinition"
+ },
+ "Parameters": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "location": {
+ "$ref": "types/location.json#/definitions/Location"
+ },
+ "serviceHealthAlerts": {
+ "$ref": "types/serviceHealthAlerts.json#/definitions/ServiceHealthAlerts"
+ },
+ "securityCenter": {
+ "$ref": "types/securityCenter.json#/definitions/SecurityCenter"
+ },
+ "subscriptionRoleAssignments": {
+ "$ref": "types/subscriptionRoleAssignments.json#/definitions/SubscriptionRoleAssignments"
+ },
+ "subscriptionBudget": {
+ "$ref": "types/subscriptionBudget.json#/definitions/SubscriptionBudget"
+ },
+ "subscriptionTags": {
+ "$ref": "types/subscriptionTags.json#/definitions/SubscriptionTags"
+ },
+ "resourceTags": {
+ "$ref": "types/resourceTags.json#/definitions/ResourceTags"
+ },
+ "logAnalyticsResourceGroupName": {
+ "$ref": "#/definitions/logAnalyticsResourceGroupName"
+ },
+ "logAnalyticsWorkspaceName": {
+ "$ref": "#/definitions/logAnalyticsWorkspaceName"
+ },
+ "logAnalyticsRetentionInDays": {
+ "$ref": "#/definitions/logAnalyticsRetentionInDays"
+ },
+ "logAnalyticsAutomationAccountName": {
+ "$ref": "#/definitions/logAnalyticsAutomationAccountName"
+ },
+ "dataCollectionRule": {
+ "$ref": "#/definitions/dataCollectionRule"
+ }
+ },
+ "required": [
+ "resourceTags",
+ "securityCenter",
+ "serviceHealthAlerts",
+ "subscriptionBudget",
+ "subscriptionRoleAssignments",
+ "subscriptionTags",
+ "logAnalyticsResourceGroupName",
+ "logAnalyticsWorkspaceName",
+ "logAnalyticsRetentionInDays",
+ "logAnalyticsAutomationAccountName",
+ "dataCollectionRule"
+ ],
+ "title": "Parameters"
+ },
+ "logAnalyticsResourceGroupName": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": "logAnalyticsResourceGroupName"
+ },
+ "logAnalyticsWorkspaceName": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": "logAnalyticsWorkspaceName"
+ },
+ "logAnalyticsRetentionInDays": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "type": "integer"
+ }
+ },
+ "title": "logAnalyticsRetentionInDays"
+ },
+ "logAnalyticsAutomationAccountName": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": "logAnalyticsAutomationAccountName"
+ },
+ "dataCollectionRule": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "windowsEventLogs": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "streams": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "xPathQueries": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "syslog": {
+ "type": "array",
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "streams": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "facilityNames": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "logLevels": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "Debug",
+ "Info",
+ "Notice",
+ "Warning",
+ "Error",
+ "Critical",
+ "Alert",
+ "Emergency"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "title": "dataCollectionRule"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/aks.json b/schemas/v0.6.0/landingzones/types/aks.json
new file mode 100644
index 00000000..1d3e8080
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/aks.json
@@ -0,0 +1,134 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "AKS": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ true
+ ]
+ },
+ "version": {
+ "type": "string"
+ },
+ "networkPlugin": {
+ "type": "string",
+ "enum": [
+ "azure"
+ ]
+ },
+ "networkPolicy": {
+ "type": "string",
+ "enum": [
+ "azure",
+ "calico"
+ ]
+ },
+ "podCidr": {
+ "type": "string",
+ "enum": [
+ ""
+ ]
+ },
+ "serviceCidr": {
+ "type": "string"
+ },
+ "dnsServiceIP": {
+ "type": "string"
+ },
+ "dockerBridgeCidr": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "enabled",
+ "version",
+ "networkPlugin",
+ "networkPolicy",
+ "podCidr",
+ "serviceCidr",
+ "dockerBridgeCidr"
+ ]
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ true
+ ]
+ },
+ "version": {
+ "type": "string"
+ },
+ "networkPlugin": {
+ "type": "string",
+ "enum": [
+ "kubenet"
+ ]
+ },
+ "networkPolicy": {
+ "type": "string",
+ "enum": [
+ "calico"
+ ]
+ },
+ "podCidr": {
+ "type": "string"
+ },
+ "serviceCidr": {
+ "type": "string"
+ },
+ "dnsServiceIP": {
+ "type": "string"
+ },
+ "dockerBridgeCidr": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "enabled",
+ "version",
+ "networkPlugin",
+ "networkPolicy",
+ "podCidr",
+ "serviceCidr",
+ "dockerBridgeCidr"
+ ]
+ },
+ {
+ "type": "object",
+ "additionalProperties": true,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ false
+ ]
+ }
+ },
+ "required": [
+ "enabled"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "AKS"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/aml.json b/schemas/v0.6.0/landingzones/types/aml.json
new file mode 100644
index 00000000..ef1577d4
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/aml.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "AML": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/Value"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "Aml"
+ },
+ "Value": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enableHbiWorkspace": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enableHbiWorkspace"
+ ],
+ "title": "Value"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/appServiceLinuxContainer.json b/schemas/v0.6.0/landingzones/types/appServiceLinuxContainer.json
new file mode 100644
index 00000000..f4316c33
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/appServiceLinuxContainer.json
@@ -0,0 +1,65 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "APPSERVICELINUXCONTAINER": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ true
+ ]
+ },
+ "skuName": {
+ "type": "string"
+ },
+ "skuTier": {
+ "type": "string"
+ },
+ "enablePrivateEndpoint": {
+ "type": "boolean",
+ "enum": [
+ true,
+ false
+ ]
+ }
+ },
+ "required": [
+ "enabled",
+ "skuName",
+ "skuTier",
+ "enablePrivateEndpoint"
+ ]
+ },
+ {
+ "type": "object",
+ "additionalProperties": true,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ false
+ ]
+ }
+ },
+ "required": [
+ "enabled"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "App Service Linux Container"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/automation.json b/schemas/v0.6.0/landingzones/types/automation.json
new file mode 100644
index 00000000..89515791
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/automation.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "Automation": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/Value"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "Automation"
+ },
+ "Value": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "title": "Value"
+ }
+ }
+}
diff --git a/schemas/v0.6.0/landingzones/types/backupRecoveryVault.json b/schemas/v0.6.0/landingzones/types/backupRecoveryVault.json
new file mode 100644
index 00000000..d7c507f0
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/backupRecoveryVault.json
@@ -0,0 +1,53 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "RecoveryVault": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ true
+ ]
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "enabled",
+ "name"
+ ]
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ false
+ ]
+ }
+ },
+ "required": [
+ "enabled"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "RecoveryVault"
+ }
+ }
+ }
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/hubNetwork.json b/schemas/v0.6.0/landingzones/types/hubNetwork.json
new file mode 100644
index 00000000..9d882724
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/hubNetwork.json
@@ -0,0 +1,93 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "HubNetworkWithoutPrivateDNS": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/ValueWithoutPrivateDNS"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "HubNetworkWithoutPrivateDNS"
+ },
+ "HubNetworkWithPrivateDNS": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/ValueWithPrivateDNS"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "HubNetworkWithPrivateDNS"
+ },
+ "ValueWithoutPrivateDNS": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "virtualNetworkId": {
+ "type": "string"
+ },
+ "rfc1918IPRange": {
+ "type": "string"
+ },
+ "rfc6598IPRange": {
+ "type": "string"
+ },
+ "egressVirtualApplianceIp": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "egressVirtualApplianceIp",
+ "rfc1918IPRange",
+ "rfc6598IPRange",
+ "virtualNetworkId"
+ ],
+ "title": "ValueWithoutPrivateDNS"
+ },
+ "ValueWithPrivateDNS": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "virtualNetworkId": {
+ "type": "string"
+ },
+ "rfc1918IPRange": {
+ "type": "string"
+ },
+ "rfc6598IPRange": {
+ "type": "string"
+ },
+ "egressVirtualApplianceIp": {
+ "type": "string"
+ },
+ "privateDnsManagedByHub": {
+ "type": "boolean"
+ },
+ "privateDnsManagedByHubSubscriptionId": {
+ "type": "string"
+ },
+ "privateDnsManagedByHubResourceGroupName": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "egressVirtualApplianceIp",
+ "rfc1918IPRange",
+ "rfc6598IPRange",
+ "virtualNetworkId",
+ "privateDnsManagedByHub",
+ "privateDnsManagedByHubResourceGroupName",
+ "privateDnsManagedByHubSubscriptionId"
+ ],
+ "title": "ValueWithoutPrivateDNS"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/keyVault.json b/schemas/v0.6.0/landingzones/types/keyVault.json
new file mode 100644
index 00000000..e771589a
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/keyVault.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "KeyVault": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/Value"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "KeyVault"
+ },
+ "Value": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "secretExpiryInDays": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "secretExpiryInDays"
+ ],
+ "title": "Value"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/location.json b/schemas/v0.6.0/landingzones/types/location.json
new file mode 100644
index 00000000..1e17aad8
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/location.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "Location": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "Location"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/logAnalyticsWorkspaceId.json b/schemas/v0.6.0/landingzones/types/logAnalyticsWorkspaceId.json
new file mode 100644
index 00000000..feba5015
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/logAnalyticsWorkspaceId.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "LogAnalyticsWorkspaceId": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "value"
+ ],
+ "properties": {
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": "LogAnalyticsWorkspaceId"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/resourceTags.json b/schemas/v0.6.0/landingzones/types/resourceTags.json
new file mode 100644
index 00000000..5d6bd73f
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/resourceTags.json
@@ -0,0 +1,26 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "ResourceTags": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/Value"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "ResourceTags"
+ },
+ "Value": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string",
+ "description": "Key/Value pairs of tags"
+ },
+ "title": "Value"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/securityCenter.json b/schemas/v0.6.0/landingzones/types/securityCenter.json
new file mode 100644
index 00000000..66ceed6e
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/securityCenter.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "SecurityCenter": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/Value"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "SecurityCenter"
+ },
+ "Value": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "email": {
+ "type": "string"
+ },
+ "phone": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "email",
+ "phone"
+ ],
+ "title": "Value"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/serviceHealthAlerts.json b/schemas/v0.6.0/landingzones/types/serviceHealthAlerts.json
new file mode 100644
index 00000000..0bb153df
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/serviceHealthAlerts.json
@@ -0,0 +1,120 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "ServiceHealthAlerts": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/Value"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "ServiceHealthAlerts"
+ },
+ "Value": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "resourceGroupName": {
+ "type": "string"
+ },
+ "incidentTypes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "regions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "receivers": {
+ "$ref": "#/definitions/Receivers"
+ },
+ "actionGroupName": {
+ "type": "string"
+ },
+ "actionGroupShortName": {
+ "type": "string"
+ },
+ "alertRuleName": {
+ "type": "string"
+ },
+ "alertRuleDescription": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "actionGroupName",
+ "actionGroupShortName",
+ "alertRuleDescription",
+ "alertRuleName",
+ "incidentTypes",
+ "receivers",
+ "regions",
+ "resourceGroupName"
+ ],
+ "title": "Value"
+ },
+ "Receivers": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "app": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "email": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "sms": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/phone"
+ }
+ },
+ "voice": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/phone"
+ }
+ }
+ },
+ "required": [
+ "app",
+ "email",
+ "sms",
+ "voice"
+ ],
+ "title": "Receivers"
+ },
+ "phone": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "countryCode": {
+ "type": "string",
+ "format": "integer"
+ },
+ "phoneNumber": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "countryCode",
+ "phoneNumber"
+ ],
+ "title": "phone"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/sqldb.json b/schemas/v0.6.0/landingzones/types/sqldb.json
new file mode 100644
index 00000000..a774c92a
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/sqldb.json
@@ -0,0 +1,143 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "SQLDB": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ true
+ ]
+ },
+ "sqlAuthenticationUsername": {
+ "type": "string"
+ },
+ "aadAuthenticationOnly":{
+ "type":"boolean",
+ "enum": [
+ false
+ ]
+ }
+ },
+ "required": [
+ "enabled",
+ "sqlAuthenticationUsername",
+ "aadAuthenticationOnly"
+ ]
+ },
+ {
+ "type":"object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ true
+ ]
+ },
+ "aadAuthenticationOnly":{
+ "type":"boolean",
+ "enum": [
+ false
+ ]
+ },
+ "sqlAuthenticationUsername": {
+ "type": "string"
+ },
+ "aadLoginName":{
+ "type":"string"
+ },
+ "aadLoginObjectID":{
+ "type":"string"
+ },
+ "aadLoginType":{
+ "type":"string",
+ "enum": [
+ "User",
+ "Group",
+ "Application"
+ ]
+ }
+ },
+ "required": [
+ "enabled",
+ "aadAuthenticationOnly",
+ "aadLoginName",
+ "aadLoginObjectID",
+ "aadLoginType",
+ "sqlAuthenticationUsername"
+ ]
+ },
+ {
+ "type":"object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ true
+ ]
+ },
+ "aadAuthenticationOnly":{
+ "type":"boolean",
+ "enum": [
+ true
+ ]
+ },
+ "aadLoginName":{
+ "type":"string"
+ },
+ "aadLoginObjectID":{
+ "type":"string"
+ },
+ "aadLoginType":{
+ "type":"string",
+ "enum": [
+ "User",
+ "Group",
+ "Application"
+ ]
+ }
+ },
+ "required": [
+ "enabled",
+ "aadAuthenticationOnly",
+ "aadLoginName",
+ "aadLoginObjectID",
+ "aadLoginType"
+ ]
+ }
+ ,
+ {
+ "type": "object",
+ "additionalProperties": true,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ false
+ ]
+ }
+ },
+ "required": [
+ "enabled"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "sqldb"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/sqlmi.json b/schemas/v0.6.0/landingzones/types/sqlmi.json
new file mode 100644
index 00000000..06209f45
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/sqlmi.json
@@ -0,0 +1,53 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "SQLMI": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ true
+ ]
+ },
+ "username": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "enabled",
+ "username"
+ ]
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "enum": [
+ false
+ ]
+ }
+ },
+ "required": [
+ "enabled"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "Sqlmi"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/subscriptionBudget.json b/schemas/v0.6.0/landingzones/types/subscriptionBudget.json
new file mode 100644
index 00000000..c65c4164
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/subscriptionBudget.json
@@ -0,0 +1,68 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "SubscriptionBudget": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "createBudget": {
+ "type": "boolean",
+ "enum": [
+ true
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "amount": {
+ "type": "integer"
+ },
+ "timeGrain": {
+ "type": "string"
+ },
+ "contactEmails": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "required": [
+ "createBudget",
+ "amount",
+ "contactEmails",
+ "name",
+ "timeGrain"
+ ]
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "createBudget": {
+ "type": "boolean",
+ "enum": [
+ false
+ ]
+ }
+ },
+ "required": [
+ "createBudget"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "SubscriptionBudget"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/subscriptionRoleAssignments.json b/schemas/v0.6.0/landingzones/types/subscriptionRoleAssignments.json
new file mode 100644
index 00000000..137f9a86
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/subscriptionRoleAssignments.json
@@ -0,0 +1,47 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "SubscriptionRoleAssignments": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Value"
+ }
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "SubscriptionRoleAssignments"
+ },
+ "Value": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "comments": {
+ "type": "string"
+ },
+ "roleDefinitionId": {
+ "type": "string",
+ "format": "uuid"
+ },
+ "securityGroupObjectIds": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ },
+ "required": [
+ "comments",
+ "roleDefinitionId",
+ "securityGroupObjectIds"
+ ],
+ "title": "Value"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/subscriptionTags.json b/schemas/v0.6.0/landingzones/types/subscriptionTags.json
new file mode 100644
index 00000000..66c82144
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/subscriptionTags.json
@@ -0,0 +1,26 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "SubscriptionTags": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/Value"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "SubscriptionTags"
+ },
+ "Value": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string",
+ "description": "Key/Value pairs of tags"
+ },
+ "title": "Value"
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/landingzones/types/synapse.json b/schemas/v0.6.0/landingzones/types/synapse.json
new file mode 100644
index 00000000..49a0a237
--- /dev/null
+++ b/schemas/v0.6.0/landingzones/types/synapse.json
@@ -0,0 +1,84 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "definitions": {
+ "Synapse": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "$ref": "#/definitions/valuedef"
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "title": "Synapse"
+ },
+ "valuedef": {
+ "type": "object",
+ "properties": {
+ "value": {
+ "oneOf": [
+ {
+ "aadAuthenticationOnly": {
+ "type": "boolean",
+ "enum": [
+ true
+ ]
+ },
+ "sqlAuthenticationUsername": {
+ "type": "string"
+ },
+ "aadLoginName": {
+ "type": "string"
+ },
+ "aadLoginObjectID": {
+ "type": "string"
+ },
+ "aadLoginType": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "Application"
+ ]
+ },
+ "required": [
+ "aadAuthenticationOnly",
+ "aadLoginName",
+ "aadLoginObjectID",
+ "aadLoginType"
+ ]
+ },
+ {
+ "aadAuthenticationOnly": {
+ "type": "boolean",
+ "enum": [
+ false
+ ]
+ },
+ "sqlAuthenticationUsername": {
+ "type": "string"
+ },
+ "aadLoginObjectID": {
+ "type": "string"
+ },
+ "aadLoginType": {
+ "type": "string",
+ "enum": [
+ "User",
+ "Group",
+ "Application"
+ ]
+ },
+ "required": [
+ "aadAuthenticationOnly",
+ "sqlAuthenticationUsername"
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/schemas/v0.6.0/readme.md b/schemas/v0.6.0/readme.md
new file mode 100644
index 00000000..f7e9315f
--- /dev/null
+++ b/schemas/v0.6.0/readme.md
@@ -0,0 +1,1143 @@
+# Schema Change History
+
+## Landing Zone Schemas
+
+### August 10, 2022
+
+* [Schema definition update for Logging](../../docs/archetypes/logging.md)
+
+
+ Expand/collapse
+
+ ```json
+ "dataCollectionRule": {
+ "value": {
+ "enabled": true,
+ "name": "DCR-AzureMonitorLogs",
+ "windowsEventLogs": [
+ {
+ "streams": [
+ "Microsoft-Event"
+ ],
+ "xPathQueries": [
+ "Application!*[System[(Level=1 or Level=2 or Level=3)]]",
+ "Security!*[System[(band(Keywords,13510798882111488))]]",
+ "System!*[System[(Level=1 or Level=2 or Level=3)]]"
+ ],
+ "name": "eventLogsDataSource"
+ }
+ ],
+ "syslog": [
+ {
+ "streams": [
+ "Microsoft-Syslog"
+ ],
+ "facilityNames": [
+ "auth",
+ "authpriv",
+ "cron",
+ "daemon",
+ "mark",
+ "kern",
+ "local0",
+ "local1",
+ "local2",
+ "local3",
+ "local4",
+ "local5",
+ "local6",
+ "local7",
+ "lpr",
+ "mail",
+ "news",
+ "syslog",
+ "user",
+ "uucp"
+ ],
+ "logLevels": [
+ "Debug",
+ "Info",
+ "Notice",
+ "Warning",
+ "Error",
+ "Critical",
+ "Alert",
+ "Emergency"
+ ],
+ "name": "sysLogsDataSource"
+ }
+ ]
+ }
+ }
+ ```
+
+### April 25, 2022
+
+* [Schema definition update for Hub Networking with Azure Firewall](../../docs/archetypes/hubnetwork-azfw.md)
+
+
+ Expand/collapse
+
+ ```json
+ {
+ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "serviceHealthAlerts": {
+ "value": {
+ "resourceGroupName": "pubsec-service-health",
+ "incidentTypes": [
+ "Incident",
+ "Security"
+ ],
+ "regions": [
+ "Global",
+ "Canada East",
+ "Canada Central"
+ ],
+ "receivers": {
+ "app": [
+ "alzcanadapubsec@microsoft.com"
+ ],
+ "email": [
+ "alzcanadapubsec@microsoft.com"
+ ],
+ "sms": [
+ {
+ "countryCode": "1",
+ "phoneNumber": "5555555555"
+ }
+ ],
+ "voice": [
+ {
+ "countryCode": "1",
+ "phoneNumber": "5555555555"
+ }
+ ]
+ },
+ "actionGroupName": "ALZ action group",
+ "actionGroupShortName": "alz-alert",
+ "alertRuleName": "ALZ alert rule",
+ "alertRuleDescription": "Alert rule for Azure Landing Zone"
+ }
+ },
+ "securityCenter": {
+ "value": {
+ "email": "alzcanadapubsec@microsoft.com",
+ "phone": "5555555555"
+ }
+ },
+ "subscriptionRoleAssignments": {
+ "value": [
+ {
+ "comments": "Built-in Contributor Role",
+ "roleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c",
+ "securityGroupObjectIds": [
+ "38f33f7e-a471-4630-8ce9-c6653495a2ee"
+ ]
+ }
+ ]
+ },
+ "subscriptionBudget": {
+ "value": {
+ "createBudget": false
+ }
+ },
+ "subscriptionTags": {
+ "value": {
+ "ISSO": "isso-tbd"
+ }
+ },
+ "resourceTags": {
+ "value": {
+ "ClientOrganization": "client-organization-tag",
+ "CostCenter": "cost-center-tag",
+ "DataSensitivity": "data-sensitivity-tag",
+ "ProjectContact": "project-contact-tag",
+ "ProjectName": "project-name-tag",
+ "TechnicalContact": "technical-contact-tag"
+ }
+ },
+ "privateDnsZones": {
+ "value": {
+ "enabled": true,
+ "resourceGroupName": "pubsec-dns"
+ }
+ },
+ "ddosStandard": {
+ "value": {
+ "enabled": false,
+ "resourceGroupName": "pubsec-ddos",
+ "planName": "ddos-plan"
+ }
+ },
+ "publicAccessZone": {
+ "value": {
+ "enabled": true,
+ "resourceGroupName": "pubsec-public-access-zone"
+ }
+ },
+ "managementRestrictedZone": {
+ "value": {
+ "enabled": true,
+ "resourceGroupName": "pubsec-management-restricted-zone",
+ "network": {
+ "name": "management-restricted-vnet",
+ "addressPrefixes": ["10.18.4.0/22"],
+ "subnets": [
+ {
+ "comments": "Management (Access Zone) Subnet",
+ "name": "MazSubnet",
+ "addressPrefix": "10.18.4.0/25",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ },
+ {
+ "comments": "Infrastructure Services (Restricted Zone) Subnet",
+ "name": "InfSubnet",
+ "addressPrefix": "10.18.4.128/25",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ },
+ {
+ "comments": "Security Services (Restricted Zone) Subnet",
+ "name": "SecSubnet",
+ "addressPrefix": "10.18.5.0/26",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ },
+ {
+ "comments": "Logging Services (Restricted Zone) Subnet",
+ "name": "LogSubnet",
+ "addressPrefix": "10.18.5.64/26",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ },
+ {
+ "comments": "Core Management Interfaces (Restricted Zone) Subnet",
+ "name": "MgmtSubnet",
+ "addressPrefix": "10.18.5.128/26",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ }
+ ]
+ }
+ }
+ },
+ "hub": {
+ "value": {
+ "resourceGroupName": "pubsec-hub-networking",
+ "bastion": {
+ "enabled": true,
+ "name": "bastion",
+ "sku": "Standard",
+ "scaleUnits": 2
+ },
+ "azureFirewall": {
+ "name": "pubsecAzureFirewall",
+ "availabilityZones": ["1", "2", "3"],
+ "forcedTunnelingEnabled": false,
+ "forcedTunnelingNextHop": "10.17.1.4"
+ },
+ "network": {
+ "name": "hub-vnet",
+ "addressPrefixes": [
+ "10.18.0.0/22",
+ "100.60.0.0/16"
+ ],
+ "addressPrefixBastion": "192.168.0.0/16",
+ "subnets": {
+ "gateway": {
+ "comments": "Gateway Subnet used for VPN and/or Express Route connectivity",
+ "name": "GatewaySubnet",
+ "addressPrefix": "10.18.0.0/27"
+ },
+ "firewall": {
+ "comments": "Azure Firewall",
+ "name": "AzureFirewallSubnet",
+ "addressPrefix": "10.18.1.0/24"
+ },
+ "firewallManagement": {
+ "comments": "Azure Firewall Management",
+ "name": "AzureFirewallManagementSubnet",
+ "addressPrefix": "10.18.2.0/26"
+ },
+ "bastion": {
+ "comments": "Azure Bastion",
+ "name": "AzureBastionSubnet",
+ "addressPrefix": "192.168.0.0/24"
+ },
+ "publicAccess": {
+ "comments": "Public Access Zone (Application Gateway)",
+ "name": "PAZSubnet",
+ "addressPrefix": "100.60.1.0/24"
+ },
+ "optional": []
+ }
+ }
+ }
+ },
+ "networkWatcher": {
+ "value": {
+ "resourceGroupName": "NetworkWatcherRG"
+ }
+ }
+ }
+ }
+ ```
+
+
+
+* [Schema definition update for Hub Networking with Network Virtual Appliances (NVA)](../../docs/archetypes/hubnetwork-nva-fortigate.md)
+
+
+ Expand/collapse
+
+ ```json
+ {
+ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "serviceHealthAlerts": {
+ "value": {
+ "resourceGroupName": "pubsec-service-health",
+ "incidentTypes": [
+ "Incident",
+ "Security"
+ ],
+ "regions": [
+ "Global",
+ "Canada East",
+ "Canada Central"
+ ],
+ "receivers": {
+ "app": [
+ "alzcanadapubsec@microsoft.com"
+ ],
+ "email": [
+ "alzcanadapubsec@microsoft.com"
+ ],
+ "sms": [
+ {
+ "countryCode": "1",
+ "phoneNumber": "5555555555"
+ }
+ ],
+ "voice": [
+ {
+ "countryCode": "1",
+ "phoneNumber": "5555555555"
+ }
+ ]
+ },
+ "actionGroupName": "ALZ action group",
+ "actionGroupShortName": "alz-alert",
+ "alertRuleName": "ALZ alert rule",
+ "alertRuleDescription": "Alert rule for Azure Landing Zone"
+ }
+ },
+ "securityCenter": {
+ "value": {
+ "email": "alzcanadapubsec@microsoft.com",
+ "phone": "5555555555"
+ }
+ },
+ "subscriptionRoleAssignments": {
+ "value": [
+ {
+ "comments": "Built-in Contributor Role",
+ "roleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c",
+ "securityGroupObjectIds": [
+ "38f33f7e-a471-4630-8ce9-c6653495a2ee"
+ ]
+ }
+ ]
+ },
+ "subscriptionBudget": {
+ "value": {
+ "createBudget": false
+ }
+ },
+ "subscriptionTags": {
+ "value": {
+ "ISSO": "isso-tbd"
+ }
+ },
+ "resourceTags": {
+ "value": {
+ "ClientOrganization": "client-organization-tag",
+ "CostCenter": "cost-center-tag",
+ "DataSensitivity": "data-sensitivity-tag",
+ "ProjectContact": "project-contact-tag",
+ "ProjectName": "project-name-tag",
+ "TechnicalContact": "technical-contact-tag"
+ }
+ },
+ "privateDnsZones": {
+ "value": {
+ "enabled": true,
+ "resourceGroupName": "pubsec-dns"
+ }
+ },
+ "ddosStandard": {
+ "value": {
+ "enabled": false,
+ "resourceGroupName": "pubsec-ddos",
+ "planName": "ddos-plan"
+ }
+ },
+ "publicAccessZone": {
+ "value": {
+ "enabled": true,
+ "resourceGroupName": "pubsec-public-access-zone"
+ }
+ },
+ "managementRestrictedZone": {
+ "value": {
+ "enabled": true,
+ "resourceGroupName": "pubsec-management-restricted-zone",
+ "network": {
+ "name": "management-restricted-vnet",
+ "addressPrefixes": ["10.18.4.0/22"],
+ "subnets": [
+ {
+ "comments": "Management (Access Zone) Subnet",
+ "name": "MazSubnet",
+ "addressPrefix": "10.18.4.0/25",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ },
+ {
+ "comments": "Infrastructure Services (Restricted Zone) Subnet",
+ "name": "InfSubnet",
+ "addressPrefix": "10.18.4.128/25",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ },
+ {
+ "comments": "Security Services (Restricted Zone) Subnet",
+ "name": "SecSubnet",
+ "addressPrefix": "10.18.5.0/26",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ },
+ {
+ "comments": "Logging Services (Restricted Zone) Subnet",
+ "name": "LogSubnet",
+ "addressPrefix": "10.18.5.64/26",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ },
+ {
+ "comments": "Core Management Interfaces (Restricted Zone) Subnet",
+ "name": "MgmtSubnet",
+ "addressPrefix": "10.18.5.128/26",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ }
+ ]
+ }
+ }
+ },
+ "hub": {
+ "value": {
+ "resourceGroupName": "pubsec-hub-networking",
+ "bastion": {
+ "enabled": true,
+ "name": "bastion",
+ "sku": "Standard",
+ "scaleUnits": 2
+ },
+ "network": {
+ "name": "hub-vnet",
+ "addressPrefixes": [
+ "10.18.0.0/22",
+ "100.60.0.0/16"
+ ],
+ "addressPrefixBastion": "192.168.0.0/16",
+ "subnets": {
+ "gateway": {
+ "comments": "Gateway Subnet used for VPN and/or Express Route connectivity",
+ "name": "GatewaySubnet",
+ "addressPrefix": "10.18.1.0/27"
+ },
+ "bastion": {
+ "comments": "Azure Bastion",
+ "name": "AzureBastionSubnet",
+ "addressPrefix": "192.168.0.0/24"
+ },
+ "public": {
+ "comments": "Public Subnet Name (External Facing (Internet/Ground))",
+ "name": "PublicSubnet",
+ "addressPrefix": "100.60.0.0/24"
+ },
+ "publicAccessZone": {
+ "comments": "Public Access Zone (i.e. Application Gateway)",
+ "name": "PAZSubnet",
+ "addressPrefix": "100.60.1.0/24"
+ },
+ "externalAccessNetwork": {
+ "comments": "External Access Network",
+ "name": "EanSubnet",
+ "addressPrefix": "10.18.0.0/27"
+ },
+ "nonProductionInternal": {
+ "comments": "Non-production Internal for firewall appliances (Internal Facing Non-Production Traffic)",
+ "name": "DevIntSubnet",
+ "addressPrefix": "10.18.0.64/27"
+ },
+ "productionInternal": {
+ "comments": "Production Internal for firewall appliances (Internal Facing Production Traffic)",
+ "name": "PrdIntSubnet",
+ "addressPrefix": "10.18.0.32/27"
+ },
+ "managementRestrictedZoneInternal": {
+ "comments": "Management Restricted Zone",
+ "name": "MrzSubnet",
+ "addressPrefix": "10.18.0.96/27"
+ },
+ "highAvailability": {
+ "comments": "High Availability (Firewall to Firewall heartbeat)",
+ "name": "HASubnet",
+ "addressPrefix": "10.18.0.128/28"
+ },
+ "optional": []
+ }
+ },
+ "nvaFirewall": {
+ "image": {
+ "publisher": "fortinet",
+ "offer": "fortinet_fortigate-vm_v5",
+ "sku": "fortinet_fg-vm",
+ "version": "6.4.5",
+ "plan": "fortinet_fg-vm"
+ },
+ "nonProduction": {
+ "internalLoadBalancer": {
+ "name": "pubsecDevFWILB",
+ "tcpProbe": {
+ "name": "lbprobe",
+ "port": 8008,
+ "intervalInSeconds": 5,
+ "numberOfProbes": 2
+ },
+ "internalIp": "10.18.0.68",
+ "externalIp": "100.60.0.7"
+ },
+ "deployVirtualMachines": true,
+ "virtualMachines": [
+ {
+ "name": "pubsecDevFW1",
+ "vmSku": "Standard_D8s_v4",
+ "internalIp": "10.18.0.69",
+ "externalIp": "100.60.0.8",
+ "mrzInternalIp": "10.18.0.104",
+ "highAvailabilityIp": "10.18.0.134",
+ "availabilityZone": "2"
+ },
+ {
+ "name": "pubsecDevFW2",
+ "vmSku": "Standard_D8s_v4",
+ "internalIp": "10.18.0.70",
+ "externalIp": "100.60.0.9",
+ "mrzInternalIp": "10.18.0.105",
+ "highAvailabilityIp": "10.18.0.135",
+ "availabilityZone": "3"
+ }
+ ]
+ },
+ "production": {
+ "internalLoadBalancer": {
+ "name": "pubsecProdFWILB",
+ "tcpProbe": {
+ "name": "lbprobe",
+ "port": 8008,
+ "intervalInSeconds": 5,
+ "numberOfProbes": 2
+ },
+ "internalIp": "10.18.0.36",
+ "externalIp": "100.60.0.4"
+ },
+ "deployVirtualMachines": true,
+ "virtualMachines": [
+ {
+ "name": "pubsecProdFW1",
+ "vmSku": "Standard_F8s_v2",
+ "internalIp": "10.18.0.37",
+ "externalIp": "100.60.0.5",
+ "mrzInternalIp": "10.18.0.101",
+ "highAvailabilityIp": "10.18.0.132",
+ "availabilityZone": "1"
+ },
+ {
+ "name": "pubsecProdFW2",
+ "vmSku": "Standard_F8s_v2",
+ "internalIp": "10.18.0.38",
+ "externalIp": "100.60.0.6",
+ "mrzInternalIp": "10.18.0.102",
+ "highAvailabilityIp": "10.18.0.133",
+ "availabilityZone": "2"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "networkWatcher": {
+ "value": {
+ "resourceGroupName": "NetworkWatcherRG"
+ }
+ }
+ }
+ }
+ ```
+
+
+
+### April 21, 2022
+
+* Schema definition update for Machine Learning & Healthcare archetypes. Expanded the spoke network subnet configuration to contain 0 or more optional subnets. This change enables network configuration to be more flexible.
+
+ * Machine Learning archetype network configuration with optional subnets
+
+
+ Expand/collapse
+
+ ```json
+ "network": {
+ "value": {
+ "peerToHubVirtualNetwork": true,
+ "useRemoteGateway": false,
+ "name": "azmlsqlauth2022Q1vnet",
+ "dnsServers": [
+ "10.18.1.4"
+ ],
+ "addressPrefixes": [
+ "10.6.0.0/16"
+ ],
+ "subnets": {
+ "sqlmi": {
+ "comments": "SQL Managed Instances Delegated Subnet",
+ "name": "sqlmi",
+ "addressPrefix": "10.6.5.0/25"
+ },
+ "databricksPublic": {
+ "comments": "Databricks Public Delegated Subnet",
+ "name": "databrickspublic",
+ "addressPrefix": "10.6.6.0/25"
+ },
+ "databricksPrivate": {
+ "comments": "Databricks Private Delegated Subnet",
+ "name": "databricksprivate",
+ "addressPrefix": "10.6.7.0/25"
+ },
+ "privateEndpoints": {
+ "comments": "Private Endpoints Subnet",
+ "name": "privateendpoints",
+ "addressPrefix": "10.6.8.0/25"
+ },
+ "aks": {
+ "comments": "AKS Subnet",
+ "name": "aks",
+ "addressPrefix": "10.6.9.0/25"
+ },
+ "appService": {
+ "comments": "App Service Subnet",
+ "name": "appService",
+ "addressPrefix": "10.6.10.0/25"
+ },
+ "optional": [
+ {
+ "comments": "Optional Subnet 1",
+ "name": "virtualMachines",
+ "addressPrefix": "10.6.11.0/25",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ },
+ {
+ "comments": "Optional Subnet 2 with delegation for NetApp Volumes",
+ "name": "NetappVolumes",
+ "addressPrefix": "10.6.12.0/25",
+ "nsg": {
+ "enabled": false
+ },
+ "udr": {
+ "enabled": false
+ },
+ "delegations": {
+ "serviceName": "Microsoft.NetApp/volumes"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ```
+
+
+
+ * Healthcare archetype network configuration with optional subnets
+
+
+ Expand/collapse
+
+ ```json
+ "network": {
+ "value": {
+ "peerToHubVirtualNetwork": true,
+ "useRemoteGateway": false,
+ "name": "health2022Q1vnet",
+ "dnsServers": [
+ "10.18.1.4"
+ ],
+ "addressPrefixes": [
+ "10.5.0.0/16"
+ ],
+ "subnets": {
+ "databricksPublic": {
+ "comments": "Databricks Public Delegated Subnet",
+ "name": "databrickspublic",
+ "addressPrefix": "10.5.5.0/25"
+ },
+ "databricksPrivate": {
+ "comments": "Databricks Private Delegated Subnet",
+ "name": "databricksprivate",
+ "addressPrefix": "10.5.6.0/25"
+ },
+ "privateEndpoints": {
+ "comments": "Private Endpoints Subnet",
+ "name": "privateendpoints",
+ "addressPrefix": "10.5.7.0/25"
+ },
+ "web": {
+ "comments": "Azure Web App Delegated Subnet",
+ "name": "webapp",
+ "addressPrefix": "10.5.8.0/25"
+ },
+ "optional": [
+ {
+ "comments": "Optional Subnet 1",
+ "name": "virtualMachines",
+ "addressPrefix": "10.5.9.0/25",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ },
+ {
+ "comments": "Optional Subnet 2 with delegation for NetApp Volumes",
+ "name": "NetappVolumes",
+ "addressPrefix": "10.5.10.0/25",
+ "nsg": {
+ "enabled": false
+ },
+ "udr": {
+ "enabled": false
+ },
+ "delegations": {
+ "serviceName": "Microsoft.NetApp/volumes"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ```
+
+
+
+### April 20, 2022
+
+* Schema definition update for Generic Subscription. Spoke network's subnet configuration is now defined as an array. The array can have 0 to many subnet definitions.
+
+* Removed 4 subnets from Machine Learning archetype's virtual network: `oz`, `paz`, `rz` and `hrz`.
+
+* Removed 4 subnets from Healthcare archetype's virtual network: `oz`, `paz`, `rz` and `hrz`.
+
+* Schema definition for Hub Networking archetypes (Azure Firewall & NVA). See documentation:
+
+ * [Hub Networking with Azure Firewall](../../docs/archetypes/hubnetwork-azfw.md)
+ * [Hub Networking with Network Virtual Appliance (e.g. Fortigate Firewalls)](../../docs/archetypes/hubnetwork-nva-fortigate.md)
+
+### April 18, 2022
+
+Change in `synapse` schema object to support Azure AD authentication.
+
+| Setting | Type | Description |
+| ------- | ---- | ----------- |
+| aadAuthenticationOnly | Boolean | Indicate that either AAD auth only or both AAD & SQL auth (required) |
+| sqlAuthenticationUsername | String | The SQL authentication user name optional, required when `aadAuthenticationOnly` is false |
+| aadLoginName | String | The name of the login or group in the format of first-name last-name |
+| aadLoginObjectID | String | The object id of the Azure AD object whether it's a login or a group |
+| aadLoginType | String | Represent the type of the object, it can be **User**, **Group** or **Application** (in case of service principal) |
+
+**Examples**
+
+SQL authentication only | Json (used in parameter files)
+
+```json
+"synapse": {
+ "value": {
+ "aadAuthenticationOnly": false,
+ "sqlAuthenticationUsername": "azadmin"
+ }
+```
+
+SQL authentication only | bicep (used when calling bicep module from another)
+
+```bicep
+{
+ aadAuthenticationOnly: false
+ sqlAuthenticationUsername: 'azadmin'
+}
+```
+
+Azure AD authentication only | Json (used in parameters files)
+
+```json
+ "synapse": {
+ "value": {
+ "aadAuthenticationOnly": true,
+ "aadLoginName": "az.admins",
+ "aadLoginObjectID": "e0357d81-55d8-44e9-9d9c-ab09dc710785",
+ "aadLoginType":"Group"
+ }
+```
+
+Azure AD authentication only | bicep (used when calling bicep module from another)
+
+```bicep
+{
+ aadAuthenticationOnly: true
+ aadLoginName:'John Smith',
+ aadLoginObjectID:'88888-888888-888888-888888',
+ aadLoginType:'User'
+}
+```
+
+Mixed authentication | Json (used in parameters files)
+
+```json
+ "synapse": {
+ "value": {
+ "aadAuthenticationOnly": false,
+ "sqlAuthenticationUsername": "azadmin",
+ "aadLoginName": "az.admins",
+ "aadLoginObjectID": "e0357d81-55d8-44e9-9d9c-ab09dc710785",
+ "aadLoginType":"Group"
+ }
+ ```
+
+ Mixed authentication | bicep (used when calling bicep module from another)
+
+```bicep
+ {
+ aadAuthenticationOnly: false
+ sqlAuthenticationUsername: 'azadmin'
+ aadLoginName:'John Smith',
+ aadLoginObjectID:'88888-888888-888888-888888',
+ aadLoginType:'User'
+ }
+```
+
+### April 7, 2022
+
+Schema definition for Logging archetype. See [documentation](../../docs/archetypes/logging.md).
+
+### April 6, 2022
+
+Added `logAnalyticsWorkspaceResourceId` to archetypes. This is an optional parameter in the JSON file as it can be set at runtime.
+
+**Example**
+
+```json
+ "logAnalyticsWorkspaceResourceId": {
+ "value": "LOG_ANALYTICS_WORKSPACE_RESOURCE_ID"
+ }
+```
+
+### February 14, 2022
+
+Added location schema object. This is an optional setting for archetypes. This setting will default to `deployment().location`.
+
+**Example**
+
+```json
+ "location": {
+ "value": "canadacentral"
+ }
+```
+
+### January 16, 2021
+Changed `appServiceLinuxContainer` schema object to support optional inbound private endpoint.
+
+**Example**
+```json
+"appServiceLinuxContainer": {
+ "value": {
+ "enablePrivateEndpoint": true
+ }
+}
+```
+
+### December 30, 2021
+
+Changed `aks` schema object to support optional deployment of AKS using the `enabled` key as a required field.
+
+**Example**
+```json
+"aks": {
+ "value": {
+ "enabled": true
+ }
+}
+```
+
+Added `appServiceLinuxContainer` schema object to support optional deployment of App Service (for model deployments) using the `enabled` key as a required field. Sku name and tier are also required fields.
+
+**Example**
+```json
+"appServiceLinuxContainer": {
+ "value": {
+ "enabled": true,
+ "skuName": "P1V2",
+ "skuTier": "Premium"
+ }
+}
+```
+
+Added required `appService` subnet as well as the `appServiceLinuxContainer` object in machine learning schema json file.
+
+
+### November 27, 2021
+
+Change in `aks` schema object to support Options for the creation of AKS Cluster with one of the following three scenarios:
+
+* Network Plugin: Kubenet + Network Policy: Calico (Network Policy)
+* Network Plugin: Azure CNI + Network Policy: Calico (Network Policy)
+* Network Plugin: Azure CNI + Network Policy: Azure (Network Policy).
+
+| Setting | Type | Description |
+| ------- | ---- | ----------- |
+| version | String | Kubernetes version to use for the AKS Cluster (required) |
+| networkPlugin | String | Network Plugin to use: `kubenet` (for Kubenet) **or** `azure` (for Azure CNI) (required) |
+| networkPolicy | String | Network Policy to use: `calico` (for Calico); which can be used with either **kubenet** or **Azure** Network Plugins **or** `azure` (for Azure NP); which can only be used with **Azure CNI** |
+
+**Note**
+
+`podCidr` value shoud be set to ( **''** ) when Azure CNI is used
+
+**Examples**
+
+* Network Plugin: Kubenet + Network Policy: Calico (Network Policy)
+
+```json
+"aks": {
+ "value": {
+ "version": "1.21.2",
+ "networkPlugin": "kubenet" ,
+ "networkPolicy": "calico",
+ "podCidr": "11.0.0.0/16",
+ "serviceCidr": "20.0.0.0/16" ,
+ "dnsServiceIP": "20.0.0.10",
+ "dockerBridgeCidr": "30.0.0.1/16"
+ }
+}
+```
+
+* Network Plugin: Azure CNI + Network Policy: Calico (Network Policy)
+
+```json
+"aks": {
+ "value": {
+ "version": "1.21.2",
+ "networkPlugin": "azure" ,
+ "networkPolicy": "calico",
+ "podCidr": "",
+ "serviceCidr": "20.0.0.0/16" ,
+ "dnsServiceIP": "20.0.0.10",
+ "dockerBridgeCidr": "30.0.0.1/16"
+ }
+}
+```
+
+* Network Plugin: Azure CNI + Network Policy: Azure (Network Policy).
+
+```json
+"aks": {
+ "value": {
+ "version": "1.21.2",
+ "networkPlugin": "azure" ,
+ "networkPolicy": "azure",
+ "podCidr": "",
+ "serviceCidr": "20.0.0.0/16" ,
+ "dnsServiceIP": "20.0.0.10",
+ "dockerBridgeCidr": "30.0.0.1/16"
+ }
+}
+```
+### November 26, 2021
+
+Added Azure Recovery Vault schema to enable the creation of a Recovery Vault in the generic Archtetype subscription
+| Setting | Type | Description |
+| ------- | ---- | ----------- |
+| enabled | Boolean | Indicate whether or not to deploy Azure Recovery Vault (required) |
+| name | String | The name of the Recovery Vault |
+
+
+**Examples**
+
+Enable recovery vault | Json (used in parameter files)
+```json
+ "backupRecoveryVault":{
+ "value": {
+ "enabled":true,
+ "name":"bkupvault"
+ }
+ }
+```
+
+### November 25, 2021
+
+* Remove `uuid` format check on `privateDnsManagedByHubSubscriptionId` for type `schemas/latest/landingzones/types/hubNetwork.json`
+
+### November 23, 2021
+
+Change in `sqldb` schema object to support Azure AD authentication.
+
+| Setting | Type | Description |
+| ------- | ---- | ----------- |
+| enabled | Boolean | Indicate whether or not to deploy Azure SQL Database (required) |
+| aadAuthenticationOnly | Boolean | Indicate that either AAD auth only or both AAD & SQL auth (required) |
+| sqlAuthenticationUsername | String | The SQL authentication user name optional, required when `aadAuthenticationOnly` is false |
+| aadLoginName | String | The name of the login or group in the format of first-name last-name |
+| aadLoginObjectID | String | The object id of the Azure AD object whether it's a login or a group |
+| aadLoginType | String | Represent the type of the object, it can be **User**, **Group** or **Application** (in case of service principal) |
+
+**Examples**
+
+SQL authentication only | Json (used in parameter files)
+
+```json
+"sqldb": {
+ "value": {
+ "aadAuthenticationOnly":false,
+ "enabled": true,
+ "sqlAuthenticationUsername": "azadmin"
+ }
+}
+```
+
+SQL authentication only | bicep (used when calling bicep module from another)
+
+```bicep
+{
+ enabled: true
+ aadAuthenticationOnly: false
+ sqlAuthenticationUsername: 'azadmin'
+}
+```
+
+Azure AD authentication only | Json (used in parameters files)
+
+```json
+"sqldb": {
+ "value": {
+ "enabled":true,
+ "aadAuthenticationOnly":true,
+ "aadLoginName":"John Smith",
+ "aadLoginObjectID":"88888-888888-888888-888888",
+ "aadLoginType":"User"
+ }
+}
+```
+
+Azure AD authentication only | bicep (used when calling bicep module from another)
+
+```bicep
+{
+ enabled: true
+ aadAuthenticationOnly: true
+ aadLoginName:'John Smith',
+ aadLoginObjectID:'88888-888888-888888-888888',
+ aadLoginType:'User'
+}
+```
+
+Mixed authentication | Json (used in parameters files)
+
+```json
+ "sqldb": {
+ "value": {
+ "enabled":true,
+ "aadAuthenticationOnly":false,
+ "sqlAuthenticationUsername": "azadmin",
+ "aadLoginName":"John Smith",
+ "aadLoginObjectID":"88888-888888-888888-888888",
+ "aadLoginType":"User"
+ }
+ }
+ ```
+
+ Mixed authentication | bicep (used when calling bicep module from another)
+
+```bicep
+ {
+ enabled: true
+ aadAuthenticationOnly: false
+ sqlAuthenticationUsername: 'azadmin'
+ aadLoginName:'John Smith',
+ aadLoginObjectID:'88888-888888-888888-888888',
+ aadLoginType:'User'
+ }
+```
+
+### November 12, 2021
+
+* Initial version based on v0.1.0 of the schema definitions.
diff --git a/tests/schemas/lz-healthcare/Synapse-sqlAuth.json b/tests/schemas/lz-healthcare/Synapse-sqlAuth.json
index cbe13567..bc275f2b 100644
--- a/tests/schemas/lz-healthcare/Synapse-sqlAuth.json
+++ b/tests/schemas/lz-healthcare/Synapse-sqlAuth.json
@@ -96,16 +96,28 @@
"sqldb": {
"value": {
"enabled": true,
+<<<<<<<< HEAD:tests/schemas/lz-healthcare/Synapse-sqlAuth.json
"aadAuthenticationOnly": true,
"aadLoginName": "DBA Group",
"aadLoginObjectID": "4e4ea47c-ee21-4add-ad2f-a75d0d8014e0",
"aadLoginType": "Group"
+========
+ "sqlAuthenticationUsername": "azadmin",
+ "aadAuthenticationOnly": false
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/82f7705e-3386-427b-95b7-cbed91ab29a7_healthcare_canadacentral.json
}
},
"synapse": {
"value": {
+<<<<<<<< HEAD:tests/schemas/lz-healthcare/Synapse-sqlAuth.json
"aadAuthenticationOnly": false,
"sqlAuthenticationUsername": "synaseAdminUser"
+========
+ "aadAuthenticationOnly": true,
+ "aadLoginName": "az.admins",
+ "aadLoginObjectID": "e0357d81-55d8-44e9-9d9c-ab09dc710785",
+ "aadLoginType": "Group"
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/82f7705e-3386-427b-95b7-cbed91ab29a7_healthcare_canadacentral.json
}
},
"hubNetwork": {
@@ -151,7 +163,37 @@
"name": "webapp",
"addressPrefix": "10.5.8.0/25"
},
+<<<<<<<< HEAD:tests/schemas/lz-healthcare/Synapse-sqlAuth.json
"optional": []
+========
+ "optional": [
+ {
+ "comments": "Optional Subnet 1",
+ "name": "virtualMachines",
+ "addressPrefix": "10.5.9.0/25",
+ "nsg": {
+ "enabled": true
+ },
+ "udr": {
+ "enabled": true
+ }
+ },
+ {
+ "comments": "Optional Subnet 2 with delegation for NetApp Volumes",
+ "name": "NetappVolumes",
+ "addressPrefix": "10.5.10.0/25",
+ "nsg": {
+ "enabled": false
+ },
+ "udr": {
+ "enabled": false
+ },
+ "delegations": {
+ "serviceName": "Microsoft.NetApp/volumes"
+ }
+ }
+ ]
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/82f7705e-3386-427b-95b7-cbed91ab29a7_healthcare_canadacentral.json
}
}
}
diff --git a/tests/schemas/lz-machinelearning/AppServiceLinuxContainerPrivateEndpointIsFalse.json b/tests/schemas/lz-machinelearning/AppServiceLinuxContainerPrivateEndpointIsFalse.json
index 7d973272..97700f28 100644
--- a/tests/schemas/lz-machinelearning/AppServiceLinuxContainerPrivateEndpointIsFalse.json
+++ b/tests/schemas/lz-machinelearning/AppServiceLinuxContainerPrivateEndpointIsFalse.json
@@ -71,6 +71,7 @@
},
"resourceGroups": {
"value": {
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/AppServiceLinuxContainerPrivateEndpointIsFalse.json
"automation": "azml-automation",
"compute": "azml-compute",
"monitor": "azml-monitor",
@@ -78,6 +79,15 @@
"networkWatcher": "NetworkWatcherRG",
"security": "azml-security",
"storage": "azml-storage"
+========
+ "automation": "azmlcmksqlmi-automation",
+ "compute": "azmlcmksqlmi-compute",
+ "monitor": "azmlcmksqlmi-monitor",
+ "networking": "azmlcmksqlmi-networking",
+ "networkWatcher": "NetworkWatcherRG",
+ "security": "azmlcmksqlmi-security",
+ "storage": "azmlcmksqlmi-storage"
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/f459218a-e8bb-49c9-b768-ee6828a144aa_machinelearning_canadacentral.json
}
},
"useCMK": {
@@ -95,11 +105,17 @@
},
"aks": {
"value": {
- "version": "1.21.2",
+ "version": "1.22.6",
"enabled": true,
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/AppServiceLinuxContainerPrivateEndpointIsFalse.json
"networkPlugin": "azure",
"networkPolicy": "azure",
"podCidr": "",
+========
+ "networkPlugin": "kubenet",
+ "networkPolicy": "calico",
+ "podCidr": "11.0.0.0/16",
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/f459218a-e8bb-49c9-b768-ee6828a144aa_machinelearning_canadacentral.json
"serviceCidr": "20.0.0.0/16",
"dnsServiceIP": "20.0.0.10",
"dockerBridgeCidr": "30.0.0.1/16"
@@ -110,17 +126,25 @@
"enabled": true,
"skuName": "P1V2",
"skuTier": "Premium",
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/AppServiceLinuxContainerPrivateEndpointIsFalse.json
"enablePrivateEndpoint": false
+========
+ "enablePrivateEndpoint": true
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/f459218a-e8bb-49c9-b768-ee6828a144aa_machinelearning_canadacentral.json
}
},
"sqldb": {
"value": {
"enabled": true,
"sqlAuthenticationUsername": "azadmin",
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/AppServiceLinuxContainerPrivateEndpointIsFalse.json
"aadAuthenticationOnly": false,
"aadLoginName": "DBA Group",
"aadLoginObjectID": "4e4ea47c-ee21-4add-ad2f-a75d0d8014e0",
"aadLoginType": "Group"
+========
+ "aadAuthenticationOnly": false
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/f459218a-e8bb-49c9-b768-ee6828a144aa_machinelearning_canadacentral.json
}
},
"sqlmi": {
@@ -149,7 +173,11 @@
"value": {
"peerToHubVirtualNetwork": true,
"useRemoteGateway": false,
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/AppServiceLinuxContainerPrivateEndpointIsFalse.json
"name": "azml-vnet",
+========
+ "name": "azmlcmksqlmi-vnet",
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/f459218a-e8bb-49c9-b768-ee6828a144aa_machinelearning_canadacentral.json
"dnsServers": [
"10.18.1.4"
],
@@ -185,7 +213,11 @@
"appService": {
"comments": "App Service Subnet",
"name": "appService",
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/AppServiceLinuxContainerPrivateEndpointIsFalse.json
"addressPrefix": "10.1.10.0/25"
+========
+ "addressPrefix": "10.4.10.0/25"
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/f459218a-e8bb-49c9-b768-ee6828a144aa_machinelearning_canadacentral.json
},
"optional": []
}
diff --git a/tests/schemas/lz-machinelearning/FullDeployment-With-Location.json b/tests/schemas/lz-machinelearning/FullDeployment-With-Location.json
index 3b6e2524..499ba6c2 100644
--- a/tests/schemas/lz-machinelearning/FullDeployment-With-Location.json
+++ b/tests/schemas/lz-machinelearning/FullDeployment-With-Location.json
@@ -77,6 +77,7 @@
},
"resourceGroups": {
"value": {
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/FullDeployment-With-Location.json
"automation": "azml-automation",
"compute": "azml-compute",
"monitor": "azml-monitor",
@@ -84,6 +85,15 @@
"networkWatcher": "NetworkWatcherRG",
"security": "azml-security",
"storage": "azml-storage"
+========
+ "automation": "azmlcmk-automation",
+ "compute": "azmlcmk-compute",
+ "monitor": "azmlcmk-monitor",
+ "networking": "azmlcmk-networking",
+ "networkWatcher": "NetworkWatcherRG",
+ "security": "azmlcmk-security",
+ "storage": "azmlcmk-storage"
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/ec6c5689-db04-4f1e-b76d-834a51dd0e27_machinelearning_canadacentral.json
}
},
"useCMK": {
@@ -101,7 +111,7 @@
},
"aks": {
"value": {
- "version": "1.21.2",
+ "version": "1.22.6",
"enabled": true,
"networkPlugin": "kubenet",
"networkPolicy": "calico",
@@ -122,10 +132,15 @@
"sqldb": {
"value": {
"enabled": true,
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/FullDeployment-With-Location.json
"aadAuthenticationOnly": true,
"aadLoginName": "DBA Group",
"aadLoginObjectID": "4e4ea47c-ee21-4add-ad2f-a75d0d8014e0",
"aadLoginType": "Group"
+========
+ "sqlAuthenticationUsername": "azadmin",
+ "aadAuthenticationOnly": false
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/ec6c5689-db04-4f1e-b76d-834a51dd0e27_machinelearning_canadacentral.json
}
},
"sqlmi": {
@@ -154,7 +169,11 @@
"value": {
"peerToHubVirtualNetwork": true,
"useRemoteGateway": false,
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/FullDeployment-With-Location.json
"name": "azml-vnet",
+========
+ "name": "azmlcmk-vnet",
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/ec6c5689-db04-4f1e-b76d-834a51dd0e27_machinelearning_canadacentral.json
"dnsServers": [
"10.18.1.4"
],
diff --git a/tests/schemas/lz-machinelearning/FullDeployment-With-OptionalSubnets.json b/tests/schemas/lz-machinelearning/FullDeployment-With-OptionalSubnets.json
index 12b84573..d8727dbf 100644
--- a/tests/schemas/lz-machinelearning/FullDeployment-With-OptionalSubnets.json
+++ b/tests/schemas/lz-machinelearning/FullDeployment-With-OptionalSubnets.json
@@ -74,6 +74,7 @@
},
"resourceGroups": {
"value": {
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/FullDeployment-With-OptionalSubnets.json
"automation": "azml-automation",
"compute": "azml-compute",
"monitor": "azml-monitor",
@@ -81,6 +82,15 @@
"networkWatcher": "NetworkWatcherRG",
"security": "azml-security",
"storage": "azml-storage"
+========
+ "automation": "azmlnocmk-automation",
+ "compute": "azmlnocmk-compute",
+ "monitor": "azmlnocmk-monitor",
+ "networking": "azmlnocmk-networking",
+ "networkWatcher": "NetworkWatcherRG",
+ "security": "azmlnocmk-security",
+ "storage": "azmlnocmk-storage"
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/f08c3057-1713-4a6f-b7e6-0df355b60c30_machinelearning_canadacentral.json
}
},
"useCMK": {
@@ -98,7 +108,7 @@
},
"aks": {
"value": {
- "version": "1.21.2",
+ "version": "1.22.6",
"enabled": true,
"networkPlugin": "kubenet",
"networkPolicy": "calico",
@@ -119,10 +129,15 @@
"sqldb": {
"value": {
"enabled": true,
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/FullDeployment-With-OptionalSubnets.json
"aadAuthenticationOnly": true,
"aadLoginName": "DBA Group",
"aadLoginObjectID": "4e4ea47c-ee21-4add-ad2f-a75d0d8014e0",
"aadLoginType": "Group"
+========
+ "sqlAuthenticationUsername": "azadmin",
+ "aadAuthenticationOnly": false
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/f08c3057-1713-4a6f-b7e6-0df355b60c30_machinelearning_canadacentral.json
}
},
"sqlmi": {
@@ -151,7 +166,11 @@
"value": {
"peerToHubVirtualNetwork": true,
"useRemoteGateway": false,
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/FullDeployment-With-OptionalSubnets.json
"name": "azml-vnet",
+========
+ "name": "azmlnocmk-vnet",
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/f08c3057-1713-4a6f-b7e6-0df355b60c30_machinelearning_canadacentral.json
"dnsServers": [
"10.18.1.4"
],
@@ -187,6 +206,7 @@
"appService": {
"comments": "App Service Subnet",
"name": "appService",
+<<<<<<<< HEAD:tests/schemas/lz-machinelearning/FullDeployment-With-OptionalSubnets.json
"addressPrefix": "10.1.10.0/25"
},
"optional": [
@@ -216,6 +236,11 @@
}
}
]
+========
+ "addressPrefix": "10.3.10.0/25"
+ },
+ "optional": []
+>>>>>>>> c714e65b81d4bf5048bcf56351534a8be26c5c0c:config/subscriptions/CanadaESLZ-main/pubsec/LandingZones/DevTest/f08c3057-1713-4a6f-b7e6-0df355b60c30_machinelearning_canadacentral.json
}
}
}