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