PowerShell を使用した Azure VM の復元方法まとめ

はじめに

PowerShell を使用して Azure VM の復元をスクリプト化する機会があったのですが、
復元方法が複数あり、それぞれ注意すべき点があったため、整理してまとめました。

基本的には「Restore-AzRecoveryServicesBackupItem」コマンドを使用して Azure Backup によるバックアップから復元を実行するのですが、パラメータの指定方法によって復元方法が異なります。

本稿では、具体的なパラメータについては省略し、復元方法の概要と注意点について記載します。
パラメータの詳細については以下のドキュメントを参照してください。

learn.microsoft.com

「Restore-AzRecoveryServicesBackupItem」コマンドでは、以下の操作が可能です。

  • ディスクのみの復元
  • 新規 VM の作成による復元
  • 既存 VM の置換による復元

各操作について、以下に記載します。

ディスクのみの復元

コマンドの実行によりディスクが復元されますが、VM は作成されません。
Azure Portal において、以下のパラメータを指定した復元操作に相当します。

Restore configuration Create new
Restore Type Restore disks

復元されたディスクから VM を復元する方法としては以下があります。

  • ディスクの置換による VM の復元
  • テンプレートを使用した新規 VM 作成による復元

ディスクの置換による VM の復元

オリジナルのディスクをデタッチし、復元されたディスクをアタッチすることで、VM を復元できます。オリジナルの VM を残す必要がない場合は、こちらの方が簡単です。
ディスクのデタッチ、アタッチを実行する PowerShell コマンドも複雑なものではありません。

注意点

当然ながらオリジナルのディスクが残るため、適宜削除の操作を実行する必要があります。
テストで復元を実行する度にディスクが増え、課金されてしまうということになりかねないため、この点のみ注意が必要です。

テンプレートを使用した 新規 VM 作成による復元

「Restore-AzRecoveryServicesBackupItem」コマンドの実行時に指定したストレージアカウントの Blob に、VM のテンプレートファイルが作成されます。このテンプレートを使用してVM を作成する方法があります。

PowerShell では、「New-AzResourceGroupDeployment」コマンドを使用してテンプレートからのデプロイが可能です。このコマンドのパラメータにテンプレートを指定する方法は以下の2つがあります。

  1. Blob の URLを使用してテンプレートを指定する*1
  2. ローカルにダウンロードしたテンプレートのパスを指定する

1. の場合はテンプレートをダウンロードする手間がありませんが、ストレージアカウントのセキュリティ面で注意が必要になります。

learn.microsoft.com

ストレージアカウントへのパブリックアクセスについて

「New-AzResourceGroupDeployment」コマンドのパラメータに Blob の URL を指定する場合、ストレージアカウント側の設定で、[パブリックネットワークアクセス]が[すべてのネットワークから有効]である必要があります。
※[すべてのネットワークから有効]に設定する場合は、パブリックアクセスを許可することのセキュリティリスクを理解したうえで実施してください。

[選択した仮想ネットワークと IP アドレスから有効]に設定している場合、適切なIPアドレスからのアクセスを許可したとしても、1. の方法は使用できない仕様になっています(この仕様のソースは、2022年12月時点のマイクロソフト社への問い合わせに対する回答です)。

一方で、[選択した仮想ネットワークと IP アドレスから有効]に設定し、適切なIPアドレスからのアクセスを許可していれば、「Get-AzStorageBlobContent」コマンドのパラメータに Blob の URL を指定してテンプレートをダウンロードすることは可能です。
そのため、セキュリティ要件からパブリックアクセスを許可できない場合は、 2. の方法を選択することになります。

learn.microsoft.com

新規VMの作成による復元

テンプレートを使用したデプロイの手間を考えると、コマンド一発で新規 VM を作成できるのは素晴らしい機能です。また、VM を作成する際に VM 名、リソースグループ、仮想ネットワークなどを指定でき、自由度も高いです。
Azure Portal において、以下のパラメータを指定した復元操作に相当します。

Restore configuration Create new
Restore Type Create new virtual machine

注意点

比較的新しいオプションのため、古いAzモジュールでは対応していません。
少なくとも Az 8.3.0 以降であれば使用可能です。(Az 3.7.0 では使用できないことを確認しました)
また、当然ながらオリジナルの VM が残るため、適宜削除の操作が必要です。

既存VMの置換による復元

VM をシンプルに復元したいだけの場合、こちらが最も手間がかかりません。
Azure Portal において、以下のパラメータを指定した復元操作に相当します。

Restore configuration Replace existing
Restore Type Replace Disk(s)

注意点

比較的新しいオプションのため、古いAzモジュールでは対応していません。
少なくとも Az 8.3.0 以降であれば使用可能です。

おわりに

どの復元方法を選択するかは、バックアップやセキュリティ、さらには Az モジュールの要件に基づいて検討する必要があります。

Az モジュールのバージョンに制限がある場合は問題が発生することが多いため、今後注意していきたいです。

参考文献

learn.microsoft.com

*1:※ Blob の URL を使用する際は、Shared Access Signature(SAS) トークンを使用しますが、ここでは説明を割愛します。

執筆担当者プロフィール
森野 祥平

森野 祥平(日本ビジネスシステムズ株式会社)

主にAzureに携わっています。好きなアーティストはB'zです。

担当記事一覧