Azure Resource Manager テンプレートについて、MCP 70-533 試験の自習用に情報をまとめています。
※あくまで自習用であり、試験に出る保証はございませんのでご注意ください。
参考ページ
docs.microsoft.com
docs.microsoft.com
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
リソースをデプロイするときにどのような値を入力できるかを指定します。
特定の環境 (開発、テスト、運用など) に合った値をパラメーターに渡すことで、デプロイをカスタマイズすることができます。
テンプレートでは必ずしもパラメーターを使用する必要はありませんが、パラメーターを使わなかった場合、常に同じリソースが同じ名前、同じ場所、同じプロパティでデプロイされます。
docs.microsoft.com
variables
テンプレート内で使用する変数を設定できる。
docs.microsoft.com
functions
テンプレート内で独自の関数を作成できる。テンプレート内で使用可能
docs.microsoft.com
resources
デプロイまたは更新されるリソースを定義する。適切な値を指定するために、デプロイするリソースの種類を理解する必要がある。
docs.microsoft.com
利用可能なプロパティ
要素名 |
必須 |
説明 |
condition |
|
このデプロイの間にリソースがプロビジョニングされるかどうかを示すブール値。 true の場合、デプロイの間にリソースが作成されます。 false の場合、このデプロイでは、リソースはスキップされます。 |
apiVersion |
必須 |
リソースの作成に使用する REST API バージョン |
type |
必須 |
リソースの種類。リソース プロバイダーの名前空間と、リソースの種類の組み合わせ |
name |
必須 |
リソースの名前 |
location |
|
ロケーションの指定 |
tags |
|
タグの指定 |
comments |
|
コメントの記述 |
copy |
|
複数のインスタンスが必要な場合に作成するリソースの数 |
dependsOn |
|
このリソースが配置される前に配置される必要があるリソースを指定 |
properties |
|
リソース固有の構成設定 |
sku |
|
デプロイする SKU を定義 |
kind |
|
デプロイするリソースの種類を定義 |
plan |
|
デプロイするプランを定義 |
resources |
|
定義されているリソースに依存する子リソース。 親リソースのスキーマで許可されているリソースの種類のみを指定 |
outputs
デプロイから返される値を指定する。
docs.microsoft.com
例:ストレージアカウントのテンプレート
{
"$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": {}
}