Описание структуры и синтаксиса шаблонов Azure Resource ManagerUnderstand the structure and syntax of Azure Resource Manager templates

В этой статье описана структура шаблона Azure Resource Manager.This article 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.

Эта статья предназначена для пользователей, знакомых с шаблонами диспетчер ресурсов.This article is intended for users who have some familiarity with Resource Manager templates. Он предоставляет подробные сведения о структуре шаблона.It provides detailed information about the structure of the template. Пошаговые инструкции по созданию шаблона см. в разделе учебник. Создание и развертывание первого шаблона Azure Resource Manager.For a step-by-step tutorial that guides you through the process of creating a template, see Tutorial: Create and deploy your first Azure Resource Manager template.

Формат шаблонаTemplate format

Шаблон с самой простой структурой содержит следующие элементы:In its simplest structure, a template has the following elements:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "resources": [  ],
  "outputs": {  }
}
Имя элементаElement name обязательныеRequired ОПИСАНИЕDescription
$schema$schema YesYes Расположение файла схемы JSON, который описывает версию языка шаблона.Location of the JSON schema file that describes the version of the template language.

Для развертывания групп ресурсов используйте https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#For resource group deployments, use: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

Для развертывания подписки используйте https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#For subscription deployments, use: https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#
contentVersioncontentVersion YesYes Версия шаблона (например, 1.0.0.0).Version of the template (such as 1.0.0.0). Для этого элемента можно предоставить любое значение.You can provide any value for this element. Это значение позволяет задокументировать важные изменения в шаблоне.Use this value to document significant changes in your template. При развертывании ресурсов с помощью шаблона это значение позволяет убедиться в том, что используется нужный шаблон.When deploying resources using the template, this value can be used to make sure that the right template is being used.
апипрофилеapiProfile НетNo Версия API, которая служит коллекцией версий API для типов ресурсов.An API version that serves as a collection of API versions for resource types. Используйте это значение, чтобы не указывать версии API для каждого ресурса в шаблоне.Use this value to avoid having to specify API versions for each resource in the template. Если указана версия профиля API и не указана версия API для типа ресурса, диспетчер ресурсов использует версию API для этого типа ресурсов, который определен в профиле.When you specify an API profile version and don't specify an API version for the resource type, Resource Manager uses the API version for that resource type that is defined in the profile.

Свойство профиля API особенно полезно при развертывании шаблона в различных средах, таких как Azure Stack и глобальные Azure.The API profile property is especially helpful when deploying a template to different environments, such as Azure Stack and global Azure. Используйте версию профиля API, чтобы убедиться, что шаблон автоматически использует версии, поддерживаемые в обеих средах.Use the API profile version to make sure your template automatically uses versions that are supported in both environments. Список текущих версий профиля API и версий API ресурсов, определенных в профиле, см. в разделе профиль API.For a list of the current API profile versions and the resources API versions defined in the profile, see API Profile.

Дополнительные сведения см. в статье Tracking Versions using API Profiles.For more information, see Track versions using API profiles.
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.
functionsfunctions НетNo Определяемые пользователем функции, доступные в шаблоне.User-defined functions that are available within the template.
resourcesresources YesYes Типы ресурсов, которые развертываются или обновляются в группе ресурсов или подписке.Resource types that are deployed or updated in a resource group or subscription.
outputsoutputs НетNo Значения, возвращаемые после развертывания.Values that are returned after deployment.

Каждый элемент содержит свойства, которые можно задать.Each element has properties you can set. В этой статье подробнее описаны разделы шаблона.This article describes the sections of the template in greater detail.

parametersParameters

В разделе параметров шаблона указываются значения, которые вы можете вводить во время развертывания ресурсов.In the parameters section of the template, you specify which values you can input when deploying the resources. Существует ограничение в 256 параметров на один шаблон.You're limited to 256 parameters in a template. Количество параметров можно уменьшить с помощью объектов, содержащих несколько свойств.You can reduce the number of parameters by using objects that contain multiple properties.

