こんにちは、アーキテクトのやまぱんです。
補足コメントや質問は是非お願いします🥺!
間違ってたら優しく教えてください!
以前 Azure Compute Galleryを使って別テナントにAzure VM を複製する方法を書きました。
今回は Azcopy を使って別テナントに Azure VM を複製する方法を紹介します。
*一部 SAS (Shared Access Signature) の情報やSubscription IDなどはモザイクかけたり、文字を"X"に置き換えて記載しています。
2024/03/06(水) : 追記
本記事の内容だと、8TiB 以上のマネージドディスクのコピーはできないのでその場合に方法を下記記事に記載しています。
https://qiita.com/aktsmm/items/ad416cbeab3be6adb5cc
おおまかな流れ
おおまかな流れとしては下記の 1 ~ 5 です。
本記事では 2 ~ 4 の部分にフォーカスして紹介します。
1.ソーステナントの対象 VM のディスクのスナップショットを取る
フルスナップショットで取得してください。
手順は下記の記事を参考にしてください。
2.ソーステナントにある 1.で作ったスナップショットからエクスポート / SAS を発行する
3.ターゲットテナントのストレージ アカウント(コンテナー) のSAS を発行する
4.Azcopy でソーステナントからターゲットテナントスナップショットをコピー(VHD化)する
5.コピーされた VHD から Azure VM を作成
具体的な手順は下記の記事をご覧ください
具体的な手順
■環境ざっくり情報■
ソーステナント側
Azure VM があって、そのディスクのフルスナップショットがあります。
フルスナップショットの名前は Snapshot-VM-origin-full
ターゲットテナント側
ストレージ アカウントがあってその中に movedvhd というコンテナーがあります。
1. ソーステナントの対象 VM のディスクのスナップショットを取る
フルスナップショットで取得してください。
(追記:増分スナップショットでも可能だという声も聞きましたが、未検証です)
手順は下記の記事を参考にしてください。
2. ソーステナントにある 1.で作ったスナップショットからエクスポート / SASを発行する
SAS URL の有効な期間は適宜環境に合わせて設定してください。
ソース SAS をメモしておきます。
ソースSAS:https://md-n01chXXXXXXt.z14.blob.storage.azure.net/ltmj2bpl4m0m/abcd?sv=20XX-03-28&sr=b&si=f2bb0XXe-0XXX-43c5-99f1-e7XXXXXXXd1e&sig=NmDHMPGtCT6XXXXXjHBEzdnFAXXXXXXXXXXXXXXXXXXiw%3D
3. ターゲットテナントのストレージ アカウント(コンテナー) のSAS を発行する
ストレージ アカウントがない場合はストレージ アカウントを作成し、コンテナーの作成をしてください。
ここではすでにストレージ アカウントとコンテナーを作成している前提です。
今回はコンテナー名は movedvhd で作成しています。
対象のストレージ アカウント → コンテナー → 対象のコンテナー(今回は movedvhd) → 左ペインの「共有アクセストークン」から下記のように SAS を発行します。
権限は「読み取り」「追加」「作成」「書き込み」 を設定して発行します。
有効時間は適宜適切に設定してください。
[BLOB SAS URL] から ターゲット SASの元 をメモしておきます。
ターゲットSASの元[BLOB SAS URL] :https://rXXXXsXXXg.blob.core.windows.net/movedvhd?sp=racw&st=2023-XX-27T05:21:48Z&XX=XXXX-01-30T13:21:48Z&spr=htXXX&sv=XXXX-11-02&sr=c&sig=EUzXXXXXXXXXXXXXXXXivkHdvFvWpNukArUklcOLJls%3D
今回 movedvhd コンテナー → の下にfull.vhdという名前で VHDをコピーします。
そのため、"ターゲットSASの元" の "movedvhd" を "movedvhd/fulltest.vhd" に置き換えます。
そうしてできたターゲット SAS が以下です。
ターゲットSAS:https://rXXXXsXXXg.blob.core.windows.net/movedvhd/fulltest.vhd?sp=racw&st=2023-XX-27T05:21:48Z&XX=XXXX-01-30T13:21:48Z&spr=htXXX&sv=XXXX-11-02&sr=c&sig=EUzXXXXXXXXXXXXXXXXivkHdvFvWpNukArUklcOLJls%3D
4. Azcopy でソーステナントからターゲットテナントスナップショットをコピー(VHD化)する
下記のコマンドで実行します。
なお、Azcopy はあらかじめインストールしパスを通しています。
2024/01/11(木) 追記:
コマンドの実行環境として Azure Portal (Azure Portal から実施できるコマンドライン機能)で Azcopy の場合に失敗する例を聞いております。
- Cloud Shell で試してエラーがでてダメだった場合、一度クライアントPCにインストールした最新の Azcopy を使ってみてください。
- また逆にクライアント OS にインストールした Azcopy でうまくいかない場合は、Cloud Shell で実施して改善するかご確認ください。
azcopy copy ‘<ソース SAS>’ ‘<ターゲットSAS>’
今回の例に倣えば下記のようになります。
azcopy copy ‘https://md-n01chXXXXXXt.z14.blob.storage.azure.net/ltmj2bpl4m0m/abcd?sv=20XX-03-28&sr=b&si=f2bb0XXe-0XXX-43c5-99f1-e7XXXXXXXd1e&sig=NmDHMPGtCT6XXXXXjHBEzdnFAXXXXXXXXXXXXXXXXXXiw%3D’ ‘https://rXXXXsXXXg.blob.core.windows.net/movedvhd/fulltest.vhd?sp=racw&st=2023-XX-27T05:21:48Z&XX=XXXX-01-30T13:21:48Z&spr=htXXX&sv=XXXX-11-02&sr=c&sig=EUzXXXXXXXXXXXXXXXXivkHdvFvWpNukArUklcOLJls%3D’
実行完了
ターゲットテナントのストレージ アカウント内に想定した VHD ができている事を確認
5. コピーされた VHD から Azure VM を作成
具体的な手順は下記の記事をご覧ください.
無事テナントをまたいだ Azure VM の複製ができました!✨
もちろんテナントを跨がない場合でも使えますが、同一テナントの場合や同一Subscriptionの場合はもっと簡単な方法があるかと思います。
他のテナントをまたいだAzure VM の複製方法
その他の方法としては以前下記の記事を書きました。
Azure Compute Gallery を使う場合に対するメリット
今回の方法では SAS さえ発行してしまえば Azure 権限が不要、 Azure にログインする必要がないことです。別途 Azcopy をインストールする必要はあります。
Azcopy について(補足)
Azcopy のダウンロード先
また、今回はパスを通していましたが、パスを通していない場合はazcopy の exe ファイルがある場所に移動して azcopy を実行してください
参考までに、こちらの記事はパスを通さないで実行されてます。
また、パスを通しの例。
パスを通すことでどの場所からでも今回のようなコマンドで Azcopy を実行できます。
参考
- ストレージ アカウント のページ BLOB の制限について