Azureでのアカウント間VM(仮想マシン)の複製方法

王文暁

はじめに

Microsoft社が提供しているクラウドサービス[Azure]でVM(Virtual Machine)を1台構築した後、さらに他のアカウント新しいVMを構築する需要がある時、初期状態から構築を行うというのはなかなか面倒です。そんなとき、新たなアカウントに最初に作成したVMを複製可能となればどうでしょうか。今回はそんなVMの複製方法についてご紹介していきます。

VMを複製する大まかな流れ

1、VMのディスクのフルスナップショットを取得します。

2、複製先Azureアカウントのストレージ アカウント項目のストレージにフルスナップショットファイルを転送します。

3、取得したスナップショットからマネージドディスク(管理ディスク)を作成します。

4、作成したマネージドディスクからVMを作成します。

1、VMのディスクのフルスナップショットを取得

1、複製元のディスクを選択します、[概要]ページの上部にある「スナップショットの作成」をクリックします。例えば下はvmtestdiskfromvhdというディスクからスナップショットを作成するスクリーンショットです。

スクリーンショット1

2、表示されている各項目に適当の内容を入力します。スナップショットの種類はフルを選択してください。

スクリーンショット2

3、「確認および作成」をクリックします。スナップショットの作成が始まります。

2、ストレージ アカウントのストレージ にフルスナップショットファイルを転送

1、複製先Azureアカウントでストレージ アカウントのディレクトリを作成します、今vmtestdiskaccountが作成されました。

スクリーンショット3

2、ディレクトリの中でファイル保存するコンテナーを作成します、今testvmcontainerが作成されました。

スクリーンショット4

3、複製元Azureアカウントのページの上部にあるクラウドシェルがあるます、クリックして下のシェルを実行します(シェルのパラメーターはコメントに従って変更する必要があります)。

スクリーンショット5
#subscription Idはスクリーンショット1のディスクの概要にあります
subscriptionId="<subscriptionId>"

#resource group はスクリーンショット1のディスクの概要にあります、実演のバリューはouttestvm_groupです
resourceGroupName=outtestvm_group

#snapshot nameはスクリーンショット2に書いてあります、 実演のバリューはtest_snapshot_240220です
snapshotName=test_snapshot_240220

#Provide Shared Access Signature (SAS) expiry duration in seconds e.g. 3600.
#Know more about SAS here: https://docs.microsoft.com/en-us/azure/storage/storage-dotnet-shared-access-signature-part-1
sasExpiryDuration=3600

#storage accountはスクリーンショット4に書いてあります、実演のバリューはvmtestdiskaccount です
storageAccountName=vmtestdiskaccount

#storage containerはスクリーンショット4に書いてあります、実演のバリューはtestvmcontainer です
storageContainerName=testvmcontainer

#keyはスクリーンショット6に書いてあります
storageAccountKey=mystorageaccountkey

#ストレージのコンテナに保存されるファイル名前です、今testvmvhdを設定します
destinationVHDFileName=testvmvhd

az account set --subscription $subscriptionId

sas=$(az snapshot grant-access --resource-group $resourceGroupName --name $snapshotName --duration-in-seconds $sasExpiryDuration --query [accessSas] -o tsv)

az storage blob copy start --destination-blob $destinationVHDFileName --destination-container $storageContainerName --account-name $storageAccountName --account-key $storageAccountKey --source-uri $sas
スクリーンショット6

上のシェルを実行すると、VHDという形式のスナップショットファイルをストレージ アカウントのコンテナに転送できます、保存されたファイアの名前はtestvmvhdです。

スクリーンショット7

3、取得したスナップショットからマネージドディスクを作成

複製先Azureアカウントのクラウドシェルで実行します、シェルのパラメーターはコメントに従って変更する必要があります。

#subscription Idは複製先Azureアカウントのsubscriptionidです
subscriptionId="<subscriptionId>"

#resource group は複製先Azureアカウントのリソースグループです、実演のバリューはouttestvm_groupです
resourceGroupName=outestvm_group

#diskNameは実演のバリューがfromtest_snapshot_240220です
diskName=fromtest_snapshot_240220

#ディスクのサイズを GB 単位で指定します。VHDファイルサイズより大きくする必要があります。
diskSize=40

# コンテナのスナップショットファイルのダウンロードURLです、取得方法はスクリーンショット8です
vhdUri=https://contosostorageaccount1.blob.core.windows.net/vhds/contosovhd123.vhd 

#二つタイプがあるます Premium_LRS と Standard_LRSです
storageType=Standard_LRS

#Provide the Azure location (e.g. westus) where Managed Disk will be located. 
#The location should be same as the location of the storage account where VHD file is stored.
#Get all the Azure location supported for your subscription using command below:
#az account list-locations
location=japaneast

#Set the context to the subscription Id where Managed Disk will be created
az account set --subscription $subscriptionId

#Create the Managed disk from the VHD file 
az disk create --resource-group $resourceGroupName --name $diskName --sku $storageType --location $location --size-gb $diskSize --source $vhdUri
スクリーンショット8

上のシェルを実行すると、下のようなマネージドディスクが作成されました。

スクリーンショット9

4、作成したマネージドディスクからVMを作成します。

1、先程作成したマネージドディスクのブレード画面で[+VMの作成]をクリックします。

2、マネージドディスクから直接VMの複製を行っているので、管理者アカウント等を指定する項目は無く、[確認および作成]をクリックして内容に不備がなければ最後に[作成]をクリックし、デプロイを開始します。

スクリーンショット10

3、デプロイが完了したら新規作成したVMの仕様を確認します。今作ったVMは複製元のVMとの内容が同様だと思います。

レファレンス
https://learn.microsoft.com/ja-jp/azure/virtual-machines/scripts/copy-snapshot-to-storage-account
https://learn.microsoft.com/ja-jp/azure/virtual-machines/scripts/create-managed-disk-from-vhd

<< KUSANAGIでLaravelを動かしてみるAmazon API GatewayとAWS Lambdaを使用して、WEB APIを作ってみます >>

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解