Для параметра доступны следующие свойства:The available properties for a parameter are:

"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 ОПИСАНИЕDescription
имя параметраparameter-name YesYes Имя параметра.Name of the parameter. Должно быть допустимым идентификатором JavaScript.Must be a valid JavaScript identifier.
typetype YesYes Тип значения параметра.Type of the parameter value. Допустимые типы и значения: string, securestring, int, bool, object, secureObject и array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array. См. раздел типы данных.See Data types.
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 Минимальная длина (включительно) параметров типа string, secure string и array.The minimum length for string, secure string, and array type parameters, this value is inclusive.
maxLengthmaxLength НетNo Максимальная длина (включительно) параметров типа string, secure string и array.The maximum length for string, secure string, and array type parameters, this value is inclusive.
Описаниеdescription НетNo Описание параметра, отображаемого для пользователей на портале.Description of the parameter that is displayed to users through the portal. Дополнительные сведения см. в разделе комментариев в шаблонах.For more information, see Comments in templates.

Примеры использования параметров см. в разделе Параметры в Azure Resource Manager Templates.For examples of how to use parameters, see Parameters in Azure Resource Manager templates.

Типы данныхData types

Для целых чисел, переданных в качестве встроенных параметров, диапазон значений может быть ограничен пакетом SDK или программой командной строки, используемой для развертывания.For integers passed as inline parameters, the range of values may be limited by the SDK or command-line tool you use for deployment. Например, при использовании PowerShell для развертывания шаблона целочисленные типы могут находиться в диапазоне от-2147483648 до 2147483647.For example, when using PowerShell to deploy a template, integer types can range from -2147483648 to 2147483647. Чтобы избежать этого ограничения, укажите большие целочисленные значения в файле параметров.To avoid this limitation, specify large integer values in a parameter file. Типы ресурсов применяют собственные ограничения для целочисленных свойств.Resource types apply their own limits for integer properties.

При указании в шаблоне значений типа Boolean и целых чисел не следует заключать значение в кавычки.When specifying boolean and integer values in your template, don't surround the value with quotation marks. Начальные и конечные строковые значения заключаются в двойные кавычки.Start and end string values with double quotation marks.

Объекты начинаются с левой скобки и заканчиваются правой фигурной скобкой.Objects start with a left brace and end with a right brace. Массивы начинаются с левой скобки и заканчиваются правой скобкой.Arrays start with a left bracket and end with a right bracket.

Защищенные строки и защищенные объекты не могут быть прочитаны после развертывания ресурсов.Secure strings and secure objects can't be read after resource deployment.

Примеры типов данных форматирования см. в разделе форматы типов параметров.For samples of formatting data types, see Parameter type formats.

variablesVariables

В разделе переменных вы создаете значения, которые можно использовать в разных частях шаблона.In the variables section, you construct values that can be used throughout your template. Переменные определять не обязательно, однако они часто упрощают шаблон, снижая число сложных выражений.You don't need to define variables, but they often simplify your template by reducing complex expressions.

В следующем примере показаны доступные параметры для определения переменной.The following example shows the available options for defining a variable:

"variables": {
  "<variable-name>": "<variable-value>",
  "<variable-name>": {
    <variable-complex-type-value>
  },
  "<variable-object-name>": {
    "copy": [
      {
        "name": "<name-of-array-property>",
        "count": <number-of-iterations>,
        "input": <object-or-value-to-repeat>
      }
    ]
  },
  "copy": [
    {
      "name": "<variable-array-name>",
      "count": <number-of-iterations>,
      "input": <object-or-value-to-repeat>
    }
  ]
}

Сведения об использовании copy для создания нескольких значений для переменной см. в разделе Переменная iteration.For information about using copy to create several values for a variable, see Variable iteration.

Примеры использования переменных см. в разделе переменные в шаблоне Azure Resource Manager.For examples of how to use variables, see Variables in Azure Resource Manager template.

ФункцииFunctions

