Azure Resource Manager テンプレートについて、MCP 70-533 試験の自習用に情報をまとめています。
※あくまで自習用であり、試験に出る保証はございませんのでご注意ください。
参考ページ
Azure Resource Manager(ARM) テンプレートとは
ソリューションに対してデプロイが必要なリソースを定義した JSON ファイルのことをいいます。
Azure portal を使用してテンプレートを生成することができ、そのテンプレートをカスタマイズしてデプロイすることができます。
ARMテンプレートの形式
テンプレートの構造は下記のような構成になっています。
{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "", "parameters": { }, "variables": { }, "functions": [ ], "resources": [ ], "outputs": { } }
$schema
テンプレート言語のバージョンが記述されているJSONスキーマファイルの場所
contentVersion
テンプレートのバージョン。任意の値を設定してよい。
parameters
リソースをデプロイするときにどのような値を入力できるかを指定します。 特定の環境 (開発、テスト、運用など) に合った値をパラメーターに渡すことで、デプロイをカスタマイズすることができます。 テンプレートでは必ずしもパラメーターを使用する必要はありませんが、パラメーターを使わなかった場合、常に同じリソースが同じ名前、同じ場所、同じプロパティでデプロイされます。
variables
テンプレート内で使用する変数を設定できる。
functions
テンプレート内で独自の関数を作成できる。テンプレート内で使用可能
resources
デプロイまたは更新されるリソースを定義する。適切な値を指定するために、デプロイするリソースの種類を理解する必要がある。
利用可能なプロパティ
要素名 必須 説明 condition このデプロイの間にリソースがプロビジョニングされるかどうかを示すブール値。 true の場合、デプロイの間にリソースが作成されます。 false の場合、このデプロイでは、リソースはスキップされます。 apiVersion 必須 リソースの作成に使用する REST API バージョン type 必須 リソースの種類。リソース プロバイダーの名前空間と、リソースの種類の組み合わせ name 必須 リソースの名前 location ロケーションの指定 tags タグの指定 comments コメントの記述 copy 複数のインスタンスが必要な場合に作成するリソースの数 dependsOn このリソースが配置される前に配置される必要があるリソースを指定 properties リソース固有の構成設定 sku デプロイする SKU を定義 kind デプロイするリソースの種類を定義 plan デプロイするプランを定義 resources 定義されているリソースに依存する子リソース。 親リソースのスキーマで許可されているリソースの種類のみを指定
outputs
デプロイから返される値を指定する。
例:ストレージアカウントのテンプレート
{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string" }, "storageAccountName": { "type": "string" }, "accountType": { "type": "string" }, "kind": { "type": "string" }, "accessTier": { "type": "string" }, "supportsHttpsTrafficOnly": { "type": "bool" } }, "variables": {}, "resources": [ { "name": "[parameters('storageAccountName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2018-02-01", "location": "[parameters('location')]", "properties": { "accessTier": "[parameters('accessTier')]", "supportsHttpsTrafficOnly": "[parameters('supportsHttpsTrafficOnly')]" }, "dependsOn": [], "sku": { "name": "[parameters('accountType')]" }, "kind": "[parameters('kind')]" } ], "outputs": {} }