ARMテンプレートのダウンロードからAzure VMのカスタムデプロイまでやってみた

2019-11-27ARM Template,Azure,Virtual Machine

Azure Portalでリソースをデプロイする際、作成前の確認画面にで”Automationのテンプレートをダウンロードする”というリンクがあります。
リンクをクリックするとリソースをデプロイする為のAzure ARMテンプレートファイルを作成する事が出来ます。

このダウンロードしたARMテンプレートを使って同じリソースを再度デプロイする事が出来ます。

今回はAzure VM(仮想マシン)を例にダウンロードしたARMテンプレートを使って同じ構成で再デプロイ(カスタムデプロイ)を試してみました。
またテンプレート機能を使ったデプロイも併せて試してみました。

※2022年7月に記事を刷新しました。

スポンサーリンク

Azure Resource Manger(ARM)テンプレートについて

Azure Resource Manger(ARM)て何

Azure Resource Manager は、Azure のデプロイおよび管理サービスになります。
Azureのリソースを定義するレイヤー(層)で一貫性を担保するものと記載されています。

Azure Resource Manager

自分は、Azure PortalやAPI経由でリソースを作成する要求を受けて作成するAzureの機能と理解しています。

Azure Resource Manger(ARM)テンプレートって何

Azure上のリソースを定義したJSONファイルになります。

ARM テンプレートとは

ARMテンプレートを使うとAzure上にデプロイするリソースをコードとして定義出来ます。
ARMテンプレートを使うと同じリソースを反復して作成する事が出来ます。

Azure Resource Manger(ARM)テンプレートのエクスポート方法

ARMテンプレートをエクスポートする方法にはいくつかの方法があります。
Azureリソース状態(構成)を示すARMテンプレートとデプロイメントに関するARMテンプレートがあります。

エクスポート方法 出力対象 出力内容
リソースグループのリソースメニューにあるテンプレートのエクスポートを使う リソースグループ内にあるリソースに関するARMテンプレート リソース状態(構成)に関するARMテンプレート
各リソースのリソースメニューにあるテンプレートのエクスポートを使う 該当リソースに関するARMテンプレートテンプレート リソース状態(構成)に関するARMテンプレート
リソースグループのリソースメニューにあるデプロイを使う リソースデプロイ時のARMテンプレート
(過去にリソースグループ内でデプロイした内容)
デプロイメントに関するARMテンプレート
Automationのテンプレートをダウンロードするを使う リソースデプロイ時のARMテンプレート デプロイメントに関するARMテンプレート

今回は”Automationのテンプレートをダウンロードする”のリンクを使ってエクスポートしたARMテンプレートを使って仮想マシンをデプロイします。

リソースグループのデプロイからARMテンプレートをダウンロードする方法についてはこちらで確認しています。
併せて見て頂けると大変有難いです。

PowerShellを使ったARMテンプレートについてはこちらに纏めています。

ーーー

Azure Resource Manger(ARM)テンプレートのエクスポートからカスタムデプロイまで

今回は仮想マシン作成確認画面から”Automationのテンプレートをダウンロードする”を使ってARMテンプレートをダウンロードしてみます。

”Automationのテンプレートをダウンロードする”を使ってみる

”Automationのテンプレートをダウンロードする”を使ってARMテンプレートをエクスポートしてみます。

 
仮想マシンをデプロイ時の確認画面です。
”Automationのテンプレートをダウンロードする”のリンクを選択します。

テンプレートが表示されます。
テンプレートのタブとパラメータのタブがあります。
テンプレートのタブにはリソース自体のARMテンプレートが表示されます。

※スクリプトのタブはリンクになるので割愛します。

パラメータのタブです。
パラメータに関するARMテンプレートが表示されます。
ダウンロードを選択するとARMテンプレートがZIP形式でダウンロードされます。

template.jsonとparameters.jsonの2ファイルがダウンロードされる

ダウンロードされたZIPには2つのファイルが含まれます。

  • template.json
    • リソース作成内容を定義するARMテンプレート
    • 今回の場合は仮想マシン、パブリックIP、ネットワークインターフェースのリソース定義が含まれます
  • parameters.json
    • template.jsonのパラメータを定義するARMテンプレート
    • 今回の場合は仮想マシン名、パブリックIP名、ネットワークインターフェース名など各リソースのパラメータが含まれます