В шаблоне можно создать свои собственные функции.Within your template, you can create your own functions. Эти функции доступны для использования в шаблоне.These functions are available for use in your template. Как правило, вы определяете сложные выражения, которые не должны повторяться на протяжении всего шаблона.Typically, you define complicated expressions that you don't want to repeat throughout your template. Создаются определяемые пользователем функции на основе выражений и функции, которые поддерживаются в шаблонах.You create the user-defined functions from expressions and functions that are supported in templates.

При определении пользовательской функции есть несколько ограничений:When defining a user function, there are some restrictions:

  • Функция не может обращаться к переменным.The function can't access variables.
  • Функция может использовать только параметры, определенные в самой функции.The function can only use parameters that are defined in the function. При использовании функции Parameters в определяемой пользователем функции вы можете использовать только параметры этой функции.When you use the parameters function within a user-defined function, you're restricted to the parameters for that function.
  • Функция не может вызывать другие функции, определяемые пользователем.The function can't call other user-defined functions.
  • Для функции нельзя использовать ссылочную функцию.The function can't use the reference function.
  • Для параметров этой функции нельзя задавать значения по умолчанию.Parameters for the function can't have default values.
"functions": [
  {
    "namespace": "<namespace-for-functions>",
    "members": {
      "<function-name>": {
        "parameters": [
          {
            "name": "<parameter-name>",
            "type": "<type-of-parameter-value>"
          }
        ],
        "output": {
          "type": "<type-of-output-value>",
          "value": "<function-return-value>"
        }
      }
    }
  }
],
Имя элементаElement name обязательныеRequired ОПИСАНИЕDescription
пространство_именnamespace YesYes Пространство имен для пользовательских функций.Namespace for the custom functions. Используйте, чтобы избежать конфликтов имен с функциями шаблонов.Use to avoid naming conflicts with template functions.
имя функцииfunction-name YesYes Имя пользовательской функции.Name of the custom function. При вызове функции объедините имя функции с пространством имен.When calling the function, combine the function name with the namespace. Например, чтобы вызвать функцию с именем uniqueName в пространстве имен contoso, используйте "[contoso.uniqueName()]".For example, to call a function named uniqueName in the namespace contoso, use "[contoso.uniqueName()]".
имя параметраparameter-name НетNo Имя параметра, который будет использоваться в пользовательской функции.Name of the parameter to be used within the custom function.
параметр-значениеparameter-value НетNo Тип значения параметра.Type of the parameter value. Допустимые типы и значения: string, securestring, int, bool, object, secureObject и array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
Тип выходных данныхoutput-type YesYes Тип выходного значения.Type of the output value. Выходные значения поддерживают те же типы, что и входные параметры функции.Output values support the same types as function input parameters.
Выходное значениеoutput-value YesYes Выражение языка шаблона, которое вычисляется и возвращается из функции.Template language expression that is evaluated and returned from the function.

Примеры использования пользовательских функций см. в разделе определяемые пользователем функции в Azure Resource Manager шаблоне.For examples of how to use custom functions, see User-defined functions in Azure Resource Manager template.

РесурсыResources

В разделе resources определяются ресурсы, которые развертываются или обновляются.In the resources section, you define the resources that are deployed or updated.

Ресурсы определяются с помощью следующей структуры:You define resources with the following structure:

