Azure VMイメージのリージョン間コピーについて
概要
- Azure 勉強中の新川です。今回は、Azure VM の イメージを別リージョンにコピーする方法について、記載します。
VMイメージの課題
- Azure では、カスタマイズしたVM(Virtual Machine)のイメージを取得して新しいVM を起動させたい場合、VM を一般化してイメージリソースへ変換します。しかし、このイメージは同一のリージョン内でしか利用できません。
- DR環境の構築など別リージョンに同一のVMを起動させたいケースがあると思いますので、本記事の方法を参考にして下さい。
リージョン間コピーの実現方法
- 当初、Shared Image Galleryの利用を試みましたが実現できず、az image copyコマンドで解決しました。
イメージを組織内で共有(Shared Image)
- Shared Image Gallery は組織内でイメージの共有を可能とするサービスです。後述の方法により、VMを元にShared Image Galleryにイメージの作成を行いました。しかし、Shared Image Galleryの利用によってイメージのレプリケーションは可能ですが、レプリケーション以外のリージョンでは次に示すエラーとなり、利用できませんでした。
Shared Image Galleryはレプリケーション リージョンしか使えない
- 「東日本」のリージョンに作成したイメージを指定して、「米国西部 2」のリージョンにVM の起動を試みましたが、下記のエラーが出力されました。残念ながら、この方法はレプリケーションのリージョンしか使用できません。
- VMは、このイメージのレプリケーション リージョンでのみ作成できます: '東日本’
- よって、Shared Image Gallery の利用は、ここで諦めました。
イメージを別リージョンにコピー(az image copy)
- Azure CLI の拡張機能 image-copy-extension を利用することで、別リージョンにイメージをコピーすることが可能になります。
Azure CLI に拡張機能を追加する
- 先ず、PowerShell を起動します。
- 下記のコマンドを実行し、提供されている拡張機能を確認します。「Installed」が「False」になっており、image-copy-extension は未インストールです。
- az extension list-available –output table
- 次に、下記のコマンドを実行し、拡張機能を追加します。「Installed」が「True」に変わり、image-copy-extension がインストールされました。
- az extension add –name image-copy-extension
PS C:\Users\niikawa> az extension list-available --output table
Name Version Summary Preview Experimental Installed
------------------------------ --------- ----------------------------------------------------------------------------------------------------------------- --------- -------------- -----------
** 省略 **
image-copy-extension 0.2.8 Support for copying managed vm images between regions False False False
** 省略 **
PS C:\Users\niikawa> az extension add --name image-copy-extension
PS C:\Users\niikawa> az extension list-available --output table
Name Version Summary Preview Experimental Installed
------------------------------ --------- ----------------------------------------------------------------------------------------------------------------- --------- -------------- -----------
** 省略 **
image-copy-extension 0.2.8 Support for copying managed vm images between regions False False True
** 省略 **
az image copyコマンドで別リージョンへコピーする
- az image copyコマンドを使用して、別リージョンへイメージをコピーします。ソースにはイメージ or VMが指定できます。VMを指定する場合は、あらかじめ一般化されている必要があります。
az image copy --source-object-name
--source-resource-group
--target-location
--target-resource-group
[--cleanup]
[--export-as-snapshot]
[--parallel-degree]
[--source-type {image, vm}]
[--tags]
[--target-name]
[--target-subscription]
[--temporary-resource-group-name]
[--timeout]
- 1つ目の例では、「東日本」リージョンのリソースグループ「niikawa-vmss-test-rg」から「米国西部 2」リージョンのリソースグループ「niikawa-vmss-test-dr」にイメージをコピーしています。
PS C:\Users\niikawa> az image copy --source-resource-group niikawa-vmss-test-rg --source-object-name niikawa-vmss-test-image-20201119.0 --target-location westus2 --target-resource-group niikawa-vmss-test-dr
Getting OS disk ID of the source VM/image
Creating source snapshot
Getting sas url for the source snapshot with timeout: 3600 seconds
Creating resource group: image-copy-rg
Target location count: 1
westus2 - Creating target storage account (can be slow sometimes)
westus2 - Creating container in the target storage account
westus2 - Copying blob to target storage account
westus2 - Copy progress: 0%
westus2 - Copy progress: 1%
westus2 - Copy progress: 2%
westus2 - Copy progress: 3%
westus2 - Copy progress: 4%
westus2 - Copy progress: 22%
westus2 - Copy progress: 26%
westus2 - Copy progress: 27%
westus2 - Copy progress: 28%
westus2 - Copy progress: 29%
westus2 - Copy progress: 32%
westus2 - Copy progress: 50%
westus2 - Copy progress: 51%
westus2 - Copy progress: 52%
westus2 - Copy progress: 53%
westus2 - Copy progress: 54%
westus2 - Copy progress: 75%
westus2 - Copy progress: 76%
westus2 - Copy progress: 77%
westus2 - Copy progress: 97%
westus2 - Copy progress: 99%
westus2 - Copy progress: 100%
westus2 - Copy time: 0:12:16.495523
westus2 - Creating snapshot in target region from the copied blob
westus2 - Creating final image
- 以下の通り、「米国西部 2」リージョンへイメージがコピーできました。
- 1つ目のコマンドの場合、az image copyコマンドにcleanupオプションを付けていないため、イメージのコピーに使われた一時リソース「image-copy-rg」が残りました。
- 2つ目の例では、cleanupオプションを付けて、「東日本」リージョンのリソースグループ「niikawa-vmss-test-rg」から「米国中部」リージョンのリソースグループ「niikawa-vmss-test-dr2」にイメージをコピーしています。
PS C:\Users\niikawa> az image copy --source-resource-group niikawa-vmss-test-rg --source-object-name niikawa-vmss-test-image-20201119.0 --target-location centralus --target-resource-group niikawa-vmss-test-dr2 --cleanup
Getting OS disk ID of the source VM/image
Creating source snapshot
Getting sas url for the source snapshot with timeout: 3600 seconds
Creating resource group: image-copy-rg
Target location count: 1
Creating resource group: niikawa-vmss-test-dr2
centralus - Creating target storage account (can be slow sometimes)
centralus - Creating container in the target storage account
centralus - Copying blob to target storage account
centralus - Copy progress: 0%
centralus - Copy progress: 2%
centralus - Copy progress: 3%
centralus - Copy progress: 4%
centralus - Copy progress: 20%
centralus - Copy progress: 26%
centralus - Copy progress: 27%
centralus - Copy progress: 28%
centralus - Copy progress: 29%
centralus - Copy progress: 30%
centralus - Copy progress: 50%
centralus - Copy progress: 51%
centralus - Copy progress: 52%
centralus - Copy progress: 53%
centralus - Copy progress: 59%
centralus - Copy progress: 75%
centralus - Copy progress: 76%
centralus - Copy progress: 77%
centralus - Copy progress: 94%
centralus - Copy progress: 99%
centralus - Copy progress: 100%
centralus - Copy time: 0:06:44.723457
centralus - Creating snapshot in target region from the copied blob
centralus - Creating final image
Deleting transient resources
- 「米国中部」リージョンへイメージがコピーできました。
- 2つ目の例では、イメージのコピーに使われた一時リソース「image-copy-rg」は、自動で削除されました。
- なお、az image copyコマンド実行時に一時リソース「image-copy-rg」が存在する場合は、az image copyコマンドはエラーとなります。
参考) VM のイメージを取得する方法
イメージをマイアイテムとして管理する
- Virtual Machines にて、ソースVM を選択します。下記画面で示す “キャプチャ" を押して、イメージの作成に進みます。
- イメージの作成で、次の値を選択 or 入力します。
- Shared Image Gallery にイメージを共有する → 今回は"いいえ、マネージド イメージのみをキャプチャします。“を選択
- イメージの作成後、この仮想マシンを自動的に削除します → “有効"
- ゾーンの回復性 → “有効"
- 名前 → 例:niikawa-vmss-test-image-20201116.0
- 指定したパラメータに問題なければ、[作成]を選択して、OSイメージを作成します。
- 更新用の OSイメージが作成できました。先ほどオプションで指定の通り、ソースVM も削除されています。
Shared Image Galleryにイメージを作成するには
- 今回は利用しませんでしたが、イメージをShared Image Galleryで管理することも可能です。以下、Shared Image Galleryを使用する場合のイメージ作成方法です。詳しい説明は、省略します。
参考資料
- Azure CLIの拡張機能およびコマンドの詳細は、下記ドキュメントを参照ください。