ASM 版の仮想マシンを ARM 版の仮想マシンに移行する
今回は掲題の通り Azure Service Management 版の仮想マシンを Azure Resource Manager 版の仮想マシンに移行する方法を紹介する。何を言っているのか分からない方もいると思うので、念のため以下でざっくりおさらいをする。
- Azure Service Management(ASM): Microsoft Azure 旧式のリソース管理方式、俗称 IaaS v1
- Azure Resource Manager(ARM): Microsoft Azure の新しいリソース管理方式、俗称 IaaS v2
ARM 版の方がネットワークインターフェースが個別でリソース化している、ロードバランサ不要で仮想マシンが配置できる等々の違いはあるが、ARM 版の方が新しいリソース管理方式であることが理解できれば問題ない。ちょくちょく聞かれる内容は「既存の ASM 版のリソースを ARM 版のリソースに簡単に移行する方法は無いか?」は本記事のテーマだが、調べたところ以下の三つが存在した。
上記のうち、MigAz と Platform Supported Migration を試したので紹介しようと思う。
MigAz での移行
本ツールはリンク先の GitHub よりバイナリをダウンロードして migAz.exe を実行してアプリケーションを起動する。以下の画像の要領に従って操作することで ARM テンプレートの JSON ファイルを出力することができる。
export.json, copyblobdetails.json, DeployInstructions.html というファイルが出力される。このうちの DeployInstructions.html ファイルをブラウザで確認すると以下の様に表示される。
上記の指示の中に ASM 版のストレージアカウントから ARM 版のストレージアカウントに仮想マシンの VHD をコピーする処理が含まれていることに注意してほしい。それ以外は指示通りに実行すればリソースの移行は完了するはずだ。
Platform Supported Migration
Azure PowerShell のコマンドを利用する方法で ASM 版リソースから ARM 版リソースへの移行を試してみる。
# まずは ASM 版、ARM 版にログイン PS v1.0> Add-AzureAccount PS v1.0> Login-AzureRmAccount # 移行する ASM 版リソースの情報を取得 PS v1.0> $serviceName = "移行したいクラウドサービス名" PS v1.0> $deployment = Get-AzureDeployment -ServiceName $serviceName PS v1.0> $deploymentName = $deployment.DeploymentName # 移行準備を実施 PS v1.0> Move-AzureService -Prepare -ServiceName $serviceName -DeploymentName $deploymentName -CreateNewVirtualNetwork OperationDescription OperationId OperationStatus -------------------- ----------- --------------- Move-AzureService 291e994f-0ed8-7a5a-ac84-47c7df732322 Succeeded
上記の PowerShell スクリプトを実施時点で以下の様に ASM 版リソースの情報ベースで ARM 版リソースが作成されている。
管理ポータルにて準備作成済みの Migrated リソースを指定し、以下の様に指定することで移行準備が整う。
# PS v1.0> existingVnetRGName = "<元のクラウドサービス名>-Migrated" $vnetName = "<元のクラウドサービス名>-VirtualNetwork " $subnetName = "Subnet-1" PS v1.0> Move-AzureService -Prepare -ServiceName $serviceName -DeploymentName $deploymentName ` -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName ` -VirtualNetworkName $vnetName -SubnetName $subnetName OperationDescription OperationId OperationStatus -------------------- ----------- --------------- Move-AzureService d17b99fc-a017-7fcf-b993-e3ba17415f44 Succeeded
上記の様に Succeeded の結果が帰ってくれば移行は移行準備が整ったことを意味している。後は以下のコマンドを実行することで移行は完了だ。
PS v1.0> Move-AzureService -Commit -ServiceName $serviceName -DeploymentName $deploymentName OperationDescription OperationId OperationStatus -------------------- ----------- --------------- Move-AzureService 8b2663ec-c91c-73d7-a092-20057a0f3077 Succeeded
移行が完了した後、ASM版の仮想マシンは削除されており、Windows Server 2012 R2 のユーザープロファイルもそのまま移行されていることを確認した。さらに、ストレージアカウントが ASM 版のままで残される点も要注意だ。