ARM の仮想マシンをブラウザの操作のみを使用し、イメージのキャプチャと展開をする際の流れを軽くまとめてみたいと思います。
基本的な流れは、以下がとても参考になります。
Step by Step: How to capture your own custom virtual machine image under Azure Resource Manager
Azure Resource Manager で作成した仮想マシンをキャプチャーする
仮想マシンの展開ですが、
- generalized した、一般化したイメージ
- specialized な状態の、一般化していないイメージ
の 2 種類の方法があるかと思いますが、今回は「generalized した、一般化したイメージ」にしています。
この辺の話は、Microsoft Azure IaaS リファレンス アーキテクチャ ガイド を見ていただくと良いかと。
キャプチャする環境については、以下のコマンドを実行し、シャットダウンした状態としています。
c:\windows\system32\Sysprep\sysprep.exe /oobe /generalize /mode:vm /shutdown
sysprep が終わったら、仮想マシンを停止して、イメージをキャプチャしたいと思います。
イメージのキャプチャは ARM Explorer から実施することができます。
# 現状は、ポータルのリソースエクスプローラーからは、実施することはできません。
ARM Explorer からのキャプチャですが、最初に画面上部の操作を「Read Only」→「Read/Write」に変更します。
次に、仮想マシンが含まれるサブスクリプションの、
- 「resourceGroups」→「リソースグループ名」→「providers」→「Microsoft.Compute」→「virtualMachines」→「仮想マシン名」
を選択し、「Actions (POST,DELETE)」タブをクリックします。
そうすると、REST API をコールできますので、「capter」の乱の各項目で必要となるを入力します。
今回は以下のような項目を設定しています。
{ "vhdPrefix": "armextensionimage", "destinationContainerName": "armextensioncaptureimage", "overwriteVhds": "false" }
項目が設定できたら「capture」をクリックしてみます。
この状態では、以下のようなエラーになるかと。
{ "error": { "code": "OperationNotAllowed", "message": "Capture operation cannot be completed because the VM is not generalized." } }
「capture」する前ですが、仮想マシンを「generalize」する必要があります。
これも ARM Explorer から「generalize」をクリックすることで実行することができます。
「generalize」した後に「capture」することで、イメージをキャプチャすることができます。
「generalize」した仮想マシンについては起動ができなくなりますので、実行するときには注意しておいた方がよいかと。
キャプチャすると、VHD が入っていたストレージアカウントにキャプチャしたイメージが取得されます。
キャプチャする前は以下のようになっていますが、
キャプチャした後は以下のように、「system/Microsoft.Compute/Images/<destinationContainerName>」の下に、キャプチャしたイメージが取得されます。
キャプチャした VHD 以外に、展開するための JSON も併せて作成が行われます。
この JSON が、キャプチャしたイメージ使用して仮想マシンを作成するためのテンプレートとなります。
この JSON を使用して、「テンプレートのデプロイ」を行います。
「テンプレートの編集」で、JSON を張りつけて「パラメーターの編集」からパラメーターを入力します。
「NETWORKINTERFACEID」には、仮想マシンに割り当てる NIC の ID を設定します。
# 「/subscriptions/<サブスクリプション ID>/resourceGroups/ARMExtension/providers/Microsoft.Network/networkInterfaces/armextension727」というような ID を割り当てる必要があります。
VHD の URI については、固定で設定されているため、複数の環境を作成する場合には、いくつかの設定は変更する必要がありますが、テンプレート展開のベースとして使用できるかと。