share facebook facebook facebook twitter twitter menu hatena pocket slack

2021.05.24 MON

Azure VMイメージのリージョン間コピーについて

新川 貴章

WRITTEN BY 新川 貴章

概要

  • 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の拡張機能およびコマンドの詳細は、下記ドキュメントを参照ください。
Using extensions with the Azure CLI

元記事はこちら

Azure VMイメージのリージョン間コピーについて

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。