"resources": [
  {
      "condition": "<true-to-deploy-this-resource>",
      "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": {}
              }
          ]
      },
      "sku": {
          "name": "<sku-name>",
          "tier": "<sku-tier>",
          "size": "<sku-size>",
          "family": "<sku-family>",
          "capacity": <sku-capacity>
      },
      "kind": "<type-of-resource>",
      "plan": {
          "name": "<plan-name>",
          "promotionCode": "<plan-promotion-code>",
          "publisher": "<plan-publisher>",
          "product": "<plan-product>",
          "version": "<plan-version>"
      },
      "resources": [
          "<array-of-child-resources>"
      ]
  }
]
Имя элементаElement name обязательныеRequired ОПИСАНИЕDescription
conditioncondition НетNo Логическое значение, указывающее, будет ли подготавливаться ресурс во время этого развертывания.Boolean value that indicates whether the resource will be provisioned during this deployment. Если установлено значение true, при развертывании создается ресурс.When true, the resource is created during deployment. Если установлено значение false, при развертывании ресурс не создается.When false, the resource is skipped for this deployment. См. условие.See condition.
версия_APIapiVersion YesYes Версия REST API, которая будет использована для создания ресурса.Version of the REST API to use for creating the resource. Чтобы определить доступные значения, см. раздел Справочник по шаблону.To determine available values, see template reference.
typetype YesYes Тип ресурса.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). Чтобы определить доступные значения, см. раздел Справочник по шаблону.To determine available values, see template reference. Для дочернего ресурса формат типа зависит от того, является ли он вложенным в родительский ресурс или определен за пределами родительского ресурса.For a child resource, the format of the type depends on whether it's nested within the parent resource or defined outside of the parent resource. См. о настройке имени и типа дочернего ресурса.See Set name and type for child resources.
Имяname YesYes Имя ресурса.Name of the resource. Имя должно соответствовать ограничениям компонентов URI, определенным в RFC3986.The name must follow URI component restrictions defined in RFC3986. Службы Azure, предоставляющие имя ресурса внешним сторонам, проверяют имя, чтобы убедиться, что это не попытка подмены другого удостоверения.Azure services that expose the resource name to outside parties validate the name to make sure it isn't an attempt to spoof another identity. Для дочернего ресурса формат имени зависит от того, является ли он вложенным в родительский ресурс или определен за пределами родительского ресурса.For a child resource, the format of the name depends on whether it's nested within the parent resource or defined outside of the parent resource. См. о настройке имени и типа дочернего ресурса.See Set name and type for child resources.
locationlocation VariesVaries Поддерживаемые географические расположения указанного ресурса.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) don't require a location. См. раздел Задание расположения ресурса.See Set resource location.
Тегиtags НетNo Теги, связанные с ресурсом.Tags that are associated with the resource. Примените теги, чтобы логически организовать ресурсы в подписке.Apply tags to logically organize resources across your subscription.
комментарииcomments НетNo Заметки по ресурсам в шаблоне.Your notes for documenting the resources in your template. Дополнительные сведения см. в разделе комментариев в шаблонах.For more information, see Comments in templates.
копированиеcopy НетNo Количество создаваемых ресурсов (если нужно несколько экземпляров).If more than one instance is needed, the number of resources to create. Параллельный режим используется по умолчанию.The default mode is parallel. Используйте последовательный режим, если вы не хотите развертывать все ресурсы одновременно.Specify serial mode when you don't want all or the resources to deploy at the same time. Дополнительные сведения см. в статье Создание нескольких экземпляров ресурсов в Azure Resource Manager.For more information, see Create several 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 aren't dependent on each other, they're 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 aren't defined in this template must already exist. Избегайте добавления ненужных зависимостей, так как это может замедлить развертывание и привести к созданию циклических зависимостей.Avoid adding unnecessary dependencies as they can slow your deployment and create circular dependencies. Рекомендации по настройке зависимостей см. в статье Определение зависимостей в шаблонах диспетчера ресурсов Azure.For guidance on setting dependencies, see Defining dependencies in Azure Resource Manager templates.
propertiesproperties НетNo Параметры конфигурации ресурса.Resource-specific configuration settings. Значения свойств совпадают со значениями, указываемыми в тексте запроса для операции 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. Кроме того, можно указать массив copy для создания нескольких экземпляров свойства.You can also specify a copy array to create several instances of a property. Чтобы определить доступные значения, см. раздел Справочник по шаблону.To determine available values, see template reference.
skusku НетNo В некоторых ресурсах допускается использовать значения, определяющие номер SKU для развертывания.Some resources allow values that define the SKU to deploy. Например, можно указать тип избыточности для учетной записи хранения.For example, you can specify the type of redundancy for a storage account.
kindkind НетNo В некоторых ресурсах допускается использовать значение, которое определяет тип развертываемого ресурса.Some resources allow a value that defines the type of resource you deploy. Например, можно указать в качестве типа создаваемой базы данных Cosmos DB.For example, you can specify the type of Cosmos DB to create.
Планplan НетNo В некоторых ресурсах допускается использовать значения, определяющие номер плана для развертывания.Some resources allow values that define the plan to deploy. Например, можно указать образ Marketplace для виртуальной машины.For example, you can specify the marketplace image for a virtual machine.
ресурсовresources НетNo Дочерние ресурсы, которые зависят от определяемого ресурса.Child resources that depend on the resource being defined. Следует указать только те типы ресурсов, которые разрешены в схеме родительского ресурса.Only provide resource types that are permitted by the schema of the parent resource. Зависимость от родительского ресурса не подразумевается.Dependency on the parent resource isn't implied. Ее необходимо определить явным образом.You must explicitly define that dependency. См. о настройке имени и типа дочернего ресурса.See Set name and type for child resources.

