Azure 仮想マシンなど Azure リソースを安全に相互接続するために、Azure 仮想ネットワーク (VNet) を用いることで実現できます。また、VPN ゲートウェイを用いることで Azure 仮想マシンとオンプレミスに存在するサーバー間で通信を行うことが可能となっています。
VNet の考えからとして、はじめにアドレス空間を定義したあとで、そのアドレス空間内に Azure 仮想マシンや VPN ゲートウェイが所属するためのサブネット (のアドレス空間) を作成する必要がありますが想定より多い、または少ないアドレス空間、サブネットを作成してしまうことがあるかと思います。
その場合は、Azure ポータルを使用して変更することもできますが、Azure PowerShell を用いた場合でも変更が可能であったため、その手順をスクリプトとして纏めました。
補足として、VNet のアドレス空間を追加、または VNet Peering を用いて拡張することは可能ですが、プロジェクト制約などによって実施できない場合を想定しています。また、アドレス空間およびサブネット範囲の変更については、変更範囲が他の VNet で使用されていないこと、サブネットに関しては、そのサブネットに対してすべての仮想マシン、ないし VPN ゲートウェイといった Azure リソースが接続されていない状態である必要があります。
VNet および VNet 内のサブネットのアドレス空間範囲変更スクリプトについて
スクリプトを実行する検証環境について
Azure ポータル上から見た検証環境の VNet の設定内容は以下となります。
以下の図のように、アドレス空間およびサブネット範囲を変更します。
スクリプトの大まかな流れ
- 設定を変更する VNet が存在するサブスクリプションの選択 (サブスクリプションが複数ある場合)
- VNet のアドレス空間範囲を変更する
- VNet 内にある GatewaySubnet のサブネット範囲を変更する
- VNet 内にある Subnet1 のサブネット範囲を変更する
スクリプト本体
# # VNet および VNet 内のサブネットのアドレス空間範囲を変更する # v20170915 # # # 変数 (サンプル) # 実行する環境にあわせて変数の値を変更してください # $sub_name = "Microsoft Azure" $rg_name = "NetworkTest-RG" $vnet_name = "NetworkTest-VNet" $sb_name = "Subnet1" $vnet_change_ap = "172.16.0.0/17" $sb_change_ap = "172.16.0.0/23" $gsb_change_ap = "172.16.127.0/24" # # 1. 設定を変更する VNet が存在するサブスクリプションの選択 (サブスクリプションが複数ある場合) # Select-AzureRMSubScription -SubscriptionName $sub_name # # 2. VNet のアドレス空間範囲を変更する # $vnet = Get-AzureRmVirtualNetwork -Name $vnet_name -ResourceGroupName $rg_name $vnet.AddressSpace[0].AddressPrefixes = $vnet_change_ap $vnet = Set-AzureRmVirtualNetwork -VirtualNetwork $vnet # # 3. VNet 内にある GatewaySubnet のサブネット範囲を変更する # Set-AzureRmVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet -AddressPrefix $gsb_change_ap $vnet = Set-AzureRmVirtualNetwork -VirtualNetwork $vnet # # 4. VNet 内にある Subnet1 のサブネット範囲を変更する # Set-AzureRmVirtualNetworkSubnetConfig -Name $sb_name -VirtualNetwork $vnet -AddressPrefix $sb_change_ap Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
スクリプトの実行結果について
実行結果は以下のようになり、Azure PowerShell 実行結果、Azure ポータル上からも変更されていることが確認できました。
スクリプト作成にあたり参考にしたサイト
- Add, change, or delete an Azure virtual network subnet | Microsoft Docs
https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-manage-subnet - Set-AzureRmVirtualNetworkSubnetConfig (AzureRM.Network) | Microsoft Docs
https://docs.microsoft.com/en-us/powershell/module/azurerm.network/set-azurermvirtualnetworksubnetconfig
参考
- Microsoft Azure: Cloud Computing Platform & Services
https://azure.microsoft.com/en-us/ - Azure ソリューション アーキテクチャ センター | Microsoft Azure
https://azure.microsoft.com/ja-jp/solutions/architecture/ - Blog | Microsoft Azure
https://azure.microsoft.com/en-us/blog/ - Virtual Network – 仮想プライベート クラウド | Microsoft Azure
https://azure.microsoft.com/ja-jp/services/virtual-network/ - Azure Virtual Network のドキュメント – チュートリアル、API リファレンス | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/virtual-network/ - 価格 – Virtual Network | Microsoft Azure
https://azure.microsoft.com/ja-jp/pricing/details/virtual-network/