diff --git a/cloudera-on-centos/README.md b/cloudera-on-centos/README.md index 1a484f9..4449640 100644 --- a/cloudera-on-centos/README.md +++ b/cloudera-on-centos/README.md @@ -1,3 +1,4 @@ +# This documentation is in progress and will change. There may be issues deploying this template # Deploy a Cloudera CDH installation on CentOS virtual machines @@ -48,7 +49,7 @@ The following table outlines the deployment topology characteristics for each su | Large | Standard_D14 | 16 | 112 GB | 16x1000 GB | 1 | 2 | 200 | ##Notes, Known Issues & Limitations -- All nodes in the cluster have a public IP qaddress. +- All nodes in the cluster have a public IP address. - Using passwords via SSH are disabled. Private keys should be used to access the nodes in the cluster (See notes below.) - The deployment script is not yet idempotent and cannot handle updates (although it currently works for initial provisioning only) - SSH key is not yet implemented and the template currently takes a password for the admin user @@ -94,7 +95,7 @@ Now execute the [upload-keys.ps1](upload-keys.ps1) script found in this reposito # keyName - The name used to identify the key # pfxFile - The pfx file containing the certificate and private key - .\upload-keys.ps1 "TestKeyGroup" "East Asia" "predeekc123221TestKeyVault" "TestKey" + .\upload-keys.ps1 "TestKeyGroup" "East Asia" "TestKeyVault" "TestKey" .\server-cert.pfx The output of the script will contain a URL that is used for the **keyUri** parameter. The rest of the the **resourceGroupName** and **keyVaultName** used in the script above will be used for the **keyVaultResourceGroup** and **keyVaultName**. diff --git a/cloudera-on-centos/azuredeploy.json b/cloudera-on-centos/azuredeploy.json index b9bf890..5d33db0 100644 --- a/cloudera-on-centos/azuredeploy.json +++ b/cloudera-on-centos/azuredeploy.json @@ -127,7 +127,7 @@ } }, "variables": { - "scriptsUri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/tree/master/cloudera-on-centos", + "scriptsUri":"https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/cloudera-on-centos", "storageAccount": { "prefix": "[parameters('storageAccountPrefix')]", "type": "[parameters('storageAccountType')]" diff --git a/cloudera-on-centos/data-node.json b/cloudera-on-centos/data-node.json index d19acb3..ca12b63 100644 --- a/cloudera-on-centos/data-node.json +++ b/cloudera-on-centos/data-node.json @@ -35,7 +35,7 @@ { "type": "Microsoft.Storage/storageAccounts", "name": "[concat(variables('storageAccountName'), copyIndex())]", - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "location": "[parameters('region')]", "copy": { "name": "storageAccountLoop", @@ -46,7 +46,7 @@ } }, { - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "type": "Microsoft.Network/publicIPAddresses", "name": "[concat(variables('publicIPAddressName'), copyIndex())]", "location": "[parameters('region')]", @@ -62,7 +62,7 @@ } }, { - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "type": "Microsoft.Network/networkInterfaces", "name": "[concat(variables('nicName'), copyIndex())]", "location": "[parameters('region')]", @@ -91,7 +91,7 @@ } }, { - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "type": "Microsoft.Compute/virtualMachines", "name": "[concat(variables('vmName'), copyIndex())]", "location": "[parameters('region')]", @@ -123,10 +123,20 @@ } }, "storageProfile": { - "sourceImage": { - "id": "[parameters('vmSpec').sourceImageName]" + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "6.5", + "version":"6.5.201503" }, - "destinationVhdsContainer" : "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/')]", + "osDisk": { + "name": "osdisk", + "vhd": { + "uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), copyIndex(), '.vhd')]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" + }, "dataDisks": [ { "name": "datadisk0", @@ -134,7 +144,8 @@ "lun": 0, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk0.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk1", @@ -142,7 +153,8 @@ "lun": 1, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk1.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk2", @@ -150,7 +162,8 @@ "lun": 2, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk2.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk3", @@ -158,7 +171,8 @@ "lun": 3, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk3.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk4", @@ -166,7 +180,8 @@ "lun": 4, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk4.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk5", @@ -174,7 +189,8 @@ "lun": 5, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk5.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk6", @@ -182,7 +198,8 @@ "lun": 6, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk6.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk7", @@ -190,7 +207,8 @@ "lun": 7, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk7.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk8", @@ -198,7 +216,8 @@ "lun": 8, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk8.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk9", @@ -206,7 +225,8 @@ "lun": 9, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk9.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk10", @@ -214,7 +234,8 @@ "lun": 10, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk10.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk11", @@ -222,7 +243,8 @@ "lun": 11, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk11.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk12", @@ -230,7 +252,8 @@ "lun": 12, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk12.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk13", @@ -238,7 +261,8 @@ "lun": 13, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk13.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk14", @@ -246,7 +270,8 @@ "lun": 14, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk14.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk15", @@ -254,7 +279,8 @@ "lun": 15, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk15.vhd')]" - } + }, + "createOption": "Empty" } ] }, @@ -284,7 +310,7 @@ { "type": "Microsoft.Compute/virtualMachines/extensions", "name": "[concat(variables('vmName'), copyIndex(), '/prepareDisks')]", - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "location": "[parameters('region')]", "copy": { "name": "nameNodeNicLoop", diff --git a/cloudera-on-centos/master-node.json b/cloudera-on-centos/master-node.json index 59d4db6..3a63657 100644 --- a/cloudera-on-centos/master-node.json +++ b/cloudera-on-centos/master-node.json @@ -34,14 +34,14 @@ { "type": "Microsoft.Storage/storageAccounts", "name": "[variables('storageAccountName')]", - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "location": "[parameters('region')]", "properties": { "accountType": "[parameters('storageAccount').type]" } }, { - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "type": "Microsoft.Network/publicIPAddresses", "name": "[variables('publicIPAddressName')]", "location": "[parameters('region')]", @@ -53,7 +53,7 @@ } }, { - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "type": "Microsoft.Network/networkInterfaces", "name": "[variables('nicName')]", "location": "[parameters('region')]", @@ -77,7 +77,7 @@ } }, { - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "type": "Microsoft.Compute/virtualMachines", "name": "[variables('vmName')]", "location": "[parameters('region')]", @@ -114,10 +114,20 @@ } }, "storageProfile": { - "sourceImage": { - "id": "[parameters('vmSpec').sourceImageName]" + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "6.5", + "version":"6.5.201503" + }, + "osDisk": { + "name": "osdisk", + "vhd": { + "uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '.vhd')]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" }, - "destinationVhdsContainer" : "[concat('http://',variables('storageAccountName'),'.blob.core.windows.net/vhds/')]", "dataDisks": [ { "name": "datadisk0", @@ -125,7 +135,8 @@ "lun": 0, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk0.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk1", @@ -133,7 +144,8 @@ "lun": 1, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk1.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk2", @@ -141,7 +153,8 @@ "lun": 2, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk2.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk3", @@ -149,7 +162,8 @@ "lun": 3, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk3.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk4", @@ -157,7 +171,8 @@ "lun": 4, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk4.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk5", @@ -165,7 +180,8 @@ "lun": 5, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk5.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk6", @@ -173,7 +189,8 @@ "lun": 6, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk6.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk7", @@ -181,7 +198,8 @@ "lun": 7, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk7.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk8", @@ -189,7 +207,8 @@ "lun": 8, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk8.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk9", @@ -197,7 +216,8 @@ "lun": 9, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk9.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk10", @@ -205,7 +225,8 @@ "lun": 10, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk10.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk11", @@ -213,7 +234,8 @@ "lun": 11, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk11.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk12", @@ -221,7 +243,8 @@ "lun": 12, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk12.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk13", @@ -229,7 +252,8 @@ "lun": 13, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk13.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk14", @@ -237,7 +261,8 @@ "lun": 14, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk14.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk15", @@ -245,7 +270,8 @@ "lun": 15, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk15.vhd')]" - } + }, + "createOption": "Empty" } ] }, @@ -282,7 +308,7 @@ { "type": "Microsoft.Compute/virtualMachines/extensions", "name": "[concat(parameters('dnsNamePrefix'), '-mn', '/prepareDisks')]", - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "location": "[parameters('region')]", "dependsOn": [ "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" diff --git a/cloudera-on-centos/name-node.json b/cloudera-on-centos/name-node.json index 06350e9..6499ed7 100644 --- a/cloudera-on-centos/name-node.json +++ b/cloudera-on-centos/name-node.json @@ -34,7 +34,7 @@ { "type": "Microsoft.Storage/storageAccounts", "name": "[concat(variables('storageAccountName'), copyIndex())]", - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "location": "[parameters('region')]", "copy": { "name": "storageAccountLoop", @@ -45,7 +45,7 @@ } }, { - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "type": "Microsoft.Network/publicIPAddresses", "name": "[concat(variables('publicIPAddressName'), copyIndex())]", "location": "[parameters('region')]", @@ -61,7 +61,7 @@ } }, { - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "type": "Microsoft.Network/networkInterfaces", "name": "[concat(variables('nicName'), copyIndex())]", "location": "[parameters('region')]", @@ -89,7 +89,7 @@ } }, { - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "type": "Microsoft.Compute/virtualMachines", "name": "[concat(variables('vmName'), copyIndex())]", "location": "[parameters('region')]", @@ -122,10 +122,20 @@ } }, "storageProfile": { - "sourceImage": { - "id": "[parameters('vmSpec').sourceImageName]" + "imageReference": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "6.5", + "version":"6.5.201503" + }, + "osDisk": { + "name": "osdisk", + "vhd": { + "uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), copyIndex(), '.vhd')]" + }, + "caching": "ReadWrite", + "createOption": "FromImage" }, - "destinationVhdsContainer" : "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/')]", "dataDisks": [ { "name": "datadisk0", @@ -133,7 +143,8 @@ "lun": 0, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk0.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk1", @@ -141,7 +152,8 @@ "lun": 1, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk1.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk2", @@ -149,7 +161,8 @@ "lun": 2, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk2.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk3", @@ -157,7 +170,8 @@ "lun": 3, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk3.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk4", @@ -165,7 +179,8 @@ "lun": 4, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk4.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk5", @@ -173,7 +188,8 @@ "lun": 5, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk5.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk6", @@ -181,7 +197,8 @@ "lun": 6, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk6.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk7", @@ -189,7 +206,8 @@ "lun": 7, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk7.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk8", @@ -197,7 +215,8 @@ "lun": 8, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk8.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk9", @@ -205,7 +224,8 @@ "lun": 9, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk9.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk10", @@ -213,7 +233,8 @@ "lun": 10, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk10.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk11", @@ -221,7 +242,8 @@ "lun": 11, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk11.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk12", @@ -229,7 +251,8 @@ "lun": 12, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk12.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk13", @@ -237,7 +260,8 @@ "lun": 13, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk13.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk14", @@ -245,7 +269,8 @@ "lun": 14, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk14.vhd')]" - } + }, + "createOption": "Empty" }, { "name": "datadisk15", @@ -253,7 +278,8 @@ "lun": 15, "vhd": { "Uri": "[concat('http://', variables('storageAccountName'), copyIndex(), '.blob.core.windows.net/vhds/', variables('vmName'), '-datadisk15.vhd')]" - } + }, + "createOption": "Empty" } ] }, @@ -267,7 +293,7 @@ { "type": "Microsoft.Compute/virtualMachines/extensions", "name": "[concat(variables('vmName'), copyIndex(), '/prepareDisks')]", - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "location": "[parameters('region')]", "copy": { "name": "nameNodeNicLoop", diff --git a/cloudera-on-centos/shared-resources.json b/cloudera-on-centos/shared-resources.json index e968b75..417683b 100644 --- a/cloudera-on-centos/shared-resources.json +++ b/cloudera-on-centos/shared-resources.json @@ -13,7 +13,7 @@ }, "resources": [ { - "apiVersion": "2014-12-01-preview", + "apiVersion": "2015-05-01-preview", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('networkSpec').virtualNetworkName]", "location": "[parameters('region')]",