Выходные данныеOutputs

В разделе выходных данных следует указать значения, которые возвращаются после развертывания.In the Outputs section, you specify values that are returned from deployment. Как правило, значения возвращаются из ресурсов, которые были развернуты.Typically, you return values from resources that were deployed.

В следующем примере показана структура определения выходных данных:The following example shows the structure of an output definition:

"outputs": {
  "<output-name>" : {
    "condition": "<boolean-value-whether-to-output-value>",
    "type" : "<type-of-output-value>",
    "value": "<output-value-expression>"
  }
}
Имя элементаElement name обязательныеRequired ОПИСАНИЕDescription
Имя выходных данныхoutput-name YesYes Имя выходного значения.Name of the output value. Должно быть допустимым идентификатором JavaScript.Must be a valid JavaScript identifier.
conditioncondition НетNo Логическое значение, которое указывает, возвращается ли выходное значение.Boolean value that indicates whether this output value is returned. Если установлено значение true, то при развертывании значение является частью выходных данных.When true, the value is included in the output for the deployment. Если установлено значение false, при развертывании выходное значение не создается.When false, the output value is skipped for this deployment. Когда не задано, по умолчанию используется значение true.When not specified, the default value is true.
typetype YesYes Тип выходного значения.Type of the output value. Выходные значения поддерживает те же типы, что и входные параметры шаблона.Output values support the same types as template input parameters. Если для типа выходных данных указано значение SecureString , оно не отображается в журнале развертывания и не может быть извлечено из другого шаблона.If you specify securestring for the output type, the value isn't displayed in the deployment history and can't be retrieved from another template. Чтобы использовать значение секрета в нескольких шаблонах, сохраните секрет в Key Vault и сослаться на секрет в файле параметров.To use a secret value in more than one template, store the secret in a Key Vault and reference the secret in the parameter file. Дополнительные сведения см. в статье Использование Azure Key Vault для передачи защищенного значения параметра во время развертывания.For more information, see Use Azure Key Vault to pass secure parameter value during deployment.
Значениеvalue YesYes Выражение на языке шаблона, которое вычисляется и возвращается в качестве выходного значения.Template language expression that is evaluated and returned as output value.

Примеры использования выходных данных см. в разделе выходные данные в шаблоне Azure Resource Manager.For examples of how to use outputs, see Outputs in Azure Resource Manager template.

Комментарии и метаданныеComments and metadata

Есть несколько вариантов добавления комментариев и метаданных к шаблону.You have a few options for adding comments and metadata to your template.

КомментарииComments

