It’s now time to add subnets to the first vnet.
Let’s do the first two with Powershell:
PS /home/tode> $virtualNetwork = Get-AzVirtualNetwork -Name HUBVNET
PS /home/tode> Add-AzVirtualNetworkSubnetConfig -Name gatewaySubnet -VirtualNetwork $virtualNetwork -AddressPrefix "10.0.0.0/27"
PS /home/tode> Add-AzVirtualNetworkSubnetConfig -Name FirewallSubnet -VirtualNetwork $virtualNetwork -AddressPrefix "10.0.0.32/27"
PS /home/tode> $virtualNetwork | Set-AzVirtualNetwork
Name : HUBVNET
ResourceGroupName : MainRG
Location : eastus
Id : /subscriptions/62dd0295-0094-443a-9b60-4c75dac248eb/resourceGroups/MainRG/providers/Microsoft.Network/virtualNetworks/HUBVNET
Etag : W/"e81a3b5f-a4e9-4986-8d2f-d7b79e3237df"
ResourceGuid : 9ccba534-fa70-4e97-9901-ac19afe36051
ProvisioningState : Succeeded
Tags :
AddressSpace : {
"AddressPrefixes": [
"10.0.0.0/16"
]
}
DhcpOptions : {}
FlowTimeoutInMinutes : null
Subnets : [
{
"Delegations": [],
"Name": "gatewaySubnet",
"Etag": "W/\"e81a3b5f-a4e9-4986-8d2f-d7b79e3237df\"",
"Id": "/subscriptions/62dd0295-0094-443a-9b60-4c75dac248eb/resourceGroups/MainRG/providers/Microsoft.Network/virtualNetworks/HUBVNET/subne
ts/gatewaySubnet",
"AddressPrefix": [
"10.0.0.0/27"
],
"IpConfigurations": [],
"ServiceAssociationLinks": [],
"ResourceNavigationLinks": [],
"ServiceEndpoints": [],
"ServiceEndpointPolicies": [],
"PrivateEndpoints": [],
"ProvisioningState": "Succeeded",
"PrivateEndpointNetworkPolicies": "Enabled",
"PrivateLinkServiceNetworkPolicies": "Enabled",
"IpAllocations": []
},
{
"Delegations": [],
"Name": "FirewallSubnet",
"Etag": "W/\"e81a3b5f-a4e9-4986-8d2f-d7b79e3237df\"",
"Id": "/subscriptions/62dd0295-0094-443a-9b60-4c75dac248eb/resourceGroups/MainRG/providers/Microsoft.Network/virtualNetworks/HUBVNET/subne
ts/FirewallSubnet",
"AddressPrefix": [
"10.0.0.32/27"
],
"IpConfigurations": [],
"ServiceAssociationLinks": [],
"ResourceNavigationLinks": [],
"ServiceEndpoints": [],
"ServiceEndpointPolicies": [],
"PrivateEndpoints": [],
"ProvisioningState": "Succeeded",
"PrivateEndpointNetworkPolicies": "Enabled",
"PrivateLinkServiceNetworkPolicies": "Enabled",
"IpAllocations": []
}
]
VirtualNetworkPeerings : []
EnableDdosProtection : false
DdosProtectionPlan : null
ExtendedLocation : null
Now let’s do the third subnet with a template. I exported the template for the vnet in the azure portal and added the third subnet accordingly:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"virtualNetworks_HUBVNET_name": {
"defaultValue": "HUBVNET",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2020-11-01",
"name": "[parameters('virtualNetworks_HUBVNET_name')]",
"location": "eastus",
"properties": {
"addressSpace": {
"addressPrefixes": [
"10.0.0.0/16"
]
},
"subnets": [
{
"name": "gatewaySubnet",
"properties": {
"addressPrefix": "10.0.0.0/27",
"serviceEndpoints": [],
"delegations": [],
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
},
{
"name": "FirewallSubnet",
"properties": {
"addressPrefix": "10.0.0.32/27",
"serviceEndpoints": [],
"delegations": [],
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
},
{
"name": "OtherSubnet",
"properties": {
"addressPrefix": "10.0.0.64/27",
"serviceEndpoints": [],
"delegations": [],
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
}
],
"virtualNetworkPeerings": [],
"enableDdosProtection": false
}
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2020-11-01",
"name": "[concat(parameters('virtualNetworks_HUBVNET_name'), '/FirewallSubnet')]",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_HUBVNET_name'))]"
],
"properties": {
"addressPrefix": "10.0.0.32/27",
"serviceEndpoints": [],
"delegations": [],
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2020-11-01",
"name": "[concat(parameters('virtualNetworks_HUBVNET_name'), '/gatewaySubnet')]",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_HUBVNET_name'))]"
],
"properties": {
"addressPrefix": "10.0.0.0/27",
"serviceEndpoints": [],
"delegations": [],
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2020-11-01",
"name": "[concat(parameters('virtualNetworks_HUBVNET_name'), '/OtherSubnet')]",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_HUBVNET_name'))]"
],
"properties": {
"addressPrefix": "10.0.0.64/27",
"serviceEndpoints": [],
"delegations": [],
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
}
]
}
Now let’s deploy this json:
PS /home/tode> New-AzResourceGroupDeployment -ResourceGroupName MainRG -TemplateFile /home/tode/Dokumente/addsubnets.json
DeploymentName : addsubnets
ResourceGroupName : MainRG
ProvisioningState : Succeeded
Timestamp : 29.09.2021 13:41:59
Mode : Incremental
TemplateLink :
Parameters :
Name Type Value
============================== ========================= ==========
virtualNetworks_HUBVNET_name String HUBVNET
Outputs :
DeploymentDebugLogLevel :
Finally, I created a short script:
$vnetlist = Get-AzResource -ResourceGroupName MainRG
foreach ($item in $vnetlist) {
$vnet = Get-AzVirtualNetwork -Name $item.Name
foreach ($subnet in $vnet.Subnets) {
$vnet.Name
$vnet.Location
$subnet.Name
$subnet.AddressPrefix
}
}
