御成門プログラマーの技術日記

Microsoft AzureやAngularなどの技術情報を発信します

Azure Resource Manager テンプレート(ARMテンプレート)の構造 まとめ(MCP 70-533試験 対策)

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": {}
}