Для встроенных комментариев можно использовать либо //, либо /* ... */ но этот синтаксис не работает со всеми инструментами.For inline comments, you can use either // or /* ... */ but this syntax doesn't work with all tools. Редактор шаблонов портала нельзя использовать для работы с шаблонами со встроенными комментариями.You can't use the portal template editor to work on templates with inline comments. Если вы добавляете этот стиль комментариев, убедитесь, что используемые инструменты поддерживают встроенные комментарии JSON.If you add this style of comment, be sure the tools you use support inline JSON comments.

Примечание

Чтобы развернуть шаблоны с комментариями с помощью Azure CLI, необходимо использовать параметр --handle-extended-json-format.To deploy templates with comments by using Azure CLI, you must use the --handle-extended-json-format switch.

{
  "type": "Microsoft.Compute/virtualMachines",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[parameters('location')]", //defaults to resource group location
  "apiVersion": "2018-10-01",
  "dependsOn": [ /* storage account and network interface must be deployed first */
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

В Visual Studio Code расширение средств Azure Resource Manager может автоматически обнаружить шаблон диспетчер ресурсов и соответствующим образом изменить языковой режим.In Visual Studio Code, the Azure Resource Manager Tools extension can automatically detect Resource Manager template and change the language mode accordingly. Если вы видите Azure Resource Manager шаблон в правом нижнем углу VS Code, можно использовать встроенные комментарии.If you see Azure Resource Manager Template at the bottom right corner of VS Code, you can use the inline comments. В таком случае встроенные комментарии больше не будут помечены как недопустимые.The inline comments are no longer marked as invalid.

Visual Studio Code режим шаблона Azure Resource Manager

МетаданныеMetadata

Вы можете добавить объект metadata практически в любом месте шаблона.You can add a metadata object almost anywhere in your template. Resource Manager игнорирует объект, но ваш редактор JSON может предупредить вас, что свойство недопустимо.Resource Manager ignores the object, but your JSON editor may warn you that the property isn't valid. Определите необходимые свойства в объекте.In the object, define the properties you need.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "comments": "This template was developed for demonstration purposes.",
    "author": "Example Name"
  },

В разделе параметров добавьте объект metadata со свойством description.For parameters, add a metadata object with a description property.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "User name for the Virtual Machine."
    }
  },

При развертывании шаблона через портал текст, который вы указываете в описании, автоматически используется в качестве подсказки для этого параметра.When deploying the template through the portal, the text you provide in the description is automatically used as a tip for that parameter.

Отображается подсказка для параметра

В разделе ресурсов добавьте элемент comments или объект метаданных.For resources, add a comments element or a metadata object. В следующем примере показан и элемент комментариев, и объект метаданных.The following example shows both a comments element and a metadata object.

"resources": [
  {
    "comments": "Storage account used to store VM disks",
    "apiVersion": "2018-07-01",
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[concat('storage', uniqueString(resourceGroup().id))]",
    "location": "[parameters('location')]",
    "metadata": {
      "comments": "These tags are needed for policy compliance."
    },
    "tags": {
      "Dept": "[parameters('deptName')]",
      "Environment": "[parameters('environment')]"
    },
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
  }
]

В разделе выходных данных добавьте объект метаданных в выходное значение.For outputs, add a metadata object to the output value.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
    "metadata": {
      "comments": "Return the fully qualified domain name"
    }
  },

Добавить объект метаданных в определяемые пользователем функции невозможно.You can't add a metadata object to user-defined functions.

Многострочные строкиMulti-line strings

Строку можно разбить на несколько строк.You can break a string into multiple lines. Например, свойство Location и одно из комментариев в следующем примере JSON.For example the location property and one of the comments in the following JSON example.

{
  "type": "Microsoft.Compute/virtualMachines",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[
    parameters('location')
    ]", //defaults to resource group location
  "apiVersion": "2018-10-01",
  /*
    storage account and network interface
    must be deployed first
  */
  "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

Чтобы развернуть шаблоны с многострочными строками с помощью Azure CLI, необходимо использовать параметр --handle-extended-json-format.To deploy templates with multi-line strings by using Azure CLI, you must use the --handle-extended-json-format switch.

Дополнительная информацияNext steps