みち草

Azure中心にまとめる技術情報ブログ

Azure Resource Mover で 600 リソースを別 RG に移動する

はじめに

Azure Resource Mover で大量のリソースを移動する場合、どれくらいかかるのか試してみました。

実環境に則した様々な種類のリソース群ではないし、正直やってみないとわからない、というのが実際のところだと思うので、参考値にすらなるのかわかりませんが試した結果まとめ

learn.microsoft.com

目次

移動元の環境

1 つのリソース グループに、以下のリソースを展開

  • VNet * 2
  • NSG * 6
  • VM * 200
  • NIC * 200
  • DIsk *200

コア数の上限の関係で 1 つのリージョン (VNet) に 100 台を配置して、2 リージョン分展開

全部で 608 リソース、これを Resource Mover で別のリソース グループに移動します。

デプロイ用 Bicep

200 台のデプロイはこの Bicep ファイル (DeployVms_Repeat.bicep) を 2 回使って 100 台ずつデプロイしました。

github.com

たまに更新してたりするので、テスト時に使ったものを貼っておくとこんな感じです。

module も別の階層に置いてあります。

param location string = resourceGroup().location
param adminUserName string

@secure()
param adminUserPassword string
param numberOfWindows int
param numberOfUbuntu int

resource vnet 'Microsoft.Network/virtualNetworks@2022-01-01' = {
  name: 'vnet'
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '172.16.0.0/16'
      ]
    }
    subnets: [
      {
        name: 'Subnet-1'
        properties: {
          addressPrefix: '172.16.0.0/24'
          networkSecurityGroup: {
            id: NSG1.id
          }
        }
      }
      {
        name: 'Subnet-2'
        properties: {
          addressPrefix: '172.16.1.0/24'
          networkSecurityGroup: {
            id: NSG2.id
          }
        }
      }
      {
        name: 'Subnet-3'
        properties: {
          addressPrefix: '172.16.3.0/24'
          networkSecurityGroup: {
            id: NSG3.id
          }
        }
      }
    ]
  }
  resource Subnet1 'subnets' existing = {
    name: 'Subnet-1'
  }
  resource Subnet2 'subnets' existing = {
    name: 'Subnet-2'
  }
  resource Subnet3 'subnets' existing = {
    name: 'Subnet-3'
  }
}

resource NSG1 'Microsoft.Network/networkSecurityGroups@2022-01-01' = {
  name: 'NSG-1'
  location: location
  properties: {
    securityRules: [

    ]
  }
}

resource NSG2 'Microsoft.Network/networkSecurityGroups@2022-01-01' = {
  name: 'NSG-2'
  location: location
  properties: {
    securityRules: [

    ]
  }
}

resource NSG3 'Microsoft.Network/networkSecurityGroups@2022-01-01' = {
  name: 'NSG-3'
  location: location
  properties: {
    securityRules: [

    ]
  }
}

module WinVmModule '../module/deploy-windows.bicep' = [for i in range(0, numberOfWindows): {
  name: 'winVmDeploy${padLeft(i+1, 3, '0')}'
  params: {
    adminPassword: adminUserPassword
    adminUserName: adminUserName
    location: location
    vmName: 'WinVM${padLeft(i+1, 3, '0')}'
    subnetId: vnet::Subnet1.id
    vmSize: 'Standard_B2ms'
  }
}]

module UbuVmModule '../module/deploy-ubuntu.bicep' = [for i in range(0, numberOfUbuntu): {
  name: 'ubuVmDeploy${padLeft(i+1, 3, '0')}'
  params: {
    adminPassword: adminUserPassword
    adminUserName: adminUserName
    location: location
    vmName: 'UbuVM${padLeft(i+1, 3, '0')}'
    subnetId: vnet::Subnet2.id
    vmSize: 'Standard_B1ms'
  }
}]

リソースの移動

Azure Resource Mover からリソース グループの移動を選択

ソースとターゲットのリソース グループを選択

608 個のリソースを全選択

まずは対象リソースの検証が動きます。

依存関係のあるリソースが含まれているか、とかがチェックされている様子

608 リソースありましたが、チェックは 3 分ほどで終わりました。

準備ができたら移動開始

移動開始後、3 分ほどでソース リソース グループ内のリソースが減り始める

減り始めたら、あっという間にソース側は 0 個に

ポータル上の通知が完了になるには、開始から 7 分かかりました。

ターゲットのリソース グループに、608 個のリソースが移動しています。

これで移動は完了です。

終わりに

今回はリソース グループ間のリソース移動を試しました。

最大 4 時間かかる可能性があり、どのくらいかかるか気になっていたのですが、思ったよりも全然時間がかかりませんでした。

しかし最初にも書いたとおり、実際の利用環境に則した状況を再現しているわけではありません。

LB や AppGW、SQL DB、Recovery Services コンテナーなどは一切なくシングル VM のみでテストしており、この 7 分という結果がどのくらい参考になるのか…というところではあるので、やってみたらこんな結果だった、くらいの感じで見ていただければと。

実際の環境でも、とりあえず移行前のチェックが完了するまででどのくらい時間がかかるか、を試してみるのはアリかと思います。