カスタムテンプレートのデプロイ

ARMテンプレートを使ったデプロイにはいくつか方法があります。
今回はカスタムテンプレートのデプロイを使ってやってみます。
test-vm-02デプロイ時にダウンロードしたARMテンプレートをtest-vm-03にしてデプロイする想定です。

カスタムテンプレートのデプロイ
カスタムテンプレートのデプロイを選択します。
テンプレートの選択タブが表示されます。
エディターで独自のテンプレートを作成するを選択します。
テンプレートの編集画面が表示されます。
ファイルの読み込みを選択します。
template.jsonを選択します。
仮想マシンのARMテンプレートが読み込まれます。
保存を選択します。
基本のタブが表示されます。
この時点では仮想マシンのパラメータは設定されていません。
パラメータの編集を選択します。
パラメーターの編集が表示されます。
この時点では各パラメータの設定値がnullになっています。
ファイルの読み込みを選択します。
parameters.jsonを選択します。
仮想マシンのパラメータが読み込まれます。
保存を選択します。
基本タブに戻ります。
インスタンスの詳細に設定値が入っている事が確認出来ます。

デプロイ先のリソースグループを選択します。

※プロジェクトの詳細にあるリソースグループは個別に指定が必要です。

必要に応じてインスタンスの詳細でパラメータを変更します。
パスワードは再入力します。
確認と作成を選択します。

※ダウンロードしたデプロイのパラメータが入っています。このままデプロイすると同じ仮想マシン名でデプロイされてしまいます。
※今回はtest-vm-02をtest-vm-03にしてデプロイする想定にしています。

カスタムテンプレートの確認画面が表示されます。
作成を選択します。

作成されたリソースを確認

作成されたリソースを比較してみます。
test-vm-02がAzure Portalを使ってデプロイしたAzure VMになります。
test-vm-03がtest-vm-02デプロイ時のARMテンプレートを使ってデプロイしたAzure VMになります。
同じ内容でデプロイされている事が確認出来ます。

デプロイ後の比較

テンプレートのサービスを使って仮想マシンをデプロイ

Azureサービスにテンプレートがあります。
これはリソースのARMテンプレートをAzure上に保管しておくサービスになります。

※2022年7月現在はテンプレートの仕様の方が推奨となっています。

テンプレートに仮想マシンARMテンプレートを保管

ダウンロードした仮想マシンのARMテンプレートを登録します。

テンプレートに登録
テンプレートを選択します。
作成を選択します。
今回はVM-Templateと言う名前で保管します。
説明には後でわかるような内容を記載します。
ARMテンプレートの登録になります。
ダウンロードしたtemplate.jsonの内容を貼り付けます。
追加を選択します。
テンプレートの登録はこれで完了です。

テンプレートに登録された内容を使ってデプロイ

登録したテンプレートを使って仮想マシンをデプロイします。

テンプレートを使ってデプロイ
登録したテンプレートを選択します。
デプロイを選択します。
カスタムデプロイ画面になります。
パラメータの編集を選択します。
ファイルの読み込みを選択します。
保存しておいたparameters.jsonを読み込みます。
パラメータを確認したら保存します。
リソースグループを選択します。
変更する部分のパラメータを設定します。

使用条件の確認なります。
内容を確認後、同意するにチェックを入れ購入を選択します。

仮想マシンのデプロイが開始します。

最後に

ARMテンプレートを使った仮想マシンのデプロイをやってみました。
ARMテンプレートを使うと簡単に同じ内容のリソースをデプロイする事が出来ました。

今回は仮想マシンですが他のAzureリソースでも同様にダウンロードからカスタムデプロイまでする事が出来ます。
検証環境などで同じリソースを削除、作成する場合や、複数台仮想マシンをデプロイする場合などにとても便利かと思います。

Terraform利用した仮想マシンのデプロイはこちら。

PowerShellを使ったARMテンプレートエクスポートはこちらに纏めています。

スポンサーリンク