Azure Resource Manager テンプレートの構造と構文の詳細Understand the structure and syntax of Azure Resource Manager templates

このトピックでは、Azure Resource Manager テンプレートの構造について説明します。This topic describes the structure of an Azure Resource Manager template. テンプレートの各種セクションとそこで使用できるプロパティを紹介しています。It presents the different sections of a template and the properties that are available in those sections. テンプレートは、JSON、およびデプロイの値を構築するときの式で構成されます。The template consists of JSON and expressions that you can use to construct values for your deployment. テンプレートの作成方法を詳しく解説したチュートリアルについては、「初めての Azure Resource Manager テンプレートを作成する」を参照してください。For a step-by-step tutorial on creating a template, see Create your first Azure Resource Manager template.

テンプレートの形式Template format

最も単純な構造のテンプレートは、次の要素で構成されます。In its simplest structure, a template contains the following elements:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "",
    "parameters": {  },
    "variables": {  },
    "resources": [  ],
    "outputs": {  }
}
要素名Element name 必須Required 説明Description
$schema$schema はいYes テンプレート言語のバージョンが記述されている JSON スキーマ ファイルの場所。Location of the JSON schema file that describes the version of the template language. 前の例に示されている URL を使用します。Use the URL shown in the preceding example.
contentVersioncontentVersion はいYes テンプレートのバージョン (1.0.0.0 など)。Version of the template (such as 1.0.0.0). この要素には任意の値を指定できます。You can provide any value for this element. テンプレートを使用してリソースをデプロイする場合は、この値を使用して、適切なテンプレートが使用されていることを確認できます。When deploying resources using the template, this value can be used to make sure that the right template is being used.
parametersparameters いいえNo リソースのデプロイをカスタマイズするのにはデプロイを実行すると、提供されている値です。Values that are provided when deployment is executed to customize resource deployment.
variablesvariables いいえNo テンプレート言語式を簡略化するためにテンプレート内で JSON フラグメントとして使用される値。Values that are used as JSON fragments in the template to simplify template language expressions.
resourcesresources はいYes リソース グループ内でデプロイまたは更新されるリソースの種類。Resource types that are deployed or updated in a resource group.
outputsoutputs いいえNo デプロイ後に返される値。Values that are returned after deployment.

各要素には、設定できるプロパティが含まれています。Each element contains properties you can set. 次の例には、テンプレートの完全な構文が含まれています。The following example contains the full syntax for a template:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "",
    "parameters": {  
        "<parameter-name>" : {
            "type" : "<type-of-parameter-value>",
            "defaultValue": "<default-value-of-parameter>",
            "allowedValues": [ "<array-of-allowed-values>" ],
            "minValue": <minimum-value-for-int>,
            "maxValue": <maximum-value-for-int>,
            "minLength": <minimum-length-for-string-or-array>,
            "maxLength": <maximum-length-for-string-or-array-parameters>,
            "metadata": {
                "description": "<description-of-the parameter>" 
            }
        }
    },
    "variables": {  
        "<variable-name>": "<variable-value>",
        "<variable-name>": { 
            <variable-complex-type-value> 
        }
    },
    "resources": [
      {
          "condition": "<boolean-value-whether-to-deploy>",
          "apiVersion": "<api-version-of-resource>",
          "type": "<resource-provider-namespace/resource-type-name>",
          "name": "<name-of-the-resource>",
          "location": "<location-of-resource>",
          "tags": {
              "<tag-name1>": "<tag-value1>",
              "<tag-name2>": "<tag-value2>"
          },
          "comments": "<your-reference-notes>",
          "copy": {
              "name": "<name-of-copy-loop>",
              "count": "<number-of-iterations>",
              "mode": "<serial-or-parallel>",
              "batchSize": "<number-to-deploy-serially>"
          },
          "dependsOn": [
              "<array-of-related-resource-names>"
          ],
          "properties": {
              "<settings-for-the-resource>",
              "copy": [
                  {
                      "name": ,
                      "count": ,
                      "input": {}
                  }
              ]
          },
          "resources": [
              "<array-of-child-resources>"
          ]
      }
    ],
    "outputs": {
        "<outputName>" : {
            "type" : "<type-of-output-value>",
            "value": "<output-value-expression>"
        }
    }
}

