Establish connection to a VNET via an ExpressRoute circuit
{"comments": "hub virtual network (vnet)", "type": "microsoft.network/virtualnetworks", "name": "[variables('hubvnetname')]", "apiversion": "2019-11-01", "location": "[parameters('location')]", "properties": {"addressspace": {"addressprefixes": ["[variables('hubvnetprefix')]"]}, "enableddosprotection": false, "enablevmprotection": false}}{"comments": "management subnet", "type": "microsoft.network/virtualnetworks/subnets", "name": "[concat(variables('hubvnetname'), "/", variables('mgmtsubnetname'))]", "apiversion": "2019-11-01", "dependson": ["[resourceid('microsoft.network/virtualnetworks", variables('hubvnetname'))]"], "properties": {"addressprefix": "[variables('mgmtsubnetprefix')]"}}{"comments": "shared subnet", "type": "microsoft.network/virtualnetworks/subnets", "name": "[concat(variables('hubvnetname'), "/", variables('sharedsubnetname'))]", "apiversion": "2019-11-01", "dependson": ["[resourceid('microsoft.network/virtualnetworks", variables('hubvnetname'))]", "[resourceid('microsoft.network/virtualnetworks/subnets", variables('hubvnetname'), variables('mgmtsubnetname'))]"], "properties": {"addressprefix": "[variables('sharedsubnetprefix')]"}}{"comments": "dmz subnet", "type": "microsoft.network/virtualnetworks/subnets", "name": "[concat(variables('hubvnetname'), "/", variables('dmzsubnetname'))]", "apiversion": "2019-11-01", "dependson": ["[resourceid('microsoft.network/virtualnetworks", variables('hubvnetname'))]", "[resourceid('microsoft.network/virtualnetworks/subnets", variables('hubvnetname'), variables('mgmtsubnetname'))]", "[resourceid('microsoft.network/virtualnetworks/subnets", variables('hubvnetname'), variables('sharedsubnetname'))]"], "properties": {"addressprefix": "[variables('dmzsubnetprefix')]"}}{"condition": "[equals(parameters('deployvpngateway'), "yes')]", "comments": "gateway subnet", "type": "microsoft.network/virtualnetworks/subnets", "name": "[concat(variables('hubvnetname'), "/", variables('gatewaysubnetname'))]", "apiversion": "2019-11-01", "dependson": ["[resourceid('microsoft.network/virtualnetworks", variables('hubvnetname'))]", "[resourceid('microsoft.network/virtualnetworks/subnets", variables('hubvnetname'), variables('mgmtsubnetname'))]", "[resourceid('microsoft.network/virtualnetworks/subnets", variables('hubvnetname'), variables('sharedsubnetname'))]", "[resourceid('microsoft.network/virtualnetworks/subnets", variables('hubvnetname'), variables('dmzsubnetname'))]"], "properties": {"addressprefix": "[variables('gatewaysubnetprefix')]"}}{"comments": "development spoke virtual network (vnet)", "type": "microsoft.network/virtualnetworks", "name": "[variables('devspokevnetname')]", "apiversion": "2019-11-01", "location": "[parameters('location')]", "properties": {"addressspace": {"addressprefixes": ["[variables('devspokevnetprefix')]"]}, "enableddosprotection": false, "enablevmprotection": false}}{"comments": "development workload subnet", "type": "microsoft.network/virtualnetworks/subnets", "name": "[concat(variables('devspokevnetname'), "/", variables('spokeworkloadsubnetname'))]", "apiversion": "2019-11-01", "dependson": ["[resourceid('microsoft.network/virtualnetworks", variables('devspokevnetname'))]"], "properties": {"addressprefix": "[variables('devspokeworkloadsubnetprefix')]"}}{"comments": "production spoke virtual network (vnet)", "type": "microsoft.network/virtualnetworks", "name": "[variables('prodspokevnetname')]", "apiversion": "2019-11-01", "location": "[parameters('location')]", "properties": {"addressspace": {"addressprefixes": ["[variables('prodspokevnetprefix')]"]}, "enableddosprotection": false, "enablevmprotection": false}}{"comments": "production workload subnet", "type": "microsoft.network/virtualnetworks/subnets", "name": "[concat(variables('prodspokevnetname'), "/", variables('spokeworkloadsubnetname'))]", "apiversion": "2019-11-01", "dependson": ["[resourceid('microsoft.network/virtualnetworks", variables('prodspokevnetname'))]"], "properties": {"addressprefix": "[variables('prodspokeworkloadsubnetprefix')]"}}{"condition": "[equals(parameters('deployvpngateway'), "yes')]", "apiversion": "2019-11-01", "type": "microsoft.network/virtualnetworks/virtualnetworkpeerings", "name": "[concat(variables('hubvnetname'), "/gwpeering_", variables('hubvnetname'), "_", variables('devspokevnetname'))]", "location": "[parameters('location')]", "dependson": ["[resourceid('microsoft.network/virtualnetworks", variables('hubvnetname'))]", "[resourceid('microsoft.network/virtualnetworks/subnets", variables('hubvnetname'), variables('mgmtsubnetname'))]", "[resourceid('microsoft.network/virtualnetworks/subnets", variables('hubvnetname'), variables('sharedsubnetname'))]", "[resourceid('microsoft.network/virtualnetworks/subnets", variables('hubvnetname'), variables('dmzsubnetname'))]", "[resourceid('microsoft.network/virtualnetworks/subnets", variables('hubvnetname'), variables('gatewaysubnetname'))]", "[resourceid('microsoft.network/virtualnetworks", variables('devspokevnetname'))]", "[resourceid('microsoft.network/virtualnetworks/subnets", variables('devspokevnetname'), variables('spokeworkloadsubnetname'))]"], "properties": {"allowvirtualnetworkaccess": true, "allowforwardedtraffic": true, "allowgatewaytransit": true, "useremotegateways": false, "remotevirtualnetwork": {"id": "[variables('devspokeid')]"}}} 