From 4fcf2bcc947c60be5a1e005176d8a8e58712fbc9 Mon Sep 17 00:00:00 2001 From: Jason Ingram <13699472+ExchMaster@users.noreply.github.com> Date: Sun, 12 Dec 2021 12:30:13 -0600 Subject: [PATCH 1/5] Resolve naming related conflicts, update readme for depVariables --- src/bicep/examples/newWorkload/README.md | 100 +- .../examples/newWorkload/newWorkload.bicep | 18 +- .../examples/newWorkload/newWorkload.json | 1000 ----------------- 3 files changed, 46 insertions(+), 1072 deletions(-) delete mode 100644 src/bicep/examples/newWorkload/newWorkload.json diff --git a/src/bicep/examples/newWorkload/README.md b/src/bicep/examples/newWorkload/README.md index af83fa3b3..4ce917af6 100644 --- a/src/bicep/examples/newWorkload/README.md +++ b/src/bicep/examples/newWorkload/README.md @@ -8,11 +8,18 @@ Read on to understand what this example does, and when you're ready, collect all ### Deploys a Spoke Network +The docs on Azure virtual networking: . This example deploys an additional [spoke network which is peered to the hub network](https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-peering-overview) of your MLZ instance. Additionally a few other items are deployed to enable connectivity in a secure manner: + +* A [route table is created and all external traffic is routed through the MLZ hub network](https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-udr-overview) +* While this example does not deploy an firewall, the target for all external traffic is the MLZ [Azure Firewall](https://docs.microsoft.com/en-us/azure/firewall/overview) hosted in the hub to ensure appropriate traffic filtering. + ## Pre-requisites 1. A Mission LZ deployment (a deployment of mlz.bicep) -1. Define some new values for required parameters described below. -1. The output from the Mission LZ deployment described below. +2. Define some new values for required parameters described below. +3. The outputs from a deployment of mlz.bicep (./src/bicep/examples/deploymentVariables.json). + +See below for information on how to create the appropriate deployment variables file for use with this template. Required Parameters | Description ------------------- | ----------- @@ -28,75 +35,40 @@ hubVirtualNetworkResourceId | The network to peer the new workload network to logAnalyticsWorkspaceResourceId | The resource ID of the Log Analytics Workspace to send diagnostic logs to firewallPrivateIPAddress | The private IP Address to the Firewall to route traffic to from the new workload network -One way to retreive these values is with the Azure CLI: +### Generate MLZ Variable File (deploymentVariables.json) -```bash -# after a Mission LZ deployment -# -# az deployment sub create \ -# --subscription $deploymentSubscription \ -# --name "myMlzDeployment" \ -# --template-file ./mlz.bicep \ +For instructions on generating 'deploymentVariables.json' using both Azure PowerShell and Azure CLI, please see the [README at the root of the examples folder](..\README.md). -az deployment sub show \ - --subscription $deploymentSubscription \ - --name "myMlzDeployment" \ - --query properties.outputs -``` - -...which should return an object containing the values you need: - -```plaintext -{ - "firewallPrivateIPAddress": { - "type": "String", - "value": "10.0.100.4" - }, - "hub": { - "type": "Object", - "value": { - ... - "resourceGroupName": "mlz-dev-hub", - ... - "subscriptionId": "...", - "virtualNetworkName": "hub-vnet", - "virtualNetworkResourceId": "/subscriptions/.../providers/Microsoft.Network/virtualNetworks/hub-vnet" - } - }, - "logAnalyticsWorkspaceResourceId": { - "type": "String", - "value": "/subscriptions/.../providers/Microsoft.OperationalInsights/workspaces/mlz-dev-laws" - }, - ... -} -``` +Place the resulting 'deploymentVariables.json' file within the ./src/bicep/examples folder. ## Deploy the example Once you have the Mission LZ output values, you can pass those in as parameters to this deployment. -And deploy with `az deployment group create` from the Azure CLI: - -```bash -cd examples/newWorkload - -workloadSubscriptionId="12345678-1234..." -location="eastus" -workloadName="myNewWorkload" - -az deployment sub create \ - --subscription $workloadSubscriptionId \ - --location $location \ - --name $workloadName \ - --template-file "./newWorkload.bicep" \ - --parameters \ - workloadName="$workloadName" \ - hubSubscriptionId="$hubSubscriptionId" \ - hubResourceGroupName="$hubResourceGroupName" \ - hubVirtualNetworkName="$hubVirtualNetworkName" \ - hubVirtualNetworkResourceId="$hubVirtualNetworkResourceId" \ - logAnalyticsWorkspaceResourceId="$logAnalyticsWorkspaceResourceId" \ - firewallPrivateIPAddress="$firewallPrivateIPAddress" +And deploy with `az deployment sub create` from the Azure CLI or `New-AzSubscriptionDeployment` from Azure PowerShell. + +### Deploying App Service Plan + +Connect to the appropriate Azure Environment and set appropriate context, see [getting started with Azure PowerShell or Azure CLI](..\README.md) for help if needed. The commands below assume you are deploying in Azure Commercial and show the entire process from deploying MLZ and then adding an Azure App Service Plan post-deployment. + +```PowerShell +cd .\src\bicep +Connect-AzAccount +New-AzSubscriptionDeployment -Name contoso -TemplateFile .\mlz.bicep -resourcePrefix 'contoso' -Location 'eastus' +cd .\examples +(Get-AzSubscriptionDeployment -Name contoso).outputs | ConvertTo-Json | Out-File -FilePath .\deploymentVariables.json +cd .\newWorkload +New-AzSubscriptionDeployment -DeploymentName deployNewWorkload -TemplateFile .\newWorkload.bicep -workloadName newWorkload -Location 'eastus' +``` + +```Azure CLI +az login +cd src/bicep +az deployment sub create -n contoso -f mlz.bicep -l eastus --parameters resourcePrefix=contoso +cd examples +az deployment sub show -n contoso --query properties.outputs > ./deploymentVariables.json +cd newWorkload +az deployment sub create -n deployNewWorkload -f newWorkload.bicep -l eastus --parameters workloadName='newWorkload' ``` Or, completely experimentally, try the Portal: diff --git a/src/bicep/examples/newWorkload/newWorkload.bicep b/src/bicep/examples/newWorkload/newWorkload.bicep index 57e635e05..c0885604e 100644 --- a/src/bicep/examples/newWorkload/newWorkload.bicep +++ b/src/bicep/examples/newWorkload/newWorkload.bicep @@ -1,5 +1,7 @@ targetScope = 'subscription' +param mlzDeploymentVariables object = json(loadTextContent('../deploymentVariables.json')) + @minLength(3) @maxLength(24) param workloadName string @@ -10,12 +12,12 @@ param tags object = { 'resourceIdentifier': resourceIdentifier } -param hubSubscriptionId string -param hubResourceGroupName string -param hubVirtualNetworkName string -param hubVirtualNetworkResourceId string -param logAnalyticsWorkspaceResourceId string -param firewallPrivateIPAddress string +param hubSubscriptionId string = mlzDeploymentVariables.hub.Value.subscriptionId +param hubResourceGroupName string = mlzDeploymentVariables.hub.Value.resourceGroupName +param hubVirtualNetworkName string = mlzDeploymentVariables.hub.Value.virtualNetworkName +param hubVirtualNetworkResourceId string = mlzDeploymentVariables.hub.Value.virtualNetworkResourceId +param logAnalyticsWorkspaceResourceId string = mlzDeploymentVariables.logAnalyticsWorkspaceResourceId.Value +param firewallPrivateIPAddress string = mlzDeploymentVariables.firewallPrivateIPAddress.Value param virtualNetworkName string = '${workloadName}-vnet' param virtualNetworkAddressPrefix string = '10.0.125.0/26' @@ -40,7 +42,7 @@ param subnetName string = '${workloadName}-subnet' param subnetAddressPrefix string = '10.0.125.0/27' param subnetServiceEndpoints array = [] -param logStorageAccountName string = toLower(take('logs${uniqueString(workloadName)}', 24)) +param logStorageAccountName string = toLower(take('logs${uniqueString(subscription().subscriptionId, workloadName)}', 24)) param logStorageSkuName string = 'Standard_GRS' param resourceIdentifier string = '${workloadName}${uniqueString(workloadName)}' @@ -81,7 +83,7 @@ module spokeNetwork '../../modules/spokeNetwork.bicep' = { } module workloadVirtualNetworkPeerings '../../modules/spokeNetworkPeering.bicep' = { - name: '${resourceIdentifier}-${workloadName}VirtualNetworkPeerings' + name: take('${workloadName}--VNetPeerings', 64) params: { spokeName: workloadName spokeResourceGroupName: resourceGroup.name diff --git a/src/bicep/examples/newWorkload/newWorkload.json b/src/bicep/examples/newWorkload/newWorkload.json deleted file mode 100644 index e8c123e2b..000000000 --- a/src/bicep/examples/newWorkload/newWorkload.json +++ /dev/null @@ -1,1000 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "15922961055411912014" - } - }, - "parameters": { - "workloadName": { - "type": "string", - "maxLength": 24, - "minLength": 3 - }, - "resourceGroupName": { - "type": "string", - "defaultValue": "[format('{0}-rg', parameters('workloadName'))]" - }, - "location": { - "type": "string", - "defaultValue": "[deployment().location]" - }, - "tags": { - "type": "object", - "defaultValue": { - "resourceIdentifier": "[parameters('resourceIdentifier')]" - } - }, - "hubSubscriptionId": { - "type": "string" - }, - "hubResourceGroupName": { - "type": "string" - }, - "hubVirtualNetworkName": { - "type": "string" - }, - "hubVirtualNetworkResourceId": { - "type": "string" - }, - "logAnalyticsWorkspaceResourceId": { - "type": "string" - }, - "firewallPrivateIPAddress": { - "type": "string" - }, - "virtualNetworkName": { - "type": "string", - "defaultValue": "[format('{0}-vnet', parameters('workloadName'))]" - }, - "virtualNetworkAddressPrefix": { - "type": "string", - "defaultValue": "10.0.125.0/26" - }, - "virtualNetworkDiagnosticsLogs": { - "type": "array", - "defaultValue": [] - }, - "virtualNetworkDiagnosticsMetrics": { - "type": "array", - "defaultValue": [] - }, - "networkSecurityGroupName": { - "type": "string", - "defaultValue": "[format('{0}-nsg', parameters('workloadName'))]" - }, - "networkSecurityGroupRules": { - "type": "array", - "defaultValue": [] - }, - "networkSecurityGroupDiagnosticsLogs": { - "type": "array", - "defaultValue": [ - { - "category": "NetworkSecurityGroupEvent", - "enabled": true - }, - { - "category": "NetworkSecurityGroupRuleCounter", - "enabled": true - } - ] - }, - "networkSecurityGroupDiagnosticsMetrics": { - "type": "array", - "defaultValue": [] - }, - "subnetName": { - "type": "string", - "defaultValue": "[format('{0}-subnet', parameters('workloadName'))]" - }, - "subnetAddressPrefix": { - "type": "string", - "defaultValue": "10.0.125.0/27" - }, - "subnetServiceEndpoints": { - "type": "array", - "defaultValue": [] - }, - "logStorageAccountName": { - "type": "string", - "defaultValue": "[toLower(take(format('logs{0}', uniqueString(parameters('workloadName'))), 24))]" - }, - "logStorageSkuName": { - "type": "string", - "defaultValue": "Standard_GRS" - }, - "resourceIdentifier": { - "type": "string", - "defaultValue": "[format('{0}{1}', parameters('workloadName'), uniqueString(parameters('workloadName')))]" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2021-04-01", - "name": "[parameters('resourceGroupName')]", - "location": "[parameters('location')]", - "tags": "[parameters('tags')]" - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "spokeNetwork", - "resourceGroup": "[parameters('resourceGroupName')]", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "tags": { - "value": "[parameters('tags')]" - }, - "logStorageAccountName": { - "value": "[parameters('logStorageAccountName')]" - }, - "logStorageSkuName": { - "value": "[parameters('logStorageSkuName')]" - }, - "logAnalyticsWorkspaceResourceId": { - "value": "[parameters('logAnalyticsWorkspaceResourceId')]" - }, - "firewallPrivateIPAddress": { - "value": "[parameters('firewallPrivateIPAddress')]" - }, - "virtualNetworkName": { - "value": "[parameters('virtualNetworkName')]" - }, - "virtualNetworkAddressPrefix": { - "value": "[parameters('virtualNetworkAddressPrefix')]" - }, - "virtualNetworkDiagnosticsLogs": { - "value": "[parameters('virtualNetworkDiagnosticsLogs')]" - }, - "virtualNetworkDiagnosticsMetrics": { - "value": "[parameters('virtualNetworkDiagnosticsMetrics')]" - }, - "networkSecurityGroupName": { - "value": "[parameters('networkSecurityGroupName')]" - }, - "networkSecurityGroupRules": { - "value": "[parameters('networkSecurityGroupRules')]" - }, - "networkSecurityGroupDiagnosticsLogs": { - "value": "[parameters('networkSecurityGroupDiagnosticsLogs')]" - }, - "networkSecurityGroupDiagnosticsMetrics": { - "value": "[parameters('networkSecurityGroupDiagnosticsMetrics')]" - }, - "subnetName": { - "value": "[parameters('subnetName')]" - }, - "subnetAddressPrefix": { - "value": "[parameters('subnetAddressPrefix')]" - }, - "subnetServiceEndpoints": { - "value": "[parameters('subnetServiceEndpoints')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "17180259987553481892" - } - }, - "parameters": { - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "tags": { - "type": "object", - "defaultValue": {} - }, - "logStorageAccountName": { - "type": "string" - }, - "logStorageSkuName": { - "type": "string" - }, - "logAnalyticsWorkspaceResourceId": { - "type": "string" - }, - "firewallPrivateIPAddress": { - "type": "string" - }, - "virtualNetworkName": { - "type": "string" - }, - "virtualNetworkAddressPrefix": { - "type": "string" - }, - "virtualNetworkDiagnosticsLogs": { - "type": "array" - }, - "virtualNetworkDiagnosticsMetrics": { - "type": "array" - }, - "networkSecurityGroupName": { - "type": "string" - }, - "networkSecurityGroupRules": { - "type": "array" - }, - "networkSecurityGroupDiagnosticsLogs": { - "type": "array" - }, - "networkSecurityGroupDiagnosticsMetrics": { - "type": "array" - }, - "subnetName": { - "type": "string" - }, - "subnetAddressPrefix": { - "type": "string" - }, - "subnetServiceEndpoints": { - "type": "array" - }, - "routeTableName": { - "type": "string", - "defaultValue": "[format('{0}-routetable', parameters('subnetName'))]" - }, - "routeTableRouteName": { - "type": "string", - "defaultValue": "default_route" - }, - "routeTableRouteAddressPrefix": { - "type": "string", - "defaultValue": "0.0.0.0/0" - }, - "routeTableRouteNextHopIpAddress": { - "type": "string", - "defaultValue": "[parameters('firewallPrivateIPAddress')]" - }, - "routeTableRouteNextHopType": { - "type": "string", - "defaultValue": "VirtualAppliance" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "logStorage", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "storageAccountName": { - "value": "[parameters('logStorageAccountName')]" - }, - "location": { - "value": "[parameters('location')]" - }, - "skuName": { - "value": "[parameters('logStorageSkuName')]" - }, - "tags": { - "value": "[parameters('tags')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "779275696574787628" - } - }, - "parameters": { - "storageAccountName": { - "type": "string" - }, - "location": { - "type": "string" - }, - "skuName": { - "type": "string" - }, - "tags": { - "type": "object", - "defaultValue": {} - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2019-06-01", - "name": "[parameters('storageAccountName')]", - "location": "[parameters('location')]", - "kind": "Storage", - "sku": { - "name": "[parameters('skuName')]" - }, - "tags": "[parameters('tags')]" - } - ], - "outputs": { - "id": { - "type": "string", - "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]" - } - } - } - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "networkSecurityGroup", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "name": { - "value": "[parameters('networkSecurityGroupName')]" - }, - "location": { - "value": "[parameters('location')]" - }, - "tags": { - "value": "[parameters('tags')]" - }, - "securityRules": { - "value": "[parameters('networkSecurityGroupRules')]" - }, - "logAnalyticsWorkspaceResourceId": { - "value": "[parameters('logAnalyticsWorkspaceResourceId')]" - }, - "logStorageAccountResourceId": { - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'logStorage'), '2020-06-01').outputs.id.value]" - }, - "logs": { - "value": "[parameters('networkSecurityGroupDiagnosticsLogs')]" - }, - "metrics": { - "value": "[parameters('networkSecurityGroupDiagnosticsMetrics')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "4497555273030729522" - } - }, - "parameters": { - "name": { - "type": "string" - }, - "location": { - "type": "string" - }, - "tags": { - "type": "object", - "defaultValue": {} - }, - "securityRules": { - "type": "array" - }, - "logStorageAccountResourceId": { - "type": "string" - }, - "logAnalyticsWorkspaceResourceId": { - "type": "string" - }, - "logs": { - "type": "array" - }, - "metrics": { - "type": "array" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Network/networkSecurityGroups", - "apiVersion": "2021-02-01", - "name": "[parameters('name')]", - "location": "[parameters('location')]", - "tags": "[parameters('tags')]", - "properties": { - "securityRules": "[parameters('securityRules')]" - } - }, - { - "type": "Microsoft.Insights/diagnosticSettings", - "apiVersion": "2017-05-01-preview", - "scope": "[format('Microsoft.Network/networkSecurityGroups/{0}', parameters('name'))]", - "name": "[format('{0}-diagnostics', parameters('name'))]", - "properties": { - "storageAccountId": "[parameters('logStorageAccountResourceId')]", - "workspaceId": "[parameters('logAnalyticsWorkspaceResourceId')]", - "logs": "[parameters('logs')]", - "metrics": "[parameters('metrics')]" - }, - "dependsOn": [ - "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('name'))]" - ] - } - ], - "outputs": { - "id": { - "type": "string", - "value": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('name'))]" - }, - "name": { - "type": "string", - "value": "[parameters('name')]" - } - } - } - }, - "dependsOn": [ - "[resourceId('Microsoft.Resources/deployments', 'logStorage')]" - ] - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "routeTable", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "name": { - "value": "[parameters('routeTableName')]" - }, - "location": { - "value": "[parameters('location')]" - }, - "tags": { - "value": "[parameters('tags')]" - }, - "routeName": { - "value": "[parameters('routeTableRouteName')]" - }, - "routeAddressPrefix": { - "value": "[parameters('routeTableRouteAddressPrefix')]" - }, - "routeNextHopIpAddress": { - "value": "[parameters('routeTableRouteNextHopIpAddress')]" - }, - "routeNextHopType": { - "value": "[parameters('routeTableRouteNextHopType')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "12136081248191573008" - } - }, - "parameters": { - "name": { - "type": "string" - }, - "location": { - "type": "string" - }, - "tags": { - "type": "object", - "defaultValue": {} - }, - "routeName": { - "type": "string" - }, - "routeAddressPrefix": { - "type": "string" - }, - "routeNextHopIpAddress": { - "type": "string" - }, - "routeNextHopType": { - "type": "string" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Network/routeTables", - "apiVersion": "2021-02-01", - "name": "[parameters('name')]", - "location": "[parameters('location')]", - "tags": "[parameters('tags')]", - "properties": { - "routes": [ - { - "name": "[parameters('routeName')]", - "properties": { - "addressPrefix": "[parameters('routeAddressPrefix')]", - "nextHopIpAddress": "[parameters('routeNextHopIpAddress')]", - "nextHopType": "[parameters('routeNextHopType')]" - } - } - ] - } - } - ], - "outputs": { - "id": { - "type": "string", - "value": "[resourceId('Microsoft.Network/routeTables', parameters('name'))]" - }, - "name": { - "type": "string", - "value": "[parameters('name')]" - } - } - } - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "virtualNetwork", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "name": { - "value": "[parameters('virtualNetworkName')]" - }, - "location": { - "value": "[parameters('location')]" - }, - "tags": { - "value": "[parameters('tags')]" - }, - "addressPrefix": { - "value": "[parameters('virtualNetworkAddressPrefix')]" - }, - "subnets": { - "value": [ - { - "name": "[parameters('subnetName')]", - "properties": { - "addressPrefix": "[parameters('subnetAddressPrefix')]", - "networkSecurityGroup": { - "id": "[reference(resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup'), '2020-06-01').outputs.id.value]" - }, - "routeTable": { - "id": "[reference(resourceId('Microsoft.Resources/deployments', 'routeTable'), '2020-06-01').outputs.id.value]" - }, - "serviceEndpoints": "[parameters('subnetServiceEndpoints')]" - } - } - ] - }, - "logAnalyticsWorkspaceResourceId": { - "value": "[parameters('logAnalyticsWorkspaceResourceId')]" - }, - "logStorageAccountResourceId": { - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'logStorage'), '2020-06-01').outputs.id.value]" - }, - "logs": { - "value": "[parameters('virtualNetworkDiagnosticsLogs')]" - }, - "metrics": { - "value": "[parameters('virtualNetworkDiagnosticsMetrics')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "12119421388421560495" - } - }, - "parameters": { - "name": { - "type": "string" - }, - "location": { - "type": "string" - }, - "tags": { - "type": "object", - "defaultValue": {} - }, - "addressPrefix": { - "type": "string" - }, - "logAnalyticsWorkspaceResourceId": { - "type": "string" - }, - "logStorageAccountResourceId": { - "type": "string" - }, - "subnets": { - "type": "array" - }, - "logs": { - "type": "array" - }, - "metrics": { - "type": "array" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Network/virtualNetworks", - "apiVersion": "2021-02-01", - "name": "[parameters('name')]", - "location": "[parameters('location')]", - "tags": "[parameters('tags')]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[parameters('addressPrefix')]" - ] - }, - "subnets": "[parameters('subnets')]" - } - }, - { - "type": "Microsoft.Insights/diagnosticSettings", - "apiVersion": "2017-05-01-preview", - "scope": "[format('Microsoft.Network/virtualNetworks/{0}', parameters('name'))]", - "name": "[format('{0}-diagnostics', parameters('name'))]", - "properties": { - "storageAccountId": "[parameters('logStorageAccountResourceId')]", - "workspaceId": "[parameters('logAnalyticsWorkspaceResourceId')]", - "logs": "[parameters('logs')]", - "metrics": "[parameters('metrics')]" - }, - "dependsOn": [ - "[resourceId('Microsoft.Network/virtualNetworks', parameters('name'))]" - ] - } - ], - "outputs": { - "name": { - "type": "string", - "value": "[parameters('name')]" - }, - "id": { - "type": "string", - "value": "[resourceId('Microsoft.Network/virtualNetworks', parameters('name'))]" - }, - "subnets": { - "type": "array", - "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', parameters('name'))).subnets]" - } - } - } - }, - "dependsOn": [ - "[resourceId('Microsoft.Resources/deployments', 'logStorage')]", - "[resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup')]", - "[resourceId('Microsoft.Resources/deployments', 'routeTable')]" - ] - } - ], - "outputs": { - "virtualNetworkName": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.name.value]" - }, - "virtualNetworkResourceId": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.id.value]" - }, - "subnetName": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.subnets.value[0].name]" - }, - "subnetAddressPrefix": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.subnets.value[0].properties.addressPrefix]" - }, - "subnetResourceId": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.subnets.value[0].id]" - }, - "networkSecurityGroupName": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup'), '2020-06-01').outputs.name.value]" - }, - "networkSecurityGroupResourceId": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup'), '2020-06-01').outputs.id.value]" - } - } - } - }, - "dependsOn": [ - "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('resourceGroupName'))]" - ] - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "[format('{0}-{1}VirtualNetworkPeerings', parameters('resourceIdentifier'), parameters('workloadName'))]", - "location": "[deployment().location]", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "spokeName": { - "value": "[parameters('workloadName')]" - }, - "spokeResourceGroupName": { - "value": "[parameters('resourceGroupName')]" - }, - "spokeVirtualNetworkName": { - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkName.value]" - }, - "hubVirtualNetworkName": { - "value": "[parameters('hubVirtualNetworkName')]" - }, - "hubVirtualNetworkResourceId": { - "value": "[parameters('hubVirtualNetworkResourceId')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "9292126827663520366" - } - }, - "parameters": { - "spokeName": { - "type": "string" - }, - "spokeResourceGroupName": { - "type": "string" - }, - "spokeVirtualNetworkName": { - "type": "string" - }, - "hubVirtualNetworkName": { - "type": "string" - }, - "hubVirtualNetworkResourceId": { - "type": "string" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "[format('{0}-to-hub-vnet-peering', parameters('spokeName'))]", - "resourceGroup": "[parameters('spokeResourceGroupName')]", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "name": { - "value": "[format('{0}/to-{1}', parameters('spokeVirtualNetworkName'), parameters('hubVirtualNetworkName'))]" - }, - "remoteVirtualNetworkResourceId": { - "value": "[parameters('hubVirtualNetworkResourceId')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "17516021996853951284" - } - }, - "parameters": { - "name": { - "type": "string" - }, - "remoteVirtualNetworkResourceId": { - "type": "string" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", - "apiVersion": "2021-02-01", - "name": "[parameters('name')]", - "properties": { - "remoteVirtualNetwork": { - "id": "[parameters('remoteVirtualNetworkResourceId')]" - } - } - } - ] - } - } - } - ] - } - }, - "dependsOn": [ - "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('resourceGroupName'))]", - "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork')]" - ] - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "hubToWorkloadVirtualNetworkPeering", - "subscriptionId": "[parameters('hubSubscriptionId')]", - "location": "[deployment().location]", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "hubResourceGroupName": { - "value": "[parameters('hubResourceGroupName')]" - }, - "hubVirtualNetworkName": { - "value": "[parameters('hubVirtualNetworkName')]" - }, - "spokeVirtualNetworkName": { - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkName.value]" - }, - "spokeVirtualNetworkResourceId": { - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkResourceId.value]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "5427670383068182025" - } - }, - "parameters": { - "hubResourceGroupName": { - "type": "string" - }, - "hubVirtualNetworkName": { - "type": "string" - }, - "spokeVirtualNetworkName": { - "type": "string" - }, - "spokeVirtualNetworkResourceId": { - "type": "string" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "hubToSpokeVirtualNetworkPeering", - "resourceGroup": "[parameters('hubResourceGroupName')]", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "name": { - "value": "[format('{0}/to-{1}', parameters('hubVirtualNetworkName'), parameters('spokeVirtualNetworkName'))]" - }, - "remoteVirtualNetworkResourceId": { - "value": "[parameters('spokeVirtualNetworkResourceId')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "17516021996853951284" - } - }, - "parameters": { - "name": { - "type": "string" - }, - "remoteVirtualNetworkResourceId": { - "type": "string" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", - "apiVersion": "2021-02-01", - "name": "[parameters('name')]", - "properties": { - "remoteVirtualNetwork": { - "id": "[parameters('remoteVirtualNetworkResourceId')]" - } - } - } - ] - } - } - } - ] - } - }, - "dependsOn": [ - "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork')]" - ] - } - ], - "outputs": { - "virtualNetworkName": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkName.value]" - }, - "virtualNetworkResourceId": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkResourceId.value]" - }, - "subnetName": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.subnetName.value]" - }, - "subnetAddressPrefix": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.subnetAddressPrefix.value]" - }, - "subnetResourceId": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.subnetResourceId.value]" - }, - "networkSecurityGroupName": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.networkSecurityGroupName.value]" - }, - "networkSecurityGroupResourceId": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.networkSecurityGroupResourceId.value]" - } - } -} \ No newline at end of file From 83ca1fca9d800f0d90e012d845b55b996a6369b3 Mon Sep 17 00:00:00 2001 From: Jason Ingram <13699472+ExchMaster@users.noreply.github.com> Date: Sun, 12 Dec 2021 12:39:35 -0600 Subject: [PATCH 2/5] Generatged newWorkload.json via bicep build --- .../examples/newWorkload/newWorkload.json | 1010 +++++++++++++++++ 1 file changed, 1010 insertions(+) create mode 100644 src/bicep/examples/newWorkload/newWorkload.json diff --git a/src/bicep/examples/newWorkload/newWorkload.json b/src/bicep/examples/newWorkload/newWorkload.json new file mode 100644 index 000000000..edc8748ad --- /dev/null +++ b/src/bicep/examples/newWorkload/newWorkload.json @@ -0,0 +1,1010 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "12771006393275245261" + } + }, + "parameters": { + "mlzDeploymentVariables": { + "type": "object", + "defaultValue": "[json('{\r\n \"mlzResourcePrefix\": {\r\n \"Type\": \"String\",\r\n \"Value\": \"contoso\"\r\n },\r\n \"firewallPrivateIPAddress\": {\r\n \"Type\": \"String\",\r\n \"Value\": \"10.0.100.4\"\r\n },\r\n \"hub\": {\r\n \"Type\": \"Object\",\r\n \"Value\": {\r\n \"subscriptionId\": \"093847b0-f0dd-428f-a0b0-bd4245b99339\",\r\n \"resourceGroupName\": \"contoso-rg-hub-mlz\",\r\n \"resourceGroupResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-hub-mlz\",\r\n \"virtualNetworkName\": \"contoso-vnet-hub-mlz\",\r\n \"virtualNetworkResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-hub-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-hub-mlz\",\r\n \"subnetName\": \"contoso-vnet-hub-mlz/contoso-snet-hub-mlz\",\r\n \"subnetResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-hub-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-hub-mlz/subnets/contoso-snet-hub-mlz\",\r\n \"subnetAddressPrefix\": \"10.0.100.128/27\",\r\n \"networkSecurityGroupName\": \"contoso-nsg-hub-mlz\",\r\n \"networkSecurityGroupResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-hub-mlz/providers/Microsoft.Network/networkSecurityGroups/contoso-nsg-hub-mlz\"\r\n }\r\n },\r\n \"logAnalyticsWorkspaceName\": {\r\n \"Type\": \"String\",\r\n \"Value\": \"contoso-log-operations-mlz\"\r\n },\r\n \"logAnalyticsWorkspaceResourceId\": {\r\n \"Type\": \"String\",\r\n \"Value\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-operations-mlz/providers/Microsoft.OperationalInsights/workspaces/contoso-log-operations-mlz\"\r\n },\r\n \"spokes\": {\r\n \"Type\": \"Array\",\r\n \"Value\": [\r\n {\r\n \"name\": \"identity\",\r\n \"subscriptionId\": \"093847b0-f0dd-428f-a0b0-bd4245b99339\",\r\n \"resourceGroupName\": \"contoso-rg-identity-mlz\",\r\n \"resourceGroupId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-identity-mlz\",\r\n \"virtualNetworkName\": \"contoso-vnet-identity-mlz\",\r\n \"virtualNetworkResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-identity-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-identity-mlz\",\r\n \"subnetName\": \"contoso-snet-identity-mlz\",\r\n \"subnetResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-identity-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-identity-mlz/subnets/contoso-snet-identity-mlz\",\r\n \"subnetAddressPrefix\": \"10.0.110.0/27\",\r\n \"networkSecurityGroupName\": \"contoso-nsg-identity-mlz\",\r\n \"networkSecurityGroupResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-identity-mlz/providers/Microsoft.Network/networkSecurityGroups/contoso-nsg-identity-mlz\"\r\n },\r\n {\r\n \"name\": \"operations\",\r\n \"subscriptionId\": \"093847b0-f0dd-428f-a0b0-bd4245b99339\",\r\n \"resourceGroupName\": \"contoso-rg-operations-mlz\",\r\n \"resourceGroupId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-operations-mlz\",\r\n \"virtualNetworkName\": \"contoso-vnet-operations-mlz\",\r\n \"virtualNetworkResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-operations-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-operations-mlz\",\r\n \"subnetName\": \"contoso-snet-operations-mlz\",\r\n \"subnetResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-operations-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-operations-mlz/subnets/contoso-snet-operations-mlz\",\r\n \"subnetAddressPrefix\": \"10.0.115.0/27\",\r\n \"networkSecurityGroupName\": \"contoso-nsg-operations-mlz\",\r\n \"networkSecurityGroupResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-operations-mlz/providers/Microsoft.Network/networkSecurityGroups/contoso-nsg-operations-mlz\"\r\n },\r\n {\r\n \"name\": \"sharedServices\",\r\n \"subscriptionId\": \"093847b0-f0dd-428f-a0b0-bd4245b99339\",\r\n \"resourceGroupName\": \"contoso-rg-sharedServices-mlz\",\r\n \"resourceGroupId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-sharedServices-mlz\",\r\n \"virtualNetworkName\": \"contoso-vnet-sharedServices-mlz\",\r\n \"virtualNetworkResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-sharedServices-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-sharedServices-mlz\",\r\n \"subnetName\": \"contoso-snet-sharedServices-mlz\",\r\n \"subnetResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-sharedServices-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-sharedServices-mlz/subnets/contoso-snet-sharedServices-mlz\",\r\n \"subnetAddressPrefix\": \"10.0.120.0/27\",\r\n \"networkSecurityGroupName\": \"contoso-nsg-sharedServices-mlz\",\r\n \"networkSecurityGroupResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-sharedServices-mlz/providers/Microsoft.Network/networkSecurityGroups/contoso-nsg-sharedServices-mlz\"\r\n }\r\n ]\r\n }\r\n}\r\n')]" + }, + "workloadName": { + "type": "string", + "maxLength": 24, + "minLength": 3 + }, + "resourceGroupName": { + "type": "string", + "defaultValue": "[format('{0}-rg', parameters('workloadName'))]" + }, + "location": { + "type": "string", + "defaultValue": "[deployment().location]" + }, + "tags": { + "type": "object", + "defaultValue": { + "resourceIdentifier": "[parameters('resourceIdentifier')]" + } + }, + "hubSubscriptionId": { + "type": "string", + "defaultValue": "[parameters('mlzDeploymentVariables').hub.Value.subscriptionId]" + }, + "hubResourceGroupName": { + "type": "string", + "defaultValue": "[parameters('mlzDeploymentVariables').hub.Value.resourceGroupName]" + }, + "hubVirtualNetworkName": { + "type": "string", + "defaultValue": "[parameters('mlzDeploymentVariables').hub.Value.virtualNetworkName]" + }, + "hubVirtualNetworkResourceId": { + "type": "string", + "defaultValue": "[parameters('mlzDeploymentVariables').hub.Value.virtualNetworkResourceId]" + }, + "logAnalyticsWorkspaceResourceId": { + "type": "string", + "defaultValue": "[parameters('mlzDeploymentVariables').logAnalyticsWorkspaceResourceId.Value]" + }, + "firewallPrivateIPAddress": { + "type": "string", + "defaultValue": "[parameters('mlzDeploymentVariables').firewallPrivateIPAddress.Value]" + }, + "virtualNetworkName": { + "type": "string", + "defaultValue": "[format('{0}-vnet', parameters('workloadName'))]" + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "defaultValue": "10.0.125.0/26" + }, + "virtualNetworkDiagnosticsLogs": { + "type": "array", + "defaultValue": [] + }, + "virtualNetworkDiagnosticsMetrics": { + "type": "array", + "defaultValue": [] + }, + "networkSecurityGroupName": { + "type": "string", + "defaultValue": "[format('{0}-nsg', parameters('workloadName'))]" + }, + "networkSecurityGroupRules": { + "type": "array", + "defaultValue": [] + }, + "networkSecurityGroupDiagnosticsLogs": { + "type": "array", + "defaultValue": [ + { + "category": "NetworkSecurityGroupEvent", + "enabled": true + }, + { + "category": "NetworkSecurityGroupRuleCounter", + "enabled": true + } + ] + }, + "networkSecurityGroupDiagnosticsMetrics": { + "type": "array", + "defaultValue": [] + }, + "subnetName": { + "type": "string", + "defaultValue": "[format('{0}-subnet', parameters('workloadName'))]" + }, + "subnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.125.0/27" + }, + "subnetServiceEndpoints": { + "type": "array", + "defaultValue": [] + }, + "logStorageAccountName": { + "type": "string", + "defaultValue": "[toLower(take(format('logs{0}', uniqueString(subscription().subscriptionId, parameters('workloadName'))), 24))]" + }, + "logStorageSkuName": { + "type": "string", + "defaultValue": "Standard_GRS" + }, + "resourceIdentifier": { + "type": "string", + "defaultValue": "[format('{0}{1}', parameters('workloadName'), uniqueString(parameters('workloadName')))]" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Resources/resourceGroups", + "apiVersion": "2021-04-01", + "name": "[parameters('resourceGroupName')]", + "location": "[parameters('location')]", + "tags": "[parameters('tags')]" + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "spokeNetwork", + "resourceGroup": "[parameters('resourceGroupName')]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "tags": { + "value": "[parameters('tags')]" + }, + "logStorageAccountName": { + "value": "[parameters('logStorageAccountName')]" + }, + "logStorageSkuName": { + "value": "[parameters('logStorageSkuName')]" + }, + "logAnalyticsWorkspaceResourceId": { + "value": "[parameters('logAnalyticsWorkspaceResourceId')]" + }, + "firewallPrivateIPAddress": { + "value": "[parameters('firewallPrivateIPAddress')]" + }, + "virtualNetworkName": { + "value": "[parameters('virtualNetworkName')]" + }, + "virtualNetworkAddressPrefix": { + "value": "[parameters('virtualNetworkAddressPrefix')]" + }, + "virtualNetworkDiagnosticsLogs": { + "value": "[parameters('virtualNetworkDiagnosticsLogs')]" + }, + "virtualNetworkDiagnosticsMetrics": { + "value": "[parameters('virtualNetworkDiagnosticsMetrics')]" + }, + "networkSecurityGroupName": { + "value": "[parameters('networkSecurityGroupName')]" + }, + "networkSecurityGroupRules": { + "value": "[parameters('networkSecurityGroupRules')]" + }, + "networkSecurityGroupDiagnosticsLogs": { + "value": "[parameters('networkSecurityGroupDiagnosticsLogs')]" + }, + "networkSecurityGroupDiagnosticsMetrics": { + "value": "[parameters('networkSecurityGroupDiagnosticsMetrics')]" + }, + "subnetName": { + "value": "[parameters('subnetName')]" + }, + "subnetAddressPrefix": { + "value": "[parameters('subnetAddressPrefix')]" + }, + "subnetServiceEndpoints": { + "value": "[parameters('subnetServiceEndpoints')]" + } + }, + "template": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "17180259987553481892" + } + }, + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]" + }, + "tags": { + "type": "object", + "defaultValue": {} + }, + "logStorageAccountName": { + "type": "string" + }, + "logStorageSkuName": { + "type": "string" + }, + "logAnalyticsWorkspaceResourceId": { + "type": "string" + }, + "firewallPrivateIPAddress": { + "type": "string" + }, + "virtualNetworkName": { + "type": "string" + }, + "virtualNetworkAddressPrefix": { + "type": "string" + }, + "virtualNetworkDiagnosticsLogs": { + "type": "array" + }, + "virtualNetworkDiagnosticsMetrics": { + "type": "array" + }, + "networkSecurityGroupName": { + "type": "string" + }, + "networkSecurityGroupRules": { + "type": "array" + }, + "networkSecurityGroupDiagnosticsLogs": { + "type": "array" + }, + "networkSecurityGroupDiagnosticsMetrics": { + "type": "array" + }, + "subnetName": { + "type": "string" + }, + "subnetAddressPrefix": { + "type": "string" + }, + "subnetServiceEndpoints": { + "type": "array" + }, + "routeTableName": { + "type": "string", + "defaultValue": "[format('{0}-routetable', parameters('subnetName'))]" + }, + "routeTableRouteName": { + "type": "string", + "defaultValue": "default_route" + }, + "routeTableRouteAddressPrefix": { + "type": "string", + "defaultValue": "0.0.0.0/0" + }, + "routeTableRouteNextHopIpAddress": { + "type": "string", + "defaultValue": "[parameters('firewallPrivateIPAddress')]" + }, + "routeTableRouteNextHopType": { + "type": "string", + "defaultValue": "VirtualAppliance" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "logStorage", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "storageAccountName": { + "value": "[parameters('logStorageAccountName')]" + }, + "location": { + "value": "[parameters('location')]" + }, + "skuName": { + "value": "[parameters('logStorageSkuName')]" + }, + "tags": { + "value": "[parameters('tags')]" + } + }, + "template": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "779275696574787628" + } + }, + "parameters": { + "storageAccountName": { + "type": "string" + }, + "location": { + "type": "string" + }, + "skuName": { + "type": "string" + }, + "tags": { + "type": "object", + "defaultValue": {} + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-06-01", + "name": "[parameters('storageAccountName')]", + "location": "[parameters('location')]", + "kind": "Storage", + "sku": { + "name": "[parameters('skuName')]" + }, + "tags": "[parameters('tags')]" + } + ], + "outputs": { + "id": { + "type": "string", + "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]" + } + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "networkSecurityGroup", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "name": { + "value": "[parameters('networkSecurityGroupName')]" + }, + "location": { + "value": "[parameters('location')]" + }, + "tags": { + "value": "[parameters('tags')]" + }, + "securityRules": { + "value": "[parameters('networkSecurityGroupRules')]" + }, + "logAnalyticsWorkspaceResourceId": { + "value": "[parameters('logAnalyticsWorkspaceResourceId')]" + }, + "logStorageAccountResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'logStorage'), '2020-06-01').outputs.id.value]" + }, + "logs": { + "value": "[parameters('networkSecurityGroupDiagnosticsLogs')]" + }, + "metrics": { + "value": "[parameters('networkSecurityGroupDiagnosticsMetrics')]" + } + }, + "template": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "4497555273030729522" + } + }, + "parameters": { + "name": { + "type": "string" + }, + "location": { + "type": "string" + }, + "tags": { + "type": "object", + "defaultValue": {} + }, + "securityRules": { + "type": "array" + }, + "logStorageAccountResourceId": { + "type": "string" + }, + "logAnalyticsWorkspaceResourceId": { + "type": "string" + }, + "logs": { + "type": "array" + }, + "metrics": { + "type": "array" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "[parameters('name')]", + "location": "[parameters('location')]", + "tags": "[parameters('tags')]", + "properties": { + "securityRules": "[parameters('securityRules')]" + } + }, + { + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "scope": "[format('Microsoft.Network/networkSecurityGroups/{0}', parameters('name'))]", + "name": "[format('{0}-diagnostics', parameters('name'))]", + "properties": { + "storageAccountId": "[parameters('logStorageAccountResourceId')]", + "workspaceId": "[parameters('logAnalyticsWorkspaceResourceId')]", + "logs": "[parameters('logs')]", + "metrics": "[parameters('metrics')]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('name'))]" + ] + } + ], + "outputs": { + "id": { + "type": "string", + "value": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('name'))]" + }, + "name": { + "type": "string", + "value": "[parameters('name')]" + } + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', 'logStorage')]" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "routeTable", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "name": { + "value": "[parameters('routeTableName')]" + }, + "location": { + "value": "[parameters('location')]" + }, + "tags": { + "value": "[parameters('tags')]" + }, + "routeName": { + "value": "[parameters('routeTableRouteName')]" + }, + "routeAddressPrefix": { + "value": "[parameters('routeTableRouteAddressPrefix')]" + }, + "routeNextHopIpAddress": { + "value": "[parameters('routeTableRouteNextHopIpAddress')]" + }, + "routeNextHopType": { + "value": "[parameters('routeTableRouteNextHopType')]" + } + }, + "template": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "12136081248191573008" + } + }, + "parameters": { + "name": { + "type": "string" + }, + "location": { + "type": "string" + }, + "tags": { + "type": "object", + "defaultValue": {} + }, + "routeName": { + "type": "string" + }, + "routeAddressPrefix": { + "type": "string" + }, + "routeNextHopIpAddress": { + "type": "string" + }, + "routeNextHopType": { + "type": "string" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/routeTables", + "apiVersion": "2021-02-01", + "name": "[parameters('name')]", + "location": "[parameters('location')]", + "tags": "[parameters('tags')]", + "properties": { + "routes": [ + { + "name": "[parameters('routeName')]", + "properties": { + "addressPrefix": "[parameters('routeAddressPrefix')]", + "nextHopIpAddress": "[parameters('routeNextHopIpAddress')]", + "nextHopType": "[parameters('routeNextHopType')]" + } + } + ] + } + } + ], + "outputs": { + "id": { + "type": "string", + "value": "[resourceId('Microsoft.Network/routeTables', parameters('name'))]" + }, + "name": { + "type": "string", + "value": "[parameters('name')]" + } + } + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "virtualNetwork", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "name": { + "value": "[parameters('virtualNetworkName')]" + }, + "location": { + "value": "[parameters('location')]" + }, + "tags": { + "value": "[parameters('tags')]" + }, + "addressPrefix": { + "value": "[parameters('virtualNetworkAddressPrefix')]" + }, + "subnets": { + "value": [ + { + "name": "[parameters('subnetName')]", + "properties": { + "addressPrefix": "[parameters('subnetAddressPrefix')]", + "networkSecurityGroup": { + "id": "[reference(resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup'), '2020-06-01').outputs.id.value]" + }, + "routeTable": { + "id": "[reference(resourceId('Microsoft.Resources/deployments', 'routeTable'), '2020-06-01').outputs.id.value]" + }, + "serviceEndpoints": "[parameters('subnetServiceEndpoints')]" + } + } + ] + }, + "logAnalyticsWorkspaceResourceId": { + "value": "[parameters('logAnalyticsWorkspaceResourceId')]" + }, + "logStorageAccountResourceId": { + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'logStorage'), '2020-06-01').outputs.id.value]" + }, + "logs": { + "value": "[parameters('virtualNetworkDiagnosticsLogs')]" + }, + "metrics": { + "value": "[parameters('virtualNetworkDiagnosticsMetrics')]" + } + }, + "template": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "12119421388421560495" + } + }, + "parameters": { + "name": { + "type": "string" + }, + "location": { + "type": "string" + }, + "tags": { + "type": "object", + "defaultValue": {} + }, + "addressPrefix": { + "type": "string" + }, + "logAnalyticsWorkspaceResourceId": { + "type": "string" + }, + "logStorageAccountResourceId": { + "type": "string" + }, + "subnets": { + "type": "array" + }, + "logs": { + "type": "array" + }, + "metrics": { + "type": "array" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-02-01", + "name": "[parameters('name')]", + "location": "[parameters('location')]", + "tags": "[parameters('tags')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[parameters('addressPrefix')]" + ] + }, + "subnets": "[parameters('subnets')]" + } + }, + { + "type": "Microsoft.Insights/diagnosticSettings", + "apiVersion": "2017-05-01-preview", + "scope": "[format('Microsoft.Network/virtualNetworks/{0}', parameters('name'))]", + "name": "[format('{0}-diagnostics', parameters('name'))]", + "properties": { + "storageAccountId": "[parameters('logStorageAccountResourceId')]", + "workspaceId": "[parameters('logAnalyticsWorkspaceResourceId')]", + "logs": "[parameters('logs')]", + "metrics": "[parameters('metrics')]" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/virtualNetworks', parameters('name'))]" + ] + } + ], + "outputs": { + "name": { + "type": "string", + "value": "[parameters('name')]" + }, + "id": { + "type": "string", + "value": "[resourceId('Microsoft.Network/virtualNetworks', parameters('name'))]" + }, + "subnets": { + "type": "array", + "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', parameters('name'))).subnets]" + } + } + } + }, + "dependsOn": [ + "[resourceId('Microsoft.Resources/deployments', 'logStorage')]", + "[resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup')]", + "[resourceId('Microsoft.Resources/deployments', 'routeTable')]" + ] + } + ], + "outputs": { + "virtualNetworkName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.name.value]" + }, + "virtualNetworkResourceId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.id.value]" + }, + "subnetName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.subnets.value[0].name]" + }, + "subnetAddressPrefix": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.subnets.value[0].properties.addressPrefix]" + }, + "subnetResourceId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.subnets.value[0].id]" + }, + "networkSecurityGroupName": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup'), '2020-06-01').outputs.name.value]" + }, + "networkSecurityGroupResourceId": { + "type": "string", + "value": "[reference(resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup'), '2020-06-01').outputs.id.value]" + } + } + } + }, + "dependsOn": [ + "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('resourceGroupName'))]" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "[take(format('{0}--VNetPeerings', parameters('workloadName')), 64)]", + "location": "[deployment().location]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "spokeName": { + "value": "[parameters('workloadName')]" + }, + "spokeResourceGroupName": { + "value": "[parameters('resourceGroupName')]" + }, + "spokeVirtualNetworkName": { + "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkName.value]" + }, + "hubVirtualNetworkName": { + "value": "[parameters('hubVirtualNetworkName')]" + }, + "hubVirtualNetworkResourceId": { + "value": "[parameters('hubVirtualNetworkResourceId')]" + } + }, + "template": { + "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "9292126827663520366" + } + }, + "parameters": { + "spokeName": { + "type": "string" + }, + "spokeResourceGroupName": { + "type": "string" + }, + "spokeVirtualNetworkName": { + "type": "string" + }, + "hubVirtualNetworkName": { + "type": "string" + }, + "hubVirtualNetworkResourceId": { + "type": "string" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "[format('{0}-to-hub-vnet-peering', parameters('spokeName'))]", + "resourceGroup": "[parameters('spokeResourceGroupName')]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "name": { + "value": "[format('{0}/to-{1}', parameters('spokeVirtualNetworkName'), parameters('hubVirtualNetworkName'))]" + }, + "remoteVirtualNetworkResourceId": { + "value": "[parameters('hubVirtualNetworkResourceId')]" + } + }, + "template": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "17516021996853951284" + } + }, + "parameters": { + "name": { + "type": "string" + }, + "remoteVirtualNetworkResourceId": { + "type": "string" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "apiVersion": "2021-02-01", + "name": "[parameters('name')]", + "properties": { + "remoteVirtualNetwork": { + "id": "[parameters('remoteVirtualNetworkResourceId')]" + } + } + } + ] + } + } + } + ] + } + }, + "dependsOn": [ + "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('resourceGroupName'))]", + "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork')]" + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "hubToWorkloadVirtualNetworkPeering", + "subscriptionId": "[parameters('hubSubscriptionId')]", + "location": "[deployment().location]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "hubResourceGroupName": { + "value": "[parameters('hubResourceGroupName')]" + }, + "hubVirtualNetworkName": { + "value": "[parameters('hubVirtualNetworkName')]" + }, + "spokeVirtualNetworkName": { + "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkName.value]" + }, + "spokeVirtualNetworkResourceId": { + "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkResourceId.value]" + } + }, + "template": { + "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "5427670383068182025" + } + }, + "parameters": { + "hubResourceGroupName": { + "type": "string" + }, + "hubVirtualNetworkName": { + "type": "string" + }, + "spokeVirtualNetworkName": { + "type": "string" + }, + "spokeVirtualNetworkResourceId": { + "type": "string" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2020-06-01", + "name": "hubToSpokeVirtualNetworkPeering", + "resourceGroup": "[parameters('hubResourceGroupName')]", + "properties": { + "expressionEvaluationOptions": { + "scope": "inner" + }, + "mode": "Incremental", + "parameters": { + "name": { + "value": "[format('{0}/to-{1}', parameters('hubVirtualNetworkName'), parameters('spokeVirtualNetworkName'))]" + }, + "remoteVirtualNetworkResourceId": { + "value": "[parameters('spokeVirtualNetworkResourceId')]" + } + }, + "template": { + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.4.1008.15138", + "templateHash": "17516021996853951284" + } + }, + "parameters": { + "name": { + "type": "string" + }, + "remoteVirtualNetworkResourceId": { + "type": "string" + } + }, + "functions": [], + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", + "apiVersion": "2021-02-01", + "name": "[parameters('name')]", + "properties": { + "remoteVirtualNetwork": { + "id": "[parameters('remoteVirtualNetworkResourceId')]" + } + } + } + ] + } + } + } + ] + } + }, + "dependsOn": [ + "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork')]" + ] + } + ], + "outputs": { + "virtualNetworkName": { + "type": "string", + "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkName.value]" + }, + "virtualNetworkResourceId": { + "type": "string", + "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkResourceId.value]" + }, + "subnetName": { + "type": "string", + "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.subnetName.value]" + }, + "subnetAddressPrefix": { + "type": "string", + "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.subnetAddressPrefix.value]" + }, + "subnetResourceId": { + "type": "string", + "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.subnetResourceId.value]" + }, + "networkSecurityGroupName": { + "type": "string", + "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.networkSecurityGroupName.value]" + }, + "networkSecurityGroupResourceId": { + "type": "string", + "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.networkSecurityGroupResourceId.value]" + } + } +} \ No newline at end of file From ad69b36186cec89d2362f85591b6a8d01b2bc37c Mon Sep 17 00:00:00 2001 From: Jason Ingram <13699472+ExchMaster@users.noreply.github.com> Date: Tue, 14 Dec 2021 10:29:32 -0500 Subject: [PATCH 3/5] Removed newWorkLoad.json --- .../examples/newWorkload/newWorkload.json | 1010 ----------------- 1 file changed, 1010 deletions(-) delete mode 100644 src/bicep/examples/newWorkload/newWorkload.json diff --git a/src/bicep/examples/newWorkload/newWorkload.json b/src/bicep/examples/newWorkload/newWorkload.json deleted file mode 100644 index edc8748ad..000000000 --- a/src/bicep/examples/newWorkload/newWorkload.json +++ /dev/null @@ -1,1010 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "12771006393275245261" - } - }, - "parameters": { - "mlzDeploymentVariables": { - "type": "object", - "defaultValue": "[json('{\r\n \"mlzResourcePrefix\": {\r\n \"Type\": \"String\",\r\n \"Value\": \"contoso\"\r\n },\r\n \"firewallPrivateIPAddress\": {\r\n \"Type\": \"String\",\r\n \"Value\": \"10.0.100.4\"\r\n },\r\n \"hub\": {\r\n \"Type\": \"Object\",\r\n \"Value\": {\r\n \"subscriptionId\": \"093847b0-f0dd-428f-a0b0-bd4245b99339\",\r\n \"resourceGroupName\": \"contoso-rg-hub-mlz\",\r\n \"resourceGroupResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-hub-mlz\",\r\n \"virtualNetworkName\": \"contoso-vnet-hub-mlz\",\r\n \"virtualNetworkResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-hub-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-hub-mlz\",\r\n \"subnetName\": \"contoso-vnet-hub-mlz/contoso-snet-hub-mlz\",\r\n \"subnetResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-hub-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-hub-mlz/subnets/contoso-snet-hub-mlz\",\r\n \"subnetAddressPrefix\": \"10.0.100.128/27\",\r\n \"networkSecurityGroupName\": \"contoso-nsg-hub-mlz\",\r\n \"networkSecurityGroupResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-hub-mlz/providers/Microsoft.Network/networkSecurityGroups/contoso-nsg-hub-mlz\"\r\n }\r\n },\r\n \"logAnalyticsWorkspaceName\": {\r\n \"Type\": \"String\",\r\n \"Value\": \"contoso-log-operations-mlz\"\r\n },\r\n \"logAnalyticsWorkspaceResourceId\": {\r\n \"Type\": \"String\",\r\n \"Value\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-operations-mlz/providers/Microsoft.OperationalInsights/workspaces/contoso-log-operations-mlz\"\r\n },\r\n \"spokes\": {\r\n \"Type\": \"Array\",\r\n \"Value\": [\r\n {\r\n \"name\": \"identity\",\r\n \"subscriptionId\": \"093847b0-f0dd-428f-a0b0-bd4245b99339\",\r\n \"resourceGroupName\": \"contoso-rg-identity-mlz\",\r\n \"resourceGroupId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-identity-mlz\",\r\n \"virtualNetworkName\": \"contoso-vnet-identity-mlz\",\r\n \"virtualNetworkResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-identity-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-identity-mlz\",\r\n \"subnetName\": \"contoso-snet-identity-mlz\",\r\n \"subnetResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-identity-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-identity-mlz/subnets/contoso-snet-identity-mlz\",\r\n \"subnetAddressPrefix\": \"10.0.110.0/27\",\r\n \"networkSecurityGroupName\": \"contoso-nsg-identity-mlz\",\r\n \"networkSecurityGroupResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-identity-mlz/providers/Microsoft.Network/networkSecurityGroups/contoso-nsg-identity-mlz\"\r\n },\r\n {\r\n \"name\": \"operations\",\r\n \"subscriptionId\": \"093847b0-f0dd-428f-a0b0-bd4245b99339\",\r\n \"resourceGroupName\": \"contoso-rg-operations-mlz\",\r\n \"resourceGroupId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-operations-mlz\",\r\n \"virtualNetworkName\": \"contoso-vnet-operations-mlz\",\r\n \"virtualNetworkResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-operations-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-operations-mlz\",\r\n \"subnetName\": \"contoso-snet-operations-mlz\",\r\n \"subnetResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-operations-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-operations-mlz/subnets/contoso-snet-operations-mlz\",\r\n \"subnetAddressPrefix\": \"10.0.115.0/27\",\r\n \"networkSecurityGroupName\": \"contoso-nsg-operations-mlz\",\r\n \"networkSecurityGroupResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-operations-mlz/providers/Microsoft.Network/networkSecurityGroups/contoso-nsg-operations-mlz\"\r\n },\r\n {\r\n \"name\": \"sharedServices\",\r\n \"subscriptionId\": \"093847b0-f0dd-428f-a0b0-bd4245b99339\",\r\n \"resourceGroupName\": \"contoso-rg-sharedServices-mlz\",\r\n \"resourceGroupId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-sharedServices-mlz\",\r\n \"virtualNetworkName\": \"contoso-vnet-sharedServices-mlz\",\r\n \"virtualNetworkResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-sharedServices-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-sharedServices-mlz\",\r\n \"subnetName\": \"contoso-snet-sharedServices-mlz\",\r\n \"subnetResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-sharedServices-mlz/providers/Microsoft.Network/virtualNetworks/contoso-vnet-sharedServices-mlz/subnets/contoso-snet-sharedServices-mlz\",\r\n \"subnetAddressPrefix\": \"10.0.120.0/27\",\r\n \"networkSecurityGroupName\": \"contoso-nsg-sharedServices-mlz\",\r\n \"networkSecurityGroupResourceId\": \"/subscriptions/093847b0-f0dd-428f-a0b0-bd4245b99339/resourceGroups/contoso-rg-sharedServices-mlz/providers/Microsoft.Network/networkSecurityGroups/contoso-nsg-sharedServices-mlz\"\r\n }\r\n ]\r\n }\r\n}\r\n')]" - }, - "workloadName": { - "type": "string", - "maxLength": 24, - "minLength": 3 - }, - "resourceGroupName": { - "type": "string", - "defaultValue": "[format('{0}-rg', parameters('workloadName'))]" - }, - "location": { - "type": "string", - "defaultValue": "[deployment().location]" - }, - "tags": { - "type": "object", - "defaultValue": { - "resourceIdentifier": "[parameters('resourceIdentifier')]" - } - }, - "hubSubscriptionId": { - "type": "string", - "defaultValue": "[parameters('mlzDeploymentVariables').hub.Value.subscriptionId]" - }, - "hubResourceGroupName": { - "type": "string", - "defaultValue": "[parameters('mlzDeploymentVariables').hub.Value.resourceGroupName]" - }, - "hubVirtualNetworkName": { - "type": "string", - "defaultValue": "[parameters('mlzDeploymentVariables').hub.Value.virtualNetworkName]" - }, - "hubVirtualNetworkResourceId": { - "type": "string", - "defaultValue": "[parameters('mlzDeploymentVariables').hub.Value.virtualNetworkResourceId]" - }, - "logAnalyticsWorkspaceResourceId": { - "type": "string", - "defaultValue": "[parameters('mlzDeploymentVariables').logAnalyticsWorkspaceResourceId.Value]" - }, - "firewallPrivateIPAddress": { - "type": "string", - "defaultValue": "[parameters('mlzDeploymentVariables').firewallPrivateIPAddress.Value]" - }, - "virtualNetworkName": { - "type": "string", - "defaultValue": "[format('{0}-vnet', parameters('workloadName'))]" - }, - "virtualNetworkAddressPrefix": { - "type": "string", - "defaultValue": "10.0.125.0/26" - }, - "virtualNetworkDiagnosticsLogs": { - "type": "array", - "defaultValue": [] - }, - "virtualNetworkDiagnosticsMetrics": { - "type": "array", - "defaultValue": [] - }, - "networkSecurityGroupName": { - "type": "string", - "defaultValue": "[format('{0}-nsg', parameters('workloadName'))]" - }, - "networkSecurityGroupRules": { - "type": "array", - "defaultValue": [] - }, - "networkSecurityGroupDiagnosticsLogs": { - "type": "array", - "defaultValue": [ - { - "category": "NetworkSecurityGroupEvent", - "enabled": true - }, - { - "category": "NetworkSecurityGroupRuleCounter", - "enabled": true - } - ] - }, - "networkSecurityGroupDiagnosticsMetrics": { - "type": "array", - "defaultValue": [] - }, - "subnetName": { - "type": "string", - "defaultValue": "[format('{0}-subnet', parameters('workloadName'))]" - }, - "subnetAddressPrefix": { - "type": "string", - "defaultValue": "10.0.125.0/27" - }, - "subnetServiceEndpoints": { - "type": "array", - "defaultValue": [] - }, - "logStorageAccountName": { - "type": "string", - "defaultValue": "[toLower(take(format('logs{0}', uniqueString(subscription().subscriptionId, parameters('workloadName'))), 24))]" - }, - "logStorageSkuName": { - "type": "string", - "defaultValue": "Standard_GRS" - }, - "resourceIdentifier": { - "type": "string", - "defaultValue": "[format('{0}{1}', parameters('workloadName'), uniqueString(parameters('workloadName')))]" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2021-04-01", - "name": "[parameters('resourceGroupName')]", - "location": "[parameters('location')]", - "tags": "[parameters('tags')]" - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "spokeNetwork", - "resourceGroup": "[parameters('resourceGroupName')]", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "tags": { - "value": "[parameters('tags')]" - }, - "logStorageAccountName": { - "value": "[parameters('logStorageAccountName')]" - }, - "logStorageSkuName": { - "value": "[parameters('logStorageSkuName')]" - }, - "logAnalyticsWorkspaceResourceId": { - "value": "[parameters('logAnalyticsWorkspaceResourceId')]" - }, - "firewallPrivateIPAddress": { - "value": "[parameters('firewallPrivateIPAddress')]" - }, - "virtualNetworkName": { - "value": "[parameters('virtualNetworkName')]" - }, - "virtualNetworkAddressPrefix": { - "value": "[parameters('virtualNetworkAddressPrefix')]" - }, - "virtualNetworkDiagnosticsLogs": { - "value": "[parameters('virtualNetworkDiagnosticsLogs')]" - }, - "virtualNetworkDiagnosticsMetrics": { - "value": "[parameters('virtualNetworkDiagnosticsMetrics')]" - }, - "networkSecurityGroupName": { - "value": "[parameters('networkSecurityGroupName')]" - }, - "networkSecurityGroupRules": { - "value": "[parameters('networkSecurityGroupRules')]" - }, - "networkSecurityGroupDiagnosticsLogs": { - "value": "[parameters('networkSecurityGroupDiagnosticsLogs')]" - }, - "networkSecurityGroupDiagnosticsMetrics": { - "value": "[parameters('networkSecurityGroupDiagnosticsMetrics')]" - }, - "subnetName": { - "value": "[parameters('subnetName')]" - }, - "subnetAddressPrefix": { - "value": "[parameters('subnetAddressPrefix')]" - }, - "subnetServiceEndpoints": { - "value": "[parameters('subnetServiceEndpoints')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "17180259987553481892" - } - }, - "parameters": { - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "tags": { - "type": "object", - "defaultValue": {} - }, - "logStorageAccountName": { - "type": "string" - }, - "logStorageSkuName": { - "type": "string" - }, - "logAnalyticsWorkspaceResourceId": { - "type": "string" - }, - "firewallPrivateIPAddress": { - "type": "string" - }, - "virtualNetworkName": { - "type": "string" - }, - "virtualNetworkAddressPrefix": { - "type": "string" - }, - "virtualNetworkDiagnosticsLogs": { - "type": "array" - }, - "virtualNetworkDiagnosticsMetrics": { - "type": "array" - }, - "networkSecurityGroupName": { - "type": "string" - }, - "networkSecurityGroupRules": { - "type": "array" - }, - "networkSecurityGroupDiagnosticsLogs": { - "type": "array" - }, - "networkSecurityGroupDiagnosticsMetrics": { - "type": "array" - }, - "subnetName": { - "type": "string" - }, - "subnetAddressPrefix": { - "type": "string" - }, - "subnetServiceEndpoints": { - "type": "array" - }, - "routeTableName": { - "type": "string", - "defaultValue": "[format('{0}-routetable', parameters('subnetName'))]" - }, - "routeTableRouteName": { - "type": "string", - "defaultValue": "default_route" - }, - "routeTableRouteAddressPrefix": { - "type": "string", - "defaultValue": "0.0.0.0/0" - }, - "routeTableRouteNextHopIpAddress": { - "type": "string", - "defaultValue": "[parameters('firewallPrivateIPAddress')]" - }, - "routeTableRouteNextHopType": { - "type": "string", - "defaultValue": "VirtualAppliance" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "logStorage", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "storageAccountName": { - "value": "[parameters('logStorageAccountName')]" - }, - "location": { - "value": "[parameters('location')]" - }, - "skuName": { - "value": "[parameters('logStorageSkuName')]" - }, - "tags": { - "value": "[parameters('tags')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "779275696574787628" - } - }, - "parameters": { - "storageAccountName": { - "type": "string" - }, - "location": { - "type": "string" - }, - "skuName": { - "type": "string" - }, - "tags": { - "type": "object", - "defaultValue": {} - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2019-06-01", - "name": "[parameters('storageAccountName')]", - "location": "[parameters('location')]", - "kind": "Storage", - "sku": { - "name": "[parameters('skuName')]" - }, - "tags": "[parameters('tags')]" - } - ], - "outputs": { - "id": { - "type": "string", - "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]" - } - } - } - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "networkSecurityGroup", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "name": { - "value": "[parameters('networkSecurityGroupName')]" - }, - "location": { - "value": "[parameters('location')]" - }, - "tags": { - "value": "[parameters('tags')]" - }, - "securityRules": { - "value": "[parameters('networkSecurityGroupRules')]" - }, - "logAnalyticsWorkspaceResourceId": { - "value": "[parameters('logAnalyticsWorkspaceResourceId')]" - }, - "logStorageAccountResourceId": { - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'logStorage'), '2020-06-01').outputs.id.value]" - }, - "logs": { - "value": "[parameters('networkSecurityGroupDiagnosticsLogs')]" - }, - "metrics": { - "value": "[parameters('networkSecurityGroupDiagnosticsMetrics')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "4497555273030729522" - } - }, - "parameters": { - "name": { - "type": "string" - }, - "location": { - "type": "string" - }, - "tags": { - "type": "object", - "defaultValue": {} - }, - "securityRules": { - "type": "array" - }, - "logStorageAccountResourceId": { - "type": "string" - }, - "logAnalyticsWorkspaceResourceId": { - "type": "string" - }, - "logs": { - "type": "array" - }, - "metrics": { - "type": "array" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Network/networkSecurityGroups", - "apiVersion": "2021-02-01", - "name": "[parameters('name')]", - "location": "[parameters('location')]", - "tags": "[parameters('tags')]", - "properties": { - "securityRules": "[parameters('securityRules')]" - } - }, - { - "type": "Microsoft.Insights/diagnosticSettings", - "apiVersion": "2017-05-01-preview", - "scope": "[format('Microsoft.Network/networkSecurityGroups/{0}', parameters('name'))]", - "name": "[format('{0}-diagnostics', parameters('name'))]", - "properties": { - "storageAccountId": "[parameters('logStorageAccountResourceId')]", - "workspaceId": "[parameters('logAnalyticsWorkspaceResourceId')]", - "logs": "[parameters('logs')]", - "metrics": "[parameters('metrics')]" - }, - "dependsOn": [ - "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('name'))]" - ] - } - ], - "outputs": { - "id": { - "type": "string", - "value": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('name'))]" - }, - "name": { - "type": "string", - "value": "[parameters('name')]" - } - } - } - }, - "dependsOn": [ - "[resourceId('Microsoft.Resources/deployments', 'logStorage')]" - ] - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "routeTable", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "name": { - "value": "[parameters('routeTableName')]" - }, - "location": { - "value": "[parameters('location')]" - }, - "tags": { - "value": "[parameters('tags')]" - }, - "routeName": { - "value": "[parameters('routeTableRouteName')]" - }, - "routeAddressPrefix": { - "value": "[parameters('routeTableRouteAddressPrefix')]" - }, - "routeNextHopIpAddress": { - "value": "[parameters('routeTableRouteNextHopIpAddress')]" - }, - "routeNextHopType": { - "value": "[parameters('routeTableRouteNextHopType')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "12136081248191573008" - } - }, - "parameters": { - "name": { - "type": "string" - }, - "location": { - "type": "string" - }, - "tags": { - "type": "object", - "defaultValue": {} - }, - "routeName": { - "type": "string" - }, - "routeAddressPrefix": { - "type": "string" - }, - "routeNextHopIpAddress": { - "type": "string" - }, - "routeNextHopType": { - "type": "string" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Network/routeTables", - "apiVersion": "2021-02-01", - "name": "[parameters('name')]", - "location": "[parameters('location')]", - "tags": "[parameters('tags')]", - "properties": { - "routes": [ - { - "name": "[parameters('routeName')]", - "properties": { - "addressPrefix": "[parameters('routeAddressPrefix')]", - "nextHopIpAddress": "[parameters('routeNextHopIpAddress')]", - "nextHopType": "[parameters('routeNextHopType')]" - } - } - ] - } - } - ], - "outputs": { - "id": { - "type": "string", - "value": "[resourceId('Microsoft.Network/routeTables', parameters('name'))]" - }, - "name": { - "type": "string", - "value": "[parameters('name')]" - } - } - } - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "virtualNetwork", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "name": { - "value": "[parameters('virtualNetworkName')]" - }, - "location": { - "value": "[parameters('location')]" - }, - "tags": { - "value": "[parameters('tags')]" - }, - "addressPrefix": { - "value": "[parameters('virtualNetworkAddressPrefix')]" - }, - "subnets": { - "value": [ - { - "name": "[parameters('subnetName')]", - "properties": { - "addressPrefix": "[parameters('subnetAddressPrefix')]", - "networkSecurityGroup": { - "id": "[reference(resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup'), '2020-06-01').outputs.id.value]" - }, - "routeTable": { - "id": "[reference(resourceId('Microsoft.Resources/deployments', 'routeTable'), '2020-06-01').outputs.id.value]" - }, - "serviceEndpoints": "[parameters('subnetServiceEndpoints')]" - } - } - ] - }, - "logAnalyticsWorkspaceResourceId": { - "value": "[parameters('logAnalyticsWorkspaceResourceId')]" - }, - "logStorageAccountResourceId": { - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'logStorage'), '2020-06-01').outputs.id.value]" - }, - "logs": { - "value": "[parameters('virtualNetworkDiagnosticsLogs')]" - }, - "metrics": { - "value": "[parameters('virtualNetworkDiagnosticsMetrics')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "12119421388421560495" - } - }, - "parameters": { - "name": { - "type": "string" - }, - "location": { - "type": "string" - }, - "tags": { - "type": "object", - "defaultValue": {} - }, - "addressPrefix": { - "type": "string" - }, - "logAnalyticsWorkspaceResourceId": { - "type": "string" - }, - "logStorageAccountResourceId": { - "type": "string" - }, - "subnets": { - "type": "array" - }, - "logs": { - "type": "array" - }, - "metrics": { - "type": "array" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Network/virtualNetworks", - "apiVersion": "2021-02-01", - "name": "[parameters('name')]", - "location": "[parameters('location')]", - "tags": "[parameters('tags')]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[parameters('addressPrefix')]" - ] - }, - "subnets": "[parameters('subnets')]" - } - }, - { - "type": "Microsoft.Insights/diagnosticSettings", - "apiVersion": "2017-05-01-preview", - "scope": "[format('Microsoft.Network/virtualNetworks/{0}', parameters('name'))]", - "name": "[format('{0}-diagnostics', parameters('name'))]", - "properties": { - "storageAccountId": "[parameters('logStorageAccountResourceId')]", - "workspaceId": "[parameters('logAnalyticsWorkspaceResourceId')]", - "logs": "[parameters('logs')]", - "metrics": "[parameters('metrics')]" - }, - "dependsOn": [ - "[resourceId('Microsoft.Network/virtualNetworks', parameters('name'))]" - ] - } - ], - "outputs": { - "name": { - "type": "string", - "value": "[parameters('name')]" - }, - "id": { - "type": "string", - "value": "[resourceId('Microsoft.Network/virtualNetworks', parameters('name'))]" - }, - "subnets": { - "type": "array", - "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', parameters('name'))).subnets]" - } - } - } - }, - "dependsOn": [ - "[resourceId('Microsoft.Resources/deployments', 'logStorage')]", - "[resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup')]", - "[resourceId('Microsoft.Resources/deployments', 'routeTable')]" - ] - } - ], - "outputs": { - "virtualNetworkName": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.name.value]" - }, - "virtualNetworkResourceId": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.id.value]" - }, - "subnetName": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.subnets.value[0].name]" - }, - "subnetAddressPrefix": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.subnets.value[0].properties.addressPrefix]" - }, - "subnetResourceId": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'virtualNetwork'), '2020-06-01').outputs.subnets.value[0].id]" - }, - "networkSecurityGroupName": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup'), '2020-06-01').outputs.name.value]" - }, - "networkSecurityGroupResourceId": { - "type": "string", - "value": "[reference(resourceId('Microsoft.Resources/deployments', 'networkSecurityGroup'), '2020-06-01').outputs.id.value]" - } - } - } - }, - "dependsOn": [ - "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('resourceGroupName'))]" - ] - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "[take(format('{0}--VNetPeerings', parameters('workloadName')), 64)]", - "location": "[deployment().location]", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "spokeName": { - "value": "[parameters('workloadName')]" - }, - "spokeResourceGroupName": { - "value": "[parameters('resourceGroupName')]" - }, - "spokeVirtualNetworkName": { - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkName.value]" - }, - "hubVirtualNetworkName": { - "value": "[parameters('hubVirtualNetworkName')]" - }, - "hubVirtualNetworkResourceId": { - "value": "[parameters('hubVirtualNetworkResourceId')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "9292126827663520366" - } - }, - "parameters": { - "spokeName": { - "type": "string" - }, - "spokeResourceGroupName": { - "type": "string" - }, - "spokeVirtualNetworkName": { - "type": "string" - }, - "hubVirtualNetworkName": { - "type": "string" - }, - "hubVirtualNetworkResourceId": { - "type": "string" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "[format('{0}-to-hub-vnet-peering', parameters('spokeName'))]", - "resourceGroup": "[parameters('spokeResourceGroupName')]", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "name": { - "value": "[format('{0}/to-{1}', parameters('spokeVirtualNetworkName'), parameters('hubVirtualNetworkName'))]" - }, - "remoteVirtualNetworkResourceId": { - "value": "[parameters('hubVirtualNetworkResourceId')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "17516021996853951284" - } - }, - "parameters": { - "name": { - "type": "string" - }, - "remoteVirtualNetworkResourceId": { - "type": "string" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", - "apiVersion": "2021-02-01", - "name": "[parameters('name')]", - "properties": { - "remoteVirtualNetwork": { - "id": "[parameters('remoteVirtualNetworkResourceId')]" - } - } - } - ] - } - } - } - ] - } - }, - "dependsOn": [ - "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('resourceGroupName'))]", - "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork')]" - ] - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "hubToWorkloadVirtualNetworkPeering", - "subscriptionId": "[parameters('hubSubscriptionId')]", - "location": "[deployment().location]", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "hubResourceGroupName": { - "value": "[parameters('hubResourceGroupName')]" - }, - "hubVirtualNetworkName": { - "value": "[parameters('hubVirtualNetworkName')]" - }, - "spokeVirtualNetworkName": { - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkName.value]" - }, - "spokeVirtualNetworkResourceId": { - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkResourceId.value]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "5427670383068182025" - } - }, - "parameters": { - "hubResourceGroupName": { - "type": "string" - }, - "hubVirtualNetworkName": { - "type": "string" - }, - "spokeVirtualNetworkName": { - "type": "string" - }, - "spokeVirtualNetworkResourceId": { - "type": "string" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2020-06-01", - "name": "hubToSpokeVirtualNetworkPeering", - "resourceGroup": "[parameters('hubResourceGroupName')]", - "properties": { - "expressionEvaluationOptions": { - "scope": "inner" - }, - "mode": "Incremental", - "parameters": { - "name": { - "value": "[format('{0}/to-{1}', parameters('hubVirtualNetworkName'), parameters('spokeVirtualNetworkName'))]" - }, - "remoteVirtualNetworkResourceId": { - "value": "[parameters('spokeVirtualNetworkResourceId')]" - } - }, - "template": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "metadata": { - "_generator": { - "name": "bicep", - "version": "0.4.1008.15138", - "templateHash": "17516021996853951284" - } - }, - "parameters": { - "name": { - "type": "string" - }, - "remoteVirtualNetworkResourceId": { - "type": "string" - } - }, - "functions": [], - "resources": [ - { - "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings", - "apiVersion": "2021-02-01", - "name": "[parameters('name')]", - "properties": { - "remoteVirtualNetwork": { - "id": "[parameters('remoteVirtualNetworkResourceId')]" - } - } - } - ] - } - } - } - ] - } - }, - "dependsOn": [ - "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork')]" - ] - } - ], - "outputs": { - "virtualNetworkName": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkName.value]" - }, - "virtualNetworkResourceId": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.virtualNetworkResourceId.value]" - }, - "subnetName": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.subnetName.value]" - }, - "subnetAddressPrefix": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.subnetAddressPrefix.value]" - }, - "subnetResourceId": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.subnetResourceId.value]" - }, - "networkSecurityGroupName": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.networkSecurityGroupName.value]" - }, - "networkSecurityGroupResourceId": { - "type": "string", - "value": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('resourceGroupName')), 'Microsoft.Resources/deployments', 'spokeNetwork'), '2020-06-01').outputs.networkSecurityGroupResourceId.value]" - } - } -} \ No newline at end of file From 5b4b2e7de513b7a480eb560801ca83a6fe9e6fb3 Mon Sep 17 00:00:00 2001 From: Glenn Musa <4622125+glennmusa@users.noreply.github.com> Date: Wed, 15 Dec 2021 14:09:14 +0000 Subject: [PATCH 4/5] omit the portal deployment since we no longer commit the ARM JSON --- src/bicep/examples/newWorkload/README.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/bicep/examples/newWorkload/README.md b/src/bicep/examples/newWorkload/README.md index 4ce917af6..3f7012285 100644 --- a/src/bicep/examples/newWorkload/README.md +++ b/src/bicep/examples/newWorkload/README.md @@ -70,13 +70,3 @@ az deployment sub show -n contoso --query properties.outputs > ./deploymentVaria cd newWorkload az deployment sub create -n deployNewWorkload -f newWorkload.bicep -l eastus --parameters workloadName='newWorkload' ``` - -Or, completely experimentally, try the Portal: - -### AzureCloud - -[![Deploy To Azure](../../../../docs/images/deploytoazure.svg?sanitze=true)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2Fmissionlz%2Fmain%2Fsrc%2Fbicep%2Fexamples%2FnewWorkload%2FnewWorkload.json) - -### AzureUSGovernment - -[![Deploy To Azure US Gov](../../../../docs/images/deploytoazuregov.svg?sanitize=true)](https://portal.azure.us/#create/Microsoft.https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2Fmissionlz%2Fmain%2Fsrc%2Fbicep%2Fexamples%2FnewWorkload%2FnewWorkload.json) From 3a5a416c8b5729657f4c481fe4fdaaf87f955366 Mon Sep 17 00:00:00 2001 From: Glenn Musa <4622125+glennmusa@users.noreply.github.com> Date: Wed, 15 Dec 2021 14:21:15 +0000 Subject: [PATCH 5/5] overwrite not append deploymentVariables.json in the README --- src/bicep/examples/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bicep/examples/README.md b/src/bicep/examples/README.md index 0bc5519d1..4afa34cd6 100644 --- a/src/bicep/examples/README.md +++ b/src/bicep/examples/README.md @@ -50,7 +50,7 @@ Execute the following commands from '.\src\bicep\examples\' ```Azure CLI az login -az deployment sub show -n MLZDeploymentName --query properties.outputs >> ./deploymentVariables.json +az deployment sub show -n MLZDeploymentName --query properties.outputs > ./deploymentVariables.json ``` Replace "MLZDeploymentName" with your deployment name. If you do not know your deployment name then log into the [Azure management portal](https://portal.azure.com), browse to 'Subscriptions', select the subscription MLZ was deployed into, and then look at 'Deployments' to obtain the deployment name.