Azure Resource Manager テンプレートのパラメーターParameters in Azure Resource Manager templates

この記事では、Azure Resource Manager テンプレートでパラメーターを定義および使用する方法について説明します。This article describes how to define and use parameters in your Azure Resource Manager template. パラメーターに異なる値を指定することにより、さまざまな環境でテンプレートを再利用できます。By providing different values for parameters, you can reuse a template for different environments.

Resource Manager は、デプロイ操作を開始する前にパラメーター値を解決します。Resource Manager resolves parameter values before starting the deployment operations. テンプレートでパラメーターが使用されている場合、Resource Manager はそれを解決済みの値に置き換えます。Wherever the parameter is used in the template, Resource Manager replaces it with the resolved value.

パラメーターを定義するDefine parameter

単純なパラメーター定義の例を次に示します。The following example shows a simple parameter definition. storageSKU という名前のパラメーターを定義します。It defines a parameter named storageSKU. パラメーターは、文字列値であり、使用目的に対して有効な値のみを受け入れます。The parameter is a string value, and only accepts values that are valid for its intended use. デプロイ時に値が指定されなかった場合、パラメーターは既定値を使用します。The parameter uses a default value when no value is provided during deployment.

"parameters": {
  "storageSKU": {
    "type": "string",
    "allowedValues": [
      "Standard_LRS",
      "Standard_ZRS",
      "Standard_GRS",
      "Standard_RAGRS",
      "Premium_LRS"
    ],
    "defaultValue": "Standard_LRS",
    "metadata": {
      "description": "The type of replication to use for the storage account."
    }
  }
}

パラメーターを使用するUse parameter

テンプレートでは、parameters 関数を使用してパラメーターの値を参照します。In the template, you reference the value for the parameter by using the parameters function. 次の例では、パラメーター値を使用してストレージ アカウントの SKU を設定します。In the following example, the parameter value is used to set SKU for the storage account.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "sku": {
      "name": "[parameters('storageSKU')]"
    },
    ...
  }
]

テンプレート関数Template functions

パラメーターの既定値を指定する場合は、ほとんどのテンプレート関数を使用できます。When specifying the default value for a parameter, you can use most template functions. 別のパラメーター値を使用して既定値を作成できます。You can use another parameter value to build a default value. 次のテンプレートは、既定値での関数の使用方法を示します。The following template demonstrates the use of functions in the default value. サイトの名前が指定されていない場合は、一意の文字列値が作成されて、site に付加されます。When no name is provided for the site, it creates a unique string value and appends it to site. ホスト プランの名前が指定されていない場合は、サイトの値が使用され、-plan が付加されます。When no name is provided for the host plan, it takes the value for the site, and appends -plan.

"parameters": {
  "siteName": {
    "type": "string",
    "defaultValue": "[concat('site', uniqueString(resourceGroup().id))]",
    "metadata": {
      "description": "The site name. To use the default value, do not specify a new value."
    }
  },
  "hostingPlanName": {
    "type": "string",
    "defaultValue": "[concat(parameters('siteName'),'-plan')]",
    "metadata": {
      "description": "The host name. To use the default value, do not specify a new value."
    }
  }
}

パラメーター セクションでは、reference 関数も、いずれの list 関数も使用できません。You can't use the reference function or any of the list functions in the parameters section. これらの関数は、リソースのランタイム状態を取得します。パラメーターが解決されるとき、デプロイの前に実行することはできません。These functions get the runtime state of a resource, and can't be executed before deployment when parameters are resolved.

パラメーターとしてのオブジェクトObjects as parameters

関連する値は 1 つのオブジェクトとして渡すことにより整理しやすくなります。It can be easier to organize related values by passing them in as an object. この方法により、テンプレート内のパラメータ数も減少します。This approach also reduces the number of parameters in the template.

次の例は、オブジェクトであるパラメーターを示しています。The following example shows a parameter that is an object. 既定値は、オブジェクトの予想されるプロパティを示しています。The default value shows the expected properties for the object.

"parameters": {
  "VNetSettings": {
    "type": "object",
    "defaultValue": {
      "name": "VNet1",
      "location": "eastus",
      "addressPrefixes": [
        {
          "name": "firstPrefix",
          "addressPrefix": "10.0.0.0/22"
        }
      ],
      "subnets": [
        {
          "name": "firstSubnet",
          "addressPrefix": "10.0.0.0/24"
        },
        {
          "name": "secondSubnet",
          "addressPrefix": "10.0.1.0/24"
        }
      ]
    }
  }
},

ドット演算子を使用して、オブジェクトのプロパティを参照します。You reference the properties of the object by using the dot operator.

"resources": [
  {
    "type": "Microsoft.Network/virtualNetworks",
    "apiVersion": "2015-06-15",
    "name": "[parameters('VNetSettings').name]",
    "location": "[parameters('VNetSettings').location]",
    "properties": {
      "addressSpace":{
        "addressPrefixes": [
          "[parameters('VNetSettings').addressPrefixes[0].addressPrefix]"
        ]
      },
      "subnets":[
        {
          "name":"[parameters('VNetSettings').subnets[0].name]",
          "properties": {
            "addressPrefix": "[parameters('VNetSettings').subnets[0].addressPrefix]"
          }
        },
        {
          "name":"[parameters('VNetSettings').subnets[1].name]",
          "properties": {
            "addressPrefix": "[parameters('VNetSettings').subnets[1].addressPrefix]"
          }
        }
      ]
    }
  }
]

サンプル テンプレートExample templates

次の例は、パラメーターを使用するためのシナリオを示しています。The following examples demonstrate scenarios for using parameters.

TemplateTemplate 説明Description
既定値のための関数を含むパラメーターparameters with functions for default values パラメーターの既定値を定義する際のテンプレート関数の使用方法を説明します。Demonstrates how to use template functions when defining default values for parameters. このテンプレートではリソースをデプロイしません。The template doesn't deploy any resources. パラメーターの値を作成して、その値を返します。It constructs parameter values and returns those values.
パラメーター オブジェクトparameter object パラメーターのオブジェクトの使用方法を示します。Demonstrates using an object for a parameter. このテンプレートではリソースをデプロイしません。The template doesn't deploy any resources. パラメーターの値を作成して、その値を返します。It constructs parameter values and returns those values.

次のステップNext steps