<目次>
(1) AzureのARMテンプレートをPowerShellからデプロイする手順をご紹介
(1-1) Azure Resouce Managerとは?
(1-2) ARMテンプレートとは?
(1-3) ARMテンプレートをデプロイするためのツール準備(Azure PowerShell)
(1-4) ARMテンプレートをデプロイする手順
(1-5) ARMテンプレートの作成を補助するツール等
(1) AzureのARMテンプレートをPowerShellからデプロイする手順をご紹介
Azureではリソースを作成する際に「ARMテンプレート」を使う事で、画面からオペレーションする事なく、素早く大量にリソースを作成する事が可能になります。
(1-1) Azure Resouce Managerとは?
「Azure Resouce Manager」(以降「ARM」と記述)はAzureのリソースを集中管理するためのサービスです。
(1-2) ARMテンプレートとは?
冒頭でも少し触れましたが「ARMテンプレート」はリソースを作成する際に事前に用意した「テンプレート」を使う事で、画面操作をする事なく、素早く大量にリソースを作成できる機能になります。
「ARMテンプレート」はJSON形式で表現されており、以下のような構成のイメージです。
(例)
{ "$schema":"https://schema.management.azure.com/schemas/YYYY-MM-DD/deploymentTemplate.json#", "contentVersion":"1.0.0.0", "parameters":{}, "variables":{}, "resouces":[ { /* リソース1の定義(例:仮想マシン) */ }, { /* リソース2の定義(例:ストレージ) */ }, { /* リソース3の定義(例:AppService */ }, /* ~中略~ */ { /* リソースNの定義 */ } ], "outputs":{}, "functions":[] }
以下はVisual Studioで作成した空のARMテンプレートの例です。
(図121)空のテンプレートの例
●テンプレートの各項目について
テンプレートに記載する内容(項目)は作りたいリソースの種類(仮想マシン、ストレージ、仮想ネットワークなど)によって当然異なってきますが、いくつかの必須項目もあり、どのテンプレートにも共通する項目としては次のようなものがあります。
(表)
$schema | ●必須 | テンプレートにて利用可能なプロパティ(≒属性、項目)を指定する項目です。スキーマには日付が入っており、スキーマのバージョンを表しています。 |
contentVersion | ●必須 | テンプレートのバージョンを指定するためのプロパティです。 |
parameters | 任意 | テンプレート実行時の入力パラメータを与える際に使います。 リソース毎に共有できない値(ID、パスワード、マシン名)等の値をテンプレートから外だしする等の目的で使用します。 |
variables | 任意 | 動的な計算を行い、その計算結果をテンプレート実行時の入力パラメータとして与える際に使います。 |
resouces | ●必須 | 各リソースの定義を記述する、テンプレートで最も重要となる部分です。JSON形式の「配列」で表現されており、各要素が1つのリソースに対応しています。これにより、1つのテンプレートで複数のリソースを同時に作成する事ができます。 |
outputs | 任意 | テンプレートの実行結果から値を受け取る(戻り値のようなもの)際に使います。 |
functions | 任意 | 複数のテンプレートで共通に使う処理があれば、外出ししてこのfunctionsに指定する事ができます。 |
(1-3) ARMテンプレートをデプロイするためのツール準備(Azure PowerShell)
今回のデプロイはご自身のクライアント端末に入っているPowerShellから行いますが、そのためにはAzure用のモジュール(Azure PowerShellの「Az」モジュール)を予めインストールしておく必要があります。
(1-4) ARMテンプレートをデプロイする手順
Power Shellの準備が出来たら、いよいよ実際のテンプレートを作って、それをデプロイする手順に入ります。
●STEP1:ARMテンプレートを準備
ARMテンプレートは上記でご紹介した基本の雛形に追記をしていきます。今回の例では「ストレージアカウント」を作成しますので、以下の内容を追記します。
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [ { "name":"rainbowstorageaccount1" "type":"Microsoft.Storage/storageAccounts", "apiVersion": "2021-01-01", "location":"[resouceGroup().location]", "sku": { "name": "Standard_RAGRS", "tier": "Standard" }, "kind":"StorageV2" "properties":{ "accessTier":"Hot" } } ], "outputs":{}, "functions":[] }
●STEP2:デプロイを実行するPowerShellコマンドレットの準備
# リージョンの変数を定義 $location = 'japaneast' # リソースグループの変数を定義 $rgName = 'RainbowResourceGroup2' # リソースグループを作成(引数にリージョンとリソースを付与) New-AzResouceGroup -Name $rgName -Location $location # リソースのデプロイ New-AzResouceGroupDeployment ` -Name ‘create-new-storage’ ` -ResouceGroupName $rgName ` -TemplateFile C:\Temp\Azure\Storage\StorageBasic\template.json ` -TemplateParameterFile C:\Temp\Azure\Storage\StorageBasic\parameters.json `
(図132)
(表)コマンドレットの説明
コマンドレット | 説明 |
New-AzResouceGroup | 「リソースグループ」を作成するコマンドレットです。今回使用したオプションは次の通りです。
(オプション) |
New-AzResouceGroupDeployment | 「リソース」をデプロイるコマンドレットです。今回使用したオプションは次の通りです。
(オプション) |
●STEP3:Azure PowerShellを開いてログイン
●STEP4:準備したPowerShellの実行
●STEP5:結果確認
(1-5) ARMテンプレートの作成を補助するツール等
ここまで読んで頂いた方は、「ARMテンプレートに書く内容ってどうやったら分かるの?」とか「素早くテンプレートを作成する方法はあるか?」といった様々な疑問を持たれたかも知れません。 以下、Tipsを2つほどご紹介します。
●①テンプレートの記載内容の確認方法
・リソースの左メニューから「テンプレートのエクスポート」ブレードを選択
(図151)
・上段メニューから「ダウンロード」や「デプロイ」といった操作が可能です。
(図152)
●②テンプレートを素早く作成する方法
Visual Studio CodeのAzure Resouce Manager(ARM) Toolsを使うと、テンプレートを素早く作成する事ができます。
https://marketplace.visualstudio.com/items?itemName=msazurermtools.azurerm-vscode-tools
(図153)