管理ディスクのスナップショットから仮想マシンを複製する
内容
Managed Diskを利用している仮想マシンを同じリージョンに複製する手順をまとめます。異なるリージョンへの複製は参考サイトにも記載されていますが出来ません。検証したら『az disk create』で失敗しました。また本手順はサブスクリプションを跨いで複製することも想定してAzure Blob Storageへのコピーを手順に追加しています。本当に可能なのか近日中に検証する予定です(なので参考程度にしてください。)。単純にスナップショットから仮想マシンを複製するだけならもっと簡単にできます。参考サイトに手順が記載されていますので、そちらを参照してください。
ディスクのスナップショットを取得
管理ポータルの仮想マシンからディスクを選択します。
ディスク一覧が表示されるので取得したいディスクを選んで、スナップショット作成ボタンを押します。
必要な情報を入力して作成します。アカウントの種類は管理ディスクの種類に合わせたほうが良いです。
これでスナップショットが作成できました。
スナップショットからディスクをコピー
スナップショットからディスクをBlobとしてAzure Blob Storageに複製します。
コピー用のAzure Blob Storageを作成
仮想マシンと同じ東日本リージョンに作成します。
またコンテナも同時に作成しておきます。
スナップショットのSASを取得
次のコードをクラウドシェルで実行します。
$sas=$(az snapshot grant-access --resource-group RG-VM --name snapshot-vmtest1981_OsDisk_1_1c4d158fdc434717b10835305ff5f749 --duration-in-seconds 3600 --query [accessSas] -o tsv)
ローカル環境で実行したらSASが空だったのでクラウドシェルでの実行を薦めます。空なのは不具合が原因のようです。ローカルで実行したい場合は参考にしてください。
grant-azurermsnapshotaccess returning null accesssas · Issue #5956 · Azure/azure-powershell · GitHub
Azure Blob Storageにディスクをコピー
次のコードをクラウドシェルで実行します。$sasには前回実行した結果のURL + SASが格納されている前提です。
az storage blob copy start --destination-blob <スナップショットのコピー後のファイル名> --destination-container <Blob Storage コンテナ名> --account-name <Blob Storage アカウント名> --account-key <Blob Storage アカウントキー> --source-uri $sas
ディスクコピーの進捗を確認
az storage blob copy startは実行後にバックエンドで処理されるので、都度進捗を確認する必要があります。
以下のコードで確認できます。statusがpendigからsuccessに変わればコピー成功です。
az storage blob show -n <スナップショットのコピー後のファイル名>--account-name <Blob Storage アカウント名>--account-key <Blob Storage アカウントキー> -c <Blob Storage コンテナ名>
コピー完了したらコンテナ配下にファイルが作成されていることが確認できます。
コピーしたファイルから管理ディスクを作成
次のコードで管理ディスクを作成できます。
az disk create --resource-group RG-VM --name hogehogehoge --source https://blob20190317.blob.core.windows.net/diskcontainer/snapshotfile --sku Premium_LRS
sourceに指定するURLは管理ポータルから確認できます。
コードを実行するとhogehogehogeという名前で管理ディスクが作成されます。
管理ディスクから仮想マシンを作成
次のコードで仮想マシンを作成します。
az vm create --resource-group RG-VM --name myVM2 --attach-os-disk hogehogehoge --os-type windows
MyVM2とう名前で仮想マシンが作成されました。
複製した仮想マシンに接続
作成後は複製したマシンと同じユーザー/パスワードでRDPで接続できました。