normalian blog

Let's talk about Microsoft Azure, ASP.NET and Java!

Azure Virtual WAN の RouteTable をまっさらにする方法

最近ちょっと Azure Virtual WAN を使って遊んでたんですが、アレコレいじった後にリソースを削除しようとしたときに「Azure Virtual WAN 側の Route Table が Azure Firewall を参照しているので削除できず、Azure Firewall 側は参照されているので削除できない」という問題にぶつかりました。
Azure ポータル上で誤った設定かつ不要な Route Table を削除しようとしたのですが、Route Table を空にする処理はポータル上ではできないようなので PowerShell コマンドを利用しましたが、自分自身が忘れそうなので今回は自分用の備忘録です。

まず、Virutal WAN の書く Hub には Route Tables がありますが、こちらは以下のスクリーンショットを見て頂ければ分かる通り Default と None が存在します。

更に上記のスクリーンショット右側は見て頂ければ分かると思いますが、ポータル上に表示させる名前とコマンド上で扱う名前は別になっています(ポータル上だと Default だが、コマンドだと defaultRouteTable 等)。Viritual WAN の特定の Hub 上での Route Table を取得するコマンドは以下となります。

PS /home/daichi> Get-AzVHubRouteTable  -HubName "your subscription id" -ResourceGroupName "your rg name"                   

Name                   : defaultRouteTable
Id                     : /subscriptions/"your subscription id"/resourceGroups/"your rg name"/providers/Microsoft.Network/virtualHubs/"your hub name"/hubRouteTables/defaultRouteTable
ProvisioningState      : Succeeded
Labels                 : {default}
Routes                 : []
AssociatedConnections  : []
PropagatingConnections : []

Name                   : noneRouteTable
Id                     : /subscriptions/"your subscription id"/resourceGroups/"your rg name"/providers/Microsoft.Network/virtualHubs/"your hub name"/hubRouteTables/noneRoute
                         Table
ProvisioningState      : Succeeded
Labels                 : {none}
Routes                 : []
AssociatedConnections  : []
PropagatingConnections : []

上記は既に値がまっさらになった状態の Route Table ですが、ここの Routes プロパティに不要な情報が含まれている場合にポータル上で消す手段がありませんでした(誰か知ってたら教えてください)。加えて Routes プロパティは RouteTable という構造体なので空の作り方がイマイチ不明でした。そのため noneRouteTable を利用して以下の様に更新しました。

PS /home/daichi> $rt = Get-AzVHubRouteTable -HubName "your hub name" -ResourceGroupName "your rg name" -name noneRouteTable                            
PS /home/daichi> Update-AzVHubRouteTable -ResourceGroupName "your rg name" -name defaultRouteTable -Route $route.Routes -VirtualHubName "your hub name"

Name                   : defaultRouteTable
Id                     : /subscriptions/"your subscription id"/resourceGroups/"your rg name"/providers/Microsoft.Network/virtualHubs/"your hub name"/hubRouteTables/defaultRouteTable
ProvisioningState      : Succeeded
Labels                 : {default}
Routes                 : []
AssociatedConnections  : []
PropagatingConnections : []

誰得な記事となりましたが、どなたかの参考になれば幸いです。