テンプレートのセクションについては、後で詳しく説明します。We examine the sections of the template in greater detail later in this topic.

式と関数Expressions and functions

テンプレートの基本的な構文は JSON です。The basic syntax of the template is JSON. ただし、式や関数により、テンプレートで使用できる JSON 値が拡張されます。However, expressions and functions extend the JSON values available within the template. 式は、最初と最後の文字が角かっこ ([ および ]) の JSON 文字列リテラル内に記述されます。Expressions are written within JSON string literals whose first and last characters are the brackets: [ and ], respectively. 式の値は、テンプレートのデプロイ時に評価されます。The value of the expression is evaluated when the template is deployed. 文字列リテラルとして記述される一方で、式の評価の結果は、実際の式に応じて、配列、整数など、さまざまな JSON 型にすることができます。While written as a string literal, the result of evaluating the expression can be of a different JSON type, such as an array or integer, depending on the actual expression. 角かっこ [ で始まるリテラル文字列を使用するが、式として解釈されないようにするには、文字列が [[ で始まるように追加の角かっこを追加します。To have a literal string start with a bracket [, but not have it interpreted as an expression, add an extra bracket to start the string with [[.

通常、関数と式を使用してデプロイを構成する操作を実行します。Typically, you use expressions with functions to perform operations for configuring the deployment. JavaScript の場合と同様に、関数呼び出しは functionName(arg1,arg2,arg3) という形式になります。Just like in JavaScript, function calls are formatted as functionName(arg1,arg2,arg3). プロパティの参照には、ドットと [index] 演算子を使用します。You reference properties by using the dot and [index] operators.

次の例では、値を構築する際にいくつかの関数を使用する方法を示します。The following example shows how to use several functions when constructing values:

"variables": {
    "location": "[resourceGroup().location]",
    "usernameAndPassword": "[concat(parameters('username'), ':', parameters('password'))]",
    "authorizationHeader": "[concat('Basic ', base64(variables('usernameAndPassword')))]"
}

テンプレート関数の完全一覧が必要な場合、「 Azure リソース マネージャーのテンプレートの関数」を参照してください。For the full list of template functions, see Azure Resource Manager template functions.

parametersParameters

テンプレートの parameters セクションでは、リソースをデプロイするときにどのような値を入力できるかを指定します。In the parameters section of the template, you specify which values you can input when deploying the resources. 特定の環境 (開発、テスト、運用など) に合った値をパラメーターに渡すことで、デプロイをカスタマイズすることができます。These parameter values enable you to customize the deployment by providing values that are tailored for a particular environment (such as dev, test, and production). テンプレートでは必ずしもパラメーターを使用する必要はありませんが、パラメーターを使わなかった場合、常に同じリソースが同じ名前、同じ場所、同じプロパティでデプロイされます。You do not have to provide parameters in your template, but without parameters your template would always deploy the same resources with the same names, locations, and properties.

次の構造でパラメーターを定義します。You define parameters with the following structure:

"parameters": {
    "<parameter-name>" : {
        "type" : "<type-of-parameter-value>",
        "defaultValue": "<default-value-of-parameter>",
        "allowedValues": [ "<array-of-allowed-values>" ],
        "minValue": <minimum-value-for-int>,
        "maxValue": <maximum-value-for-int>,
        "minLength": <minimum-length-for-string-or-array>,
        "maxLength": <maximum-length-for-string-or-array-parameters>,
        "metadata": {
            "description": "<description-of-the parameter>" 
        }
    }
}
要素名Element name 必須Required DescriptionDescription
parameterNameparameterName はいYes パラメーターの名前。Name of the parameter. 有効な JavaScript 識別子で指定する必要があります。Must be a valid JavaScript identifier.
typetype はいYes パラメーター値の型。Type of the parameter value. この表の後に示す使用できる型を参照してください。See the list of allowed types after this table.
defaultValuedefaultValue いいえNo パラメーターに値が指定されない場合のパラメーターの既定値。Default value for the parameter, if no value is provided for the parameter.
allowedValuesallowedValues いいえNo 適切な値が確実に指定されるように、パラメーターに使用できる値の配列。Array of allowed values for the parameter to make sure that the right value is provided.
minValueminValue いいえNo int 型パラメーターの最小値。The minimum value for int type parameters, this value is inclusive.
maxValuemaxValue いいえNo int 型パラメーターの最大値。The maximum value for int type parameters, this value is inclusive.
minLengthminLength いいえNo 文字列型、secureString 型、配列型パラメーターの長さの最小値。The minimum length for string, secureString, and array type parameters, this value is inclusive.
maxLengthmaxLength いいえNo 文字列型、secureString 型、配列型パラメーターの長さの最大値。The maximum length for string, secureString, and array type parameters, this value is inclusive.
descriptiondescription いいえNo ポータルを通じてユーザーに表示されるパラメーターの説明。Description of the parameter that is displayed to users through the portal.

使用できる型と値は次のとおりです。The allowed types and values are:

  • stringstring
  • secureStringsecureString
  • intint
  • boolbool
  • objectobject
  • secureObjectsecureObject
  • arrayarray

パラメーターを省略可能に指定するには、defaultValue を設定します (空の文字列を指定できます)。To specify a parameter as optional, provide a defaultValue (can be an empty string).

コマンドのパラメーターと同じ名前のパラメーターをテンプレートで指定して、そのテンプレートをデプロイすると、指定する値があいまいになる可能性があります。If you specify a parameter name in your template that matches a parameter in the command to deploy the template, there is potential ambiguity about the values you provide. Resource Manager では、接尾辞 FromTemplate をテンプレート パラメーターに追加することで、このような混乱を防ぎます。Resource Manager resolves this confusion by adding the postfix FromTemplate to the template parameter. たとえば、ResourceGroupName という名前のパラメーターをテンプレートに追加した場合、このパラメーターは、New-AzureRmResourceGroupDeployment コマンドレットの ResourceGroupName パラメーターと競合するため、For example, if you include a parameter named ResourceGroupName in your template, it conflicts with the ResourceGroupName parameter in the New-AzureRmResourceGroupDeployment cmdlet. デプロイ中、ResourceGroupNameFromTemplate に値を指定するように求められます。During deployment, you are prompted to provide a value for ResourceGroupNameFromTemplate. 一般的に、このような混乱を防ぐために、デプロイ処理に使用したパラメーターと同じ名前をパラメーターに付けないことが推奨されます。In general, you should avoid this confusion by not naming parameters with the same name as parameters used for deployment operations.

注意

すべてのパスワード、キー、およびその他のシークレットでは、 secureString 型を使用する必要があります。All passwords, keys, and other secrets should use the secureString type. JSON オブジェクトに機密データを渡す場合は、secureObject 型を使用します。If you pass sensitive data in a JSON object, use the secureObject type. secureString 型または secureObject 型を含むテンプレート パラメーターをリソースのデプロイ後に読み取ることはできません。Template parameters with secureString or secureObject types cannot be read after resource deployment.

たとえば、デプロイ履歴の次のエントリには文字列とオブジェクトの値が表示されますが、secureString と secureObject の値は表示されません。For example, the following entry in the deployment history shows the value for a string and object but not for secureString and secureObject.

デプロイの値の表示

次の例では、パラメーターを定義する方法を示します。The following example shows how to define parameters:

"parameters": {
    "siteName": {
        "type": "string",
        "defaultValue": "[concat('site', uniqueString(resourceGroup().id))]"
    },
    "hostingPlanName": {
        "type": "string",
        "defaultValue": "[concat(parameters('siteName'),'-plan')]"
    },
    "skuName": {
        "type": "string",
        "defaultValue": "F1",
        "allowedValues": [
          "F1",
          "D1",
          "B1",
          "B2",
          "B3",
          "S1",
          "S2",
          "S3",
          "P1",
          "P2",
          "P3",
          "P4"
        ]
    },
    "skuCapacity": {
        "type": "int",
        "defaultValue": 1,
        "minValue": 1
    }
}

デプロイ時にパラメーター値を入力する方法については、 Azure Resource Manager テンプレートを使用したリソースのデプロイに関するページをご覧ください。For how to input the parameter values during deployment, see Deploy an application with Azure Resource Manager template.

variablesVariables

テンプレート内で使用できる値は、variables セクションで構築します。In the variables section, you construct values that can be used throughout your template. 必ずしも変数を定義する必要はありませんが、変数を定義することによって複雑な式が減り、テンプレートが単純化されることはよくあります。You do not need to define variables, but they often simplify your template by reducing complex expressions.

変数は、次の構造で定義します。You define variables with the following structure:

"variables": {
    "<variable-name>": "<variable-value>",
    "<variable-name>": { 
        <variable-complex-type-value> 
    }
}

次の例では、2 つのパラメーター値で構成される変数の定義方法を示しています。The following example shows how to define a variable that is constructed from two parameter values:

"variables": {
    "connectionString": "[concat('Name=', parameters('username'), ';Password=', parameters('password'))]"
}

次の例では、複雑な JSON 型である変数と、その他の変数で構成される変数を示します。The next example shows a variable that is a complex JSON type, and variables that are constructed from other variables:

"parameters": {
    "environmentName": {
        "type": "string",
        "allowedValues": [
          "test",
          "prod"
        ]
    }
},
"variables": {
    "environmentSettings": {
        "test": {
            "instancesSize": "Small",
            "instancesCount": 1
        },
        "prod": {
            "instancesSize": "Large",
            "instancesCount": 4
        }
    },
    "currentEnvironmentSettings": "[variables('environmentSettings')[parameters('environmentName')]]",
    "instancesSize": "[variables('currentEnvironmentSettings').instancesSize]",
    "instancesCount": "[variables('currentEnvironmentSettings').instancesCount]"
}

copy 構文を使用して、複数の要素の配列で変数を作成できます。You can use the copy syntax to create a variable with an array of multiple elements. 要素の数を表すカウントを指定します。You provide a count for the number of elements. 各要素には、input オブジェクト内にプロパティが含まれます。Each element contains the properties within the input object. コピーは変数内で使用することも、変数の作成に使用することもできます。You can use copy either within a variable or to create the variable. 次の例では、両方の方法を示します。Both approaches are shown in the following example:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {
    "disk-array-on-object": {
      "copy": [
        {
          "name": "disks",
          "count": 5,
          "input": {
            "name": "[concat('myDataDisk', copyIndex('disks', 1))]",
            "diskSizeGB": "1",
            "diskIndex": "[copyIndex('disks')]"
          }
        }
      ]
    },
    "copy": [
      {
        "name": "disks-top-level-array",
        "count": 5,
        "input": {
          "name": "[concat('myDataDisk', copyIndex('disks-top-level-array', 1))]",
          "diskSizeGB": "1",
          "diskIndex": "[copyIndex('disks-top-level-array')]"
        }
      }
    ]
  },
  "resources": [],
  "outputs": {
    "exampleObject": {
      "value": "[variables('disk-array-on-object')]",
      "type": "object"
    },
    "exampleArrayOnObject": {
      "value": "[variables('disk-array-on-object').disks]",
      "type" : "array"
    },
    "exampleArray": {
      "value": "[variables('disks-top-level-array')]",
      "type" : "array"
    }
  }
}

リソースResources

resources セクションでは、デプロイまたは更新されるリソースを定義します。In the resources section, you define the resources that are deployed or updated. このセクションは、複雑になりやすい部分です。適切な値を指定するためには、デプロイするリソースの種類を理解している必要があるためです。This section can get complicated because you must understand the types you are deploying to provide the right values. 設定が必要なリソース固有の値 (apiVersion、種類、プロパティ) については、「Define resources in Azure Resource Manager templates (Azure Resource Manager テンプレートのリソースを定義する)」を参照してください。For the resource-specific values (apiVersion, type, and properties) that you need to set, see Define resources in Azure Resource Manager templates.

リソースは、次の構造で定義します。You define resources with the following structure:

"resources": [
  {
      "condition": "<boolean-value-whether-to-deploy>",
      "apiVersion": "<api-version-of-resource>",
      "type": "<resource-provider-namespace/resource-type-name>",
      "name": "<name-of-the-resource>",
      "location": "<location-of-resource>",
      "tags": {
          "<tag-name1>": "<tag-value1>",
          "<tag-name2>": "<tag-value2>"
      },
      "comments": "<your-reference-notes>",
      "copy": {
          "name": "<name-of-copy-loop>",
          "count": "<number-of-iterations>",
          "mode": "<serial-or-parallel>",
          "batchSize": "<number-to-deploy-serially>"
      },
      "dependsOn": [
          "<array-of-related-resource-names>"
      ],
      "properties": {
          "<settings-for-the-resource>",
          "copy": [
              {
                  "name": ,
                  "count": ,
                  "input": {}
              }
          ]
      },
      "resources": [
          "<array-of-child-resources>"
      ]
  }
]
要素名Element name 必須Required DescriptionDescription
conditioncondition いいえNo リソースをデプロイするかどうかを示すブール値。Boolean value that indicates whether the resource is deployed.
apiVersionapiVersion はいYes リソースの作成に使用する REST API バージョン。Version of the REST API to use for creating the resource.
typetype はいYes リソースの種類。Type of the resource. この値は、リソース プロバイダーの名前空間と、リソースの種類の組み合わせです (例: Microsoft.Storage/storageAccounts)。This value is a combination of the namespace of the resource provider and the resource type (such as Microsoft.Storage/storageAccounts).
namename はいYes リソースの名前。Name of the resource. この名前は、RFC3986 で定義されている URI コンポーネントの制限に準拠する必要があります。The name must follow URI component restrictions defined in RFC3986. また、リソース名を外部に公開する Azure サービスは、名前が別の ID になりすますことがないように、その名前を検証します。In addition, Azure services that expose the resource name to outside parties validate the name to make sure it is not an attempt to spoof another identity.
locationlocation 多様Varies 指定されたリソースのサポートされている地理的な場所。Supported geo-locations of the provided resource. 利用可能な任意の場所を選択できますが、一般的に、ユーザーに近い場所を選択します。You can select any of the available locations, but typically it makes sense to pick one that is close to your users. また、通常、相互に対話するリソースを同じリージョンに配置します。Usually, it also makes sense to place resources that interact with each other in the same region. ほとんどのリソースの種類では場所が必要となりますが、場所を必要としない種類 (ロールの割り当てなど) もあります。Most resource types require a location, but some types (such as a role assignment) do not require a location. Azure Resource Manager テンプレートでリソースの場所を設定する」を参照してください。See Set resource location in Azure Resource Manager templates.
tagstags いいえNo リソースに関連付けられたタグ。Tags that are associated with the resource. Azure Resource Manager テンプレートのリソースにタグを付ける」を参照してください。See Tag resources in Azure Resource Manager templates.
コメントcomments いいえNo テンプレート内にドキュメント化するリソースについてのメモ。Your notes for documenting the resources in your template
copycopy いいえNo 複数のインスタンスが必要な場合に作成するリソースの数。If more than one instance is needed, the number of resources to create. 既定のモードはパラレルです。The default mode is parallel. すべてのリソースを同時にデプロイする必要がない場合は、シリアル モードを指定します。Specify serial mode when you do not want all or the resources to deploy at the same time. 詳しくは、「Azure Resource Manager でリソースの複数のインスタンスを作成する」をご覧ください。For more information, see Create multiple instances of resources in Azure Resource Manager.
dependsOndependsOn なしNo このリソースが配置される前に配置される必要があるリソース。Resources that must be deployed before this resource is deployed. Resource Manager により、リソース間の依存関係が評価され、リソースが正しい順序でデプロイされます。Resource Manager evaluates the dependencies between resources and deploys them in the correct order. 相互依存していないリソースは、平行してデプロイされます。When resources are not dependent on each other, they are deployed in parallel. 値には、リソース名またはリソースの一意識別子のコンマ区切りリストを指定できます。The value can be a comma-separated list of a resource names or resource unique identifiers. このテンプレートに配置されたリソースのみをリストします。Only list resources that are deployed in this template. このテンプレートで定義されていないリソースは、既に存在している必要があります。Resources that are not defined in this template must already exist. 不要な依存関係は追加しないでください。こうした依存関係によりデプロイの速度が遅くなり、循環依存関係を作成されることがあります。Avoid adding unnecessary dependencies as they can slow your deployment and create circular dependencies. 詳細については、Azure Resource Manager テンプレートの依存関係の定義に関するページをご覧ください。For guidance on setting dependencies, see Defining dependencies in Azure Resource Manager templates.
propertiesproperties いいえNo リソース固有の構成設定。Resource-specific configuration settings. properties の値は、リソースを作成するために REST API 操作 (PUT メソッド) の要求本文に指定した値と同じです。The values for the properties are the same as the values you provide in the request body for the REST API operation (PUT method) to create the resource. コピー配列を指定して、1 つのプロパティの複数のインスタンスを作成することもできます。You can also specify a copy array to create multiple instances of a property. 詳しくは、「Azure Resource Manager でリソースの複数のインスタンスを作成する」をご覧ください。For more information, see Create multiple instances of resources in Azure Resource Manager.
resourcesresources いいえNo 定義されているリソースに依存する子リソース。Child resources that depend on the resource being defined. 親リソースのスキーマで許可されているリソースの種類のみを指定します。Only provide resource types that are permitted by the schema of the parent resource. 子リソースの完全修飾型には親リソースの種類が含まれます (例: Microsoft.Web/sites/extensions)。The fully qualified type of the child resource includes the parent resource type, such as Microsoft.Web/sites/extensions. 親リソースへの依存関係は示されません。Dependency on the parent resource is not implied. この依存関係は明示的に定義する必要があります。You must explicitly define that dependency.

resources セクションには、デプロイの対象となる一連のリソースが記述されます。The resources section contains an array of the resources to deploy. また、リソースごとに子リソースを複数定義することができます。Within each resource, you can also define an array of child resources. その場合、resources セクションは次のような構造となります。Therefore, your resources section could have a structure like:

"resources": [
  {
      "name": "resourceA",
  },
  {
      "name": "resourceB",
      "resources": [
        {
            "name": "firstChildResourceB",
        },
        {   
            "name": "secondChildResourceB",
        }
      ]
  },
  {
      "name": "resourceC",
  }
]

子リソースの定義の詳細については、「Resource Manager テンプレートの子リソースに関する名前と種類の設定」を参照してください。For more information about defining child resources, see Set name and type for child resource in Resource Manager template.

condition 要素は、リソースがデプロイされているかどうかを指定します。The condition element specifies whether the resource is deployed. この要素の値は、true または false に解決されます。The value for this element resolves to true or false. たとえば、新しいストレージ アカウントをデプロイするかどうかを指定するには、次のコードを使用します。For example, to specify whether a new storage account is deployed, use:

{
    "condition": "[equals(parameters('newOrExisting'),'new')]",
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageAccountName')]",
    "apiVersion": "2017-06-01",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "[variables('storageAccountType')]"
    },
    "kind": "Storage",
    "properties": {}
}

新規または既存のリソースの使用例については、新規または既存の condition テンプレートを参照してください。For an example of using a new or existing resource, see New or existing condition template.

パスワードと SSH キーのどちらを使って仮想マシンをデプロイするかを指定するには、テンプレートで 2 つのバージョンの仮想マシンを定義し、condition を使用して使用法を区別します。To specify whether a virtual machine is deployed with a password or SSH key, define two versions of the virtual machine in your template and use condition to differentiate usage. デプロイするシナリオを指定するパラメーターを渡します。Pass a parameter that specifies which scenario to deploy.

{
    "condition": "[equals(parameters('passwordOrSshKey'),'password')]",
    "apiVersion": "2016-03-30",
    "type": "Microsoft.Compute/virtualMachines",
    "name": "[concat(variables('vmName'),'password')]",
    "properties": {
        "osProfile": {
            "computerName": "[variables('vmName')]",
            "adminUsername": "[parameters('adminUsername')]",
            "adminPassword": "[parameters('adminPassword')]"
        },
        ...
    },
    ...
},
{
    "condition": "[equals(parameters('passwordOrSshKey'),'sshKey')]",
    "apiVersion": "2016-03-30",
    "type": "Microsoft.Compute/virtualMachines",
    "name": "[concat(variables('vmName'),'ssh')]",
    "properties": {
        "osProfile": {
            "linuxConfiguration": {
                "disablePasswordAuthentication": "true",
                "ssh": {
                    "publicKeys": [
                        {
                            "path": "[variables('sshKeyPath')]",
                            "keyData": "[parameters('adminSshKey')]"
                        }
                    ]
                }
            }
        },
        ...
    },
    ...
}

パスワードまたは SSH キーを使用して仮想マシンをデプロイする例については、ユーザー名または SSH condition テンプレートを参照してください。For an example of using a password or SSH key to deploy virtual machine, see Username or SSH condition template.

出力Outputs

[出力] セクションではデプロイから返される値を指定します。In the Outputs section, you specify values that are returned from deployment. たとえば、デプロイされたリソースにアクセスするための URI を返すことができます。For example, you could return the URI to access a deployed resource.

次の例では、出力の定義の構造を示します。The following example shows the structure of an output definition:

"outputs": {
    "<outputName>" : {
        "type" : "<type-of-output-value>",
        "value": "<output-value-expression>"
    }
}
要素名Element name 必須Required 説明Description
outputNameoutputName はいYes 出力値の名前。Name of the output value. 有効な JavaScript 識別子で指定する必要があります。Must be a valid JavaScript identifier.
typetype はいYes 出力値の型。Type of the output value. 出力値では、テンプレート入力パラメーターと同じ型がサポートされています。Output values support the same types as template input parameters.
value はいYes 評価され、出力値として返されるテンプレート言語式。Template language expression that is evaluated and returned as output value.

次の例では、outputs セクションで返される値を示します。The following example shows a value that is returned in the Outputs section.

"outputs": {
    "siteUri" : {
        "type" : "string",
        "value": "[concat('http://',reference(resourceId('Microsoft.Web/sites', parameters('siteName'))).hostNames[0])]"
    }
}

出力を操作する方法の詳細については、「 Azure Resource Manager のテンプレートでの状態の共有」をご覧ください。For more information about working with output, see Sharing state in Azure Resource Manager templates.

テンプレートの制限Template limits

テンプレートのサイズを 1 MB に、各パラメーター ファイルのサイズを 64 KB に制限します。Limit the size of your template to 1 MB, and each parameter file to 64 KB. 1 MB の制限は、反復的なリソースの定義と変数およびパラメーターの値で拡張された後のテンプレートの最終的な状態に適用されます。The 1-MB limit applies to the final state of the template after it has been expanded with iterative resource definitions, and values for variables and parameters.

また、以下のように制限されます。You are also limited to:

  • パラメーター 256 個256 parameters
  • 変数 256 個256 variables
  • リソース (コピー数を含む) 800 個800 resources (including copy count)
  • 出力値 64 個64 output values
  • テンプレート式内で 24,576 文字24,576 characters in a template expression

入れ子になったテンプレートを使用すると、一部のテンプレートの制限を超過することができます。You can exceed some template limits by using a nested template. 詳細については、「Azure リソース デプロイ時のリンクされたテンプレートの使用」を参照してください。For more information, see Using linked templates when deploying Azure resources. パラメーター、変数、出力の数を減らすために、いくつかの値を 1 つのオブジェクトに結合することができます。To reduce the number of parameters, variables, or outputs, you can combine several values into an object. 詳しくは、パラメーターとしてのオブジェクトに関する記事をご覧ください。For more information, see Objects as parameters.

次のステップNext steps