AzureTableau 

Azure Resource Manager テンプレート入門と作成

はじめに

Azure で仮想マシンやネットワークの構築をする手段は色々あります。よく利用されるのはポータル、PowerShell、CLIからでしょうか。

今回は上記ではないAzure Resource Maneger テンプレートを用いた構築のお話をさせていただきます。

Azure Resource Manager テンプレートとは

リソースのデプロイと変更を行うJSON形式のテンプレートファイルであり、このようなコードを用いた仮想マシンやネットワークの構築は、Infrastructure as a Codeとも言われてます。

それでは中身を見ていきましょう。

テンプレートの形式


{
        "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "",
        "parameters": { },
        "variables": { },
        "resources": [ ],
        "outputs": { }
}

テンプレートの記述は "<key-name>" : "<value>" といった形で記述していきます。

また、parameters, variables, resources, outputsといった大きな括りは「セクション」と呼ばれています。

約束事

・大文字と小文字は区別されています。

・1つ目の単語の頭文字は小文字、2つ目以降の単語の頭文字は大文字です。

(例) storageAccounts

次に中身の説明をしていきます。

パラメータ

$schma(必須)

JSONファイルの場所を記載します。定型文による決まり文句です。

contentVersion(必須)

1.0.0.0などを入力。こちらも定型文です。

parameters(任意)

決めうちの場合は不要となります。

ストレージアカウント名など、テンプレートのデプロイ時にユーザーからの入力を要求したい場合は記述の必要があります。

variables(任意)

こちらはparametersとは違い、内部用の変数を定義するセクションです。

resources(必須)

デプロイや変更するリソースを定義するセクションです。仮想マシンやストレージを作成する時などに記述します。

apiVersion

REST-APIのversionを記述します。

SKU

ストレージアカウントの冗長構成を選びます。

現在の選択肢として、

  • Standard_LRS
  • Standard_GRS
  • Standard_RAGRS
  • Standard_ ZRS
  • Premium_LRS

があります。

copy

copyセクションでは繰り返し処理を記述できます。1度に複数のストレージを作成したい場合などに記述します。

"name": "[concat('copy-storage',copyIndex())]",
"copy":
{
    "//":[
        "copy中のnameは管理上の名前であるため、ストレージ名とは別物",
        "countに複製したい個数を入れる"
        ],
    "name": "kanri-name",
    "count": 3
}
dependsOn

依存関係、指定されたリソースが作成された後に作成します。

仮想マシン作成時は先にストレージとネットワークを先に作成する必要ががあるため、以下の様にストレージとネットワーク名を指定しています。

"dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/',variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
]

outputs(任意)

実行結果を返します。作成完了時のメモを残すこともできます。また、親子関係を持ったテンプレートを作成する際には子供が作成したパワメータを親に渡す時にoutputsセクションを活用します。

テンプレートの展開

「新規」を選び「テンプレートのデプロイ」検索して選択します

テンプレートのデプロイから「作成」を選択します

続いて「エディターで独自のテンプレートを作成する」を選択します

「ファイルの読み込み」から作成したテンプレートファイルを選び「作成」を選択します

parameterセクションの記述で内容は変わってきますが、必要なパラメータを入力後に同意内容を確認し、チェックを入れたら「購入」を選択します。

PowerShellによる展開

New-AzureRmResourceGroupDeployment
-Name “<管理上の名前>”
-ResourceGroupName “<リソースグループ名>“
-TemplateFile “<テンプレートファイルのパス>”
-TemplateparameterFile “<テンプレートパラメータファイルのパス>”

-Nameは管理上の名前となるので省略することができ、

省略した場合は「Microsoft.Template」になります。

テンプレートパラメータファイル

通常parametersセクションに記述したものはユーザーによる入力を求められます。しかし、テンプレートパラメータファイルを活用してすることで、パラメータをファイルから取り込むことができるようになります。

"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParame ters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "storageAccountName": { "value":"azure-blog-storage"
        }
    }
}

リソースエクスプローラー

その他のサービスからリソースエクスプローラーを検索し、選択します。

デプロイされているリソースの確認やテンプレートの確認ができます。

他にはtype(リソースプロバイダー)とapiVersion等の確認もすることができます。

こちらはリソースエクスプローラーの他にPowerShellを使って確認することもできます。

おまけ

エディターについて

Windowsで作業する場合、メモ帳は非推奨とのことです。メモ帳でutf-8の文字コードを使うとBOM(バイトオーダーマーク)が原因でトラブルの元となり得ます。VisualStudioCodeなどBOMなしで作成できるエディターが推奨されます。

テンプレートのサンプル

Azure クイック スタート テンプレートというページでテンプレートファイルが公開されています。

https://azure.microsoft.com/ja-jp/resources/templates

参考

Azure Resource Manager テンプレートの構造と構文の詳細

https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-group-authoring-templates

このページをシェアする:



DATUM STUDIOは、クライアントの事業成長と経営課題解決を最適な形でサポートする、データ・ビジネスパートナーです。
データ分析の分野でお客様に最適なソリューションをご提供します。まずはご相談ください。

関連記事