はじめに
Microsoft社が提供しているクラウドサービス[Azure]でVM(Virtual Machine)を1台構築した後、さらに他のアカウント新しいVMを構築する需要がある時、初期状態から構築を行うというのはなかなか面倒です。そんなとき、新たなアカウントに最初に作成したVMを複製可能となればどうでしょうか。今回はそんなVMの複製方法についてご紹介していきます。
VMを複製する大まかな流れ
1、VMのディスクのフルスナップショットを取得します。
2、複製先Azureアカウントのストレージ アカウント項目のストレージにフルスナップショットファイルを転送します。
3、取得したスナップショットからマネージドディスク(管理ディスク)を作成します。
4、作成したマネージドディスクからVMを作成します。
1、VMのディスクのフルスナップショットを取得
1、複製元のディスクを選択します、[概要]ページの上部にある「スナップショットの作成」をクリックします。例えば下はvmtestdiskfromvhdというディスクからスナップショットを作成するスクリーンショットです。
2、表示されている各項目に適当の内容を入力します。スナップショットの種類はフルを選択してください。
3、「確認および作成」をクリックします。スナップショットの作成が始まります。
2、ストレージ アカウントのストレージ にフルスナップショットファイルを転送
1、複製先Azureアカウントでストレージ アカウントのディレクトリを作成します、今vmtestdiskaccountが作成されました。
2、ディレクトリの中でファイル保存するコンテナーを作成します、今testvmcontainerが作成されました。
3、複製元Azureアカウントのページの上部にあるクラウドシェルがあるます、クリックして下のシェルを実行します(シェルのパラメーターはコメントに従って変更する必要があります)。
#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
上のシェルを実行すると、VHDという形式のスナップショットファイルをストレージ アカウントのコンテナに転送できます、保存されたファイアの名前はtestvmvhdです。
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
上のシェルを実行すると、下のようなマネージドディスクが作成されました。
4、作成したマネージドディスクからVMを作成します。
1、先程作成したマネージドディスクのブレード画面で[+VMの作成]をクリックします。
2、マネージドディスクから直接VMの複製を行っているので、管理者アカウント等を指定する項目は無く、[確認および作成]をクリックして内容に不備がなければ最後に[作成]をクリックし、デプロイを開始します。
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