Описание структуры и синтаксиса шаблонов ARM
В этой статье описывается структура шаблона Azure Resource Manager (ARM). Статья содержит информацию о разных разделах шаблона и свойствах, которые доступны в этих разделах.
Эта статья предназначена для пользователей, у которых есть опыт работы с шаблонами ARM. Она содержит подробные сведения о структуре шаблона. Пошаговые инструкции по созданию шаблона см. в статье Учебник. Создание и развертывание первого шаблона ARM. Чтобы узнать больше о шаблонах ARM с помощью управляемого набора модулей Microsoft Learn, см. статью Развертывание ресурсов и управление ими в Azure с помощью шаблонов ARM.
Совет
Bicep — это новый язык, который предлагает те же возможности, что и шаблоны ARM, но с более простым синтаксисом. Если вы рассматриваете инфраструктуру в качестве параметров кода, рекомендуем Bicep.
Чтобы узнать больше о разделах файла Bicep, ознакомьтесь со статьей Описание структуры и синтаксиса файлов Bicep.
Формат шаблона
Шаблон с самой простой структурой содержит следующие элементы:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "",
"contentVersion": "",
"apiProfile": "",
"definitions": { },
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ], /* or "resources": { } with languageVersion 2.0 */
"outputs": { }
}
Имя элемента | Обязательное поле | Описание |
---|---|---|
$schema | Да | Расположение файла схемы в нотации объектов JavaScript (JSON), в котором описывается версия языка шаблона. Номер используемой вами версии зависит от области развертывания и вашего редактора JSON. Если вы используете Visual Studio Code с расширением инструментов Azure Resource Manager, установите последнюю версию для развертывания групп ресурсов: https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json# Другие редакторы (в том числе Visual Studio) могут не подойти для обработки этой схемы. Для таких редакторов используйте: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json# Для развертывания подписок используйте: https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json# Для развертывания групп управления используйте: https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json# Для развертывания клиентов используйте: https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json# |
languageVersion | No | Языковая версия шаблона. Дополнительные сведения о усовершенствованиях languageVersion 2.0 см . в разделе languageVersion 2.0. |
contentVersion | Да | Версия шаблона (например, 1.0.0.0). Для этого элемента можно предоставить любое значение. Это значение позволяет задокументировать важные изменения в шаблоне. При развертывании ресурсов с помощью шаблона это значение позволяет убедиться в том, что используется нужный шаблон. |
apiProfile | No | Версия API, которая служит в качестве коллекции версий API для типов ресурсов. Используйте это значение, чтобы не указывать версии API для каждого ресурса в шаблоне. Если указать версию профиля API, не указав версию API для типа ресурса, Resource Manager использует для этого типа ресурса версию API, определенную в профиле. Свойство профиля API особенно полезно при развертывании шаблона в других средах, например Azure Stack и глобальной среде Azure. Используйте версию профиля API, чтобы шаблон автоматически применял версии, поддерживаемые в обеих средах. Список текущих версий профиля API и определенных в нем версий API ресурсов см. в статье Профиль API. Дополнительные сведения см. в разделе Отслеживание версий с помощью профилей API. |
Определения | No | Схемы, используемые для проверки значений массива и объектов. Определения поддерживаются только в languageVersion 2.0. |
parameters | No | Значения, которые предоставляются при выполнении развертывания для настройки развертывания ресурсов. |
variables | Нет | Значения, используемые в виде фрагментов JSON в шаблоне для упрощения выражений на языке шаблона. |
functions | No | Определяемые пользователем функции, доступные в шаблоне. |
resources | Да | Типы ресурсов, которые развертываются или обновляются в группе ресурсов или подписке. |
outputs | No | Значения, возвращаемые после развертывания. |
Каждый элемент содержит свойства, которые можно задать. В этой статье подробнее описаны разделы шаблона.
Определения
definitions
В разделе шаблона укажите схемы, используемые для проверки значений массива и объектов. Definitions
можно использовать только с languageVersion 2.0.
"definitions": {
"<definition-name": {
"type": "<data-type-of-definition>",
"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>,
"prefixItems": <schema-for-validating-array>,
"items": <schema-for-validating-array-or-boolean>,
"properties": <schema-for-validating-object>,
"additionalProperties": <schema-for-validating-object-or-boolean>,
"discriminator": <schema-to-apply>,
"nullable": <boolean>,
"metadata": {
"description": "<description-of-the-type-definition>"
}
}
}
Имя элемента | Обязательное поле | Описание |
---|---|---|
определение-имя | Да | Имя определения типа. должен быть указан допустимый идентификатор JavaScript. |
type | Да | Тип определения типа. Допустимые типы и значения: string, securestring, int, bool, object, secureObject и array. См. статью Типы данных в шаблонах ARM. |
allowedValues | No | Массив разрешенных значений для определения типа, чтобы убедиться, что задано правильное значение. |
minValue | No | Минимальное значение для определений типов int— это значение включительно. |
maxValue | No | Максимальное значение для определений типов int, это значение включительно. |
minLength | No | Минимальная длина для определений строк, безопасной строки и типа массива включает в себя инклюзивное значение. |
maxLength | No | Максимальная длина строк, безопасных строк и определений типов массива включает в себя инклюзивное значение. |
префиксItems | No | Схема проверки элемента массива в том же индексе. |
items | No | Схема, применяемая ко всем элементам массива, индекс которого больше наибольшего prefixItems индекса ограничения, или логический элемент для управления элементами массива, индекс которого больше самого большого prefixItems индекса ограничения. |
свойства | No | Схема проверки объекта. |
additionalProperties | No | Схема, применяемая ко всем свойствам, не упомянутым в properties ограничении, или логическое значение для принятия любого свойства, не определенного в ограничении properties . |
дискриминатор | No | Схема, применяемая на основе дискриминационных свойств. |
nullable | No | Логическое значение, указывающее, что значение может быть null или опущено. |
описание | No | Описание определения типа, отображаемого пользователям на портале. Дополнительные сведения см. в разделе комментариев в шаблонах. |
Примеры использования определений типов см. в разделе "Определения типов" в шаблонах ARM.
В Bicep см . определяемые пользователем типы данных.
Параметры
В разделе parameters
шаблона указываются значения, которые вы можете вводить во время развертывания ресурсов. В шаблоне ограничено 256 параметрами . Количество параметров можно уменьшить с помощью объектов, содержащих несколько свойств.
Доступные свойства для параметра
"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>,
"prefixItems": <schema-for-validating-array>,
"items": <schema-for-validating-array-or-boolean>,
"properties": <schema-for-validating-object>,
"additionalProperties": <schema-for-validating-object-or-boolean>,
"discriminator": <schema-to-apply>,
"nullable": <boolean>,
"metadata": {
"description": "<description-of-the parameter>"
}
}
}
Имя элемента | Обязательное поле | Описание |
---|---|---|
parameter-name | Да | Имя параметра. должен быть указан допустимый идентификатор JavaScript. |
type | Да | Тип значения параметра. Допустимые типы и значения: string, securestring, int, bool, object, secureObject и array. См. статью Типы данных в шаблонах ARM. |
defaultValue | No | Значение параметра, используемое по умолчанию, если пользователь не задал иное значение. |
allowedValues | No | Массив допустимых значений параметра, по которому сверяются правильные значения. |
minValue | No | Минимальное значение для параметров типа int. Это включающее значение. |
maxValue | No | Максимальное значение для параметров типа int. Это включающее значение. |
minLength | No | Минимальная длина (включительно) параметров типа string, secure string и array. |
maxLength | No | Максимальная длина (включительно) параметров типа string, secure string и array. |
префиксItems | No | Определение типа для проверки элемента массива в том же индексе. prefixItems поддерживается только в languageVersion 2.0. |
items | No | Схема, применяемая ко всем элементам массива, индекс которого больше наибольшего prefixItems индекса ограничения, или логический элемент для управления элементами массива, индекс которого больше самого большого prefixItems индекса ограничения. items поддерживается только в languageVersion 2.0. |
свойства | No | Схема проверки объекта. properties поддерживается только в languageVersion 2.0. |
additionalProperties | No | Схема, применяемая ко всем свойствам, не упомянутым в properties ограничении, или логическое значение для принятия любого свойства, не определенного в ограничении properties . additionalProperties поддерживается только в languageVersion 2.0. |
дискриминатор | No | Схема, применяемая на основе дискриминационных свойств. discriminator поддерживается только в languageVersion 2.0. |
nullable | No | Логическое значение, указывающее, что значение может быть null или опущено. nullable поддерживается только в languageVersion 2.0. |
описание | No | Описание параметра, отображаемого для пользователей на портале. Дополнительные сведения см. в разделе комментариев в шаблонах. |
Примеры использования параметров см. в статье Параметры в шаблонах ARM.
Найдите в Bicep раздел параметров.
Переменные
В разделе variables
указываются значения, которые можно использовать в разных частях шаблона. Переменные определять не обязательно, однако они часто упрощают шаблон, снижая число сложных выражений. Формат каждой переменной соответствует одному из типов данных. В шаблоне ограничено 256 переменными .
В приведенном ниже примере показаны доступные параметры для определения переменных.
"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
, см. в статье Итерация переменной в шаблонах ARM.
Примеры использования переменных см. в статье Переменные в шаблонах ARM.
Найдите в Bicep раздел переменных.
Функции
В шаблоне можно создать свои собственные функции. Эти функции доступны для использования в шаблоне. Как правило, определяются сложные выражения, которые вы не хотите повторять в шаблоне. Создаются определяемые пользователем функции на основе выражений и функции, которые поддерживаются в шаблонах.
При определении пользовательской функции есть несколько ограничений:
- Функция не может обращаться к переменным.
- Функция может использовать только параметры, определенные в самой функции. При использовании функции parameters внутри пользовательской функции доступны только параметры этой функции.
- Функция не может вызывать другие функции, определяемые пользователем.
- Для функции нельзя использовать ссылочную функцию.
- Для параметров этой функции нельзя задавать значения по умолчанию.
"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>"
}
}
}
}
],
Имя элемента | Обязательное поле | Описание |
---|---|---|
пространство имен | Да | Пространство имен для пользовательских функций. Используется для предотвращения конфликтов имен с функциями шаблона. |
function-name | Да | Имя пользовательской функции. При вызове функции объедините ее имя с пространством имен. Например, чтобы вызвать функцию с именем uniqueName в пространстве имен contoso, используйте имя "[contoso.uniqueName()]" . |
parameter-name | No | Имя параметра, используемого в пользовательской функции. |
parameter-value | No | Тип значения параметра. Допустимые типы и значения: string, securestring, int, bool, object, secureObject и array. |
output-type | Да | Тип выходного значения. Выходные значения поддерживают те же типы, что и входные параметры функции. |
output-value | Да | Выражение языка шаблона, которое оценивается и возвращается из функции. |
Примеры использования пользовательских функций см. в статье Пользовательские функции в шаблоне ARM.
В Bicep не поддерживаются определяемые пользователем функции. Bicep поддерживает различные функции и операторы.
Ресурсы
В разделе resources
определяются ресурсы, которые развертываются или обновляются. В шаблоне ограничено 800 ресурсов .
Ресурсы определяются с помощью следующей структуры:
"resources": [
{
"condition": "<true-to-deploy-this-resource>",
"type": "<resource-provider-namespace/resource-type-name>",
"apiVersion": "<api-version-of-resource>",
"name": "<name-of-the-resource>",
"comments": "<your-reference-notes>",
"location": "<location-of-resource>",
"dependsOn": [
"<array-of-related-resource-names>"
],
"tags": {
"<tag-name1>": "<tag-value1>",
"<tag-name2>": "<tag-value2>"
},
"identity": {
"type": "<system-assigned-or-user-assigned-identity>",
"userAssignedIdentities": {
"<resource-id-of-identity>": {}
}
},
"sku": {
"name": "<sku-name>",
"tier": "<sku-tier>",
"size": "<sku-size>",
"family": "<sku-family>",
"capacity": <sku-capacity>
},
"kind": "<type-of-resource>",
"scope": "<target-scope-for-extension-resources>",
"copy": {
"name": "<name-of-copy-loop>",
"count": <number-of-iterations>,
"mode": "<serial-or-parallel>",
"batchSize": <number-to-deploy-serially>
},
"plan": {
"name": "<plan-name>",
"promotionCode": "<plan-promotion-code>",
"publisher": "<plan-publisher>",
"product": "<plan-product>",
"version": "<plan-version>"
},
"properties": {
"<settings-for-the-resource>",
"copy": [
{
"name": ,
"count": ,
"input": {}
}
]
},
"resources": [
"<array-of-child-resources>"
]
}
]
Имя элемента | Обязательное поле | Описание |
---|---|---|
condition | No | Логическое значение, указывающее, подготавливается ли ресурс во время этого развертывания. Если установлено значение true , при развертывании создается ресурс. Если установлено значение false , при развертывании ресурс не создается. См. статью Условное развертывание в шаблонах ARM. |
type | Да | Тип ресурса. Это значение представляет собой сочетание пространства имен поставщика ресурсов и типа ресурса (например, Microsoft.Storage/storageAccounts ). Чтобы определить доступные значения, см. справочник по шаблонам. Для дочернего ресурса формат типа зависит от того, вложен он в родительский ресурс или определен за его пределами. См. о настройке имени и типа дочернего ресурса. |
версия_API | Да | Версия REST API, которая будет использована для создания ресурса. При создании нового шаблона укажите в качестве значения последнюю версию развертываемого ресурса. Пока шаблон работает надлежащим образом, продолжайте использовать ту же версию API. Продолжая использовать ту же версию API, вы можете не опасаться того, что с новой версией API изменится принцип работы шаблона. Рекомендуем обновлять версию API только в том случае, если требуется использовать новую функцию, появившуюся в более поздней версии. Чтобы определить доступные значения, см. справочник по шаблонам. |
name | Да | Имя ресурса. Имя должно соответствовать ограничениям компонентов URI, определенным в RFC3986. Службы Azure, предоставляющие имя ресурса внешним пользователям, проверяют это имя, чтобы убедиться, что это не попытка подделки другого удостоверения. Для дочернего ресурса формат имени зависит от того, вложен он в родительский ресурс или определен за его пределами. См. о настройке имени и типа дочернего ресурса. |
comments | No | Заметки по ресурсам в шаблоне. Дополнительные сведения см. в разделе комментариев в шаблонах. |
расположение | Разные | Поддерживаемые географические расположения указанного ресурса. Вы можете выбрать любое из доступных расположений. Но обычно имеет смысл выбрать расположение, которое находится недалеко от пользователей. Кроме того, целесообразно разместить взаимодействующие ресурсы в одном регионе. Большинству типов ресурсов нужно расположение, но некоторым типам (например, назначению роли) оно не требуется. См. статью Задание расположения ресурса в шаблоне ARM. |
Свойство dependsOn | No | Ресурсы, которые должны быть развернуты перед развертыванием этого ресурса. Resource Manager оценивает зависимости между ресурсами и развертывает эти ресурсы в правильном порядке. Если ресурсы не зависят друг от друга, они развертываются параллельно. Значение может представлять собой разделенный запятыми список имен ресурсов или уникальных идентификаторов ресурсов. Выводится только список ресурсов, развертываемых в этом шаблоне. Ресурсы, которые не определены в этом шаблоне, уже должны существовать. Избегайте добавления ненужных зависимостей, так как это может замедлить развертывание и привести к созданию циклических зависимостей. Руководство по установке зависимостей см. в статье Определение порядка развертывания ресурсов в шаблонах ARM. |
tags | No | Теги, связанные с ресурсом. Примените теги, чтобы логически организовать ресурсы в подписке. |
identity | No | Некоторые ресурсы поддерживают управляемые удостоверения для ресурсов Azure. У них на корневом уровне объявления ресурса есть объект Identity. Вы можете указать, назначается ли удостоверение пользователем или системой. Для назначаемых пользователем удостоверений укажите список идентификаторов ресурсов для удостоверений. Задайте для ключа идентификатор ресурса, а для значения — пустой объект. Дополнительные сведения см. в статье Настройка управляемых удостоверений для ресурсов Azure на виртуальной машине Azure с помощью шаблонов. |
sku | No | В некоторых ресурсах допускается использовать значения, определяющие номер SKU для развертывания. Например, можно указать тип избыточности для учетной записи хранения. |
kind | No | В некоторых ресурсах допускается использовать значение, которое определяет тип развертываемого ресурса. Например, можно указать тип создаваемого экземпляра Azure Cosmos DB. |
область | No | Свойство scope доступно только для типов ресурсов расширений. С его помощью можно указать область действия, отличную от области развертывания. См. статью Настройка области для ресурсов расширения в шаблонах ARM. |
copy | No | Количество создаваемых ресурсов (если нужно несколько экземпляров). Параллельный режим используется по умолчанию. Используйте последовательный режим, если вы не хотите развертывать все ресурсы одновременно. Дополнительные сведения см. в статье Создание нескольких экземпляров ресурсов в Azure Resource Manager. |
план | No | В некоторых ресурсах допускается использовать значения, определяющие номер плана для развертывания. Например, можно указать образ Marketplace для виртуальной машины. |
свойства | No | Параметры конфигурации ресурса. Значения свойств совпадают со значениями, указываемыми в тексте запроса для операции REST API (метод PUT) для создания ресурса. Кроме того, можно указать массив copy для создания нескольких экземпляров свойства. Чтобы определить доступные значения, см. справочник по шаблонам. |
ресурсы | No | Дочерние ресурсы, которые зависят от определяемого ресурса. Следует указать только те типы ресурсов, которые разрешены в схеме родительского ресурса. Зависимость от родительского ресурса не подразумевается. Ее необходимо определить явным образом. См. о настройке имени и типа дочернего ресурса. |
Для поддержки символьного имени Bicep в шаблонах JSON ARM добавьте languageVersion
версию или более новую версию 2.0
и измените определение ресурса из массива на объект.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"resources": {
"<name-of-the-resource>": {
...
}
}
}
Дополнительные сведения см. в статье о ресурсах DSC.
Найдите в Bicep раздел ресурсов.
Выходные данные
В разделе outputs
указываются значения, которые возвращаются после развертывания. Как правило, возвращаются значения из развернутых ресурсов. В шаблоне ограничено 64 выходных данных.
В следующем примере показана структура определения выходных данных:
"outputs": {
"<output-name>": {
"condition": "<boolean-value-whether-to-output-value>",
"type": "<type-of-output-value>",
"value": "<output-value-expression>",
"copy": {
"count": <number-of-iterations>,
"input": <values-for-the-variable>
}
}
}
Имя элемента | Обязательное поле | Описание |
---|---|---|
output-name | Да | Имя выходного значения. должен быть указан допустимый идентификатор JavaScript. |
condition | No | Логическое значение, которое указывает, возвращается ли выходное значение. Если установлено значение true , то при развертывании значение является частью выходных данных. Если установлено значение false , при развертывании выходное значение не создается. Когда не задано, по умолчанию используется значение true . |
type | Да | Тип выходного значения. Выходные значения поддерживает те же типы, что и входные параметры шаблона. Если указан тип выходных данных securestring, значение не отображается в журнале развертывания и его невозможно получить из другого шаблона. Чтобы использовать значение секрета в нескольких шаблонах, храните секрет в Key Vault и ссылайтесь на него в файле параметров. Дополнительные сведения см. в статье Использование Azure Key Vault для передачи защищенного значения параметра во время развертывания. |
значение | No | Выражение на языке шаблона, которое вычисляется и возвращается в качестве выходного значения. Укажите value или copy. |
copy | No | Используется для возврата нескольких значений выходных данных. Укажите value или copy. Дополнительные сведения см. в статье Итерация выходных данных в шаблонах ARM. |
Примеры использования выходных данных см. в статье Выходные данные в шаблонах ARM.
Найдите в Bicep раздел выходных данных.
Комментарии и метаданные
Есть несколько вариантов добавления комментариев и метаданных к шаблону.
Комментарии
Для встроенных комментариев можно использовать символы //
или /* ... */
. В Visual Studio Code сохраните файлы параметров с комментариями в формате JSON с типом файла примечаний (JSONC), в противном случае вы получите сообщение об ошибке с сообщением "Комментарии, не разрешенные в JSON".
Примечание.
При развертывании шаблонов с комментариями с помощью Azure CLI используйте версию 2.3.0 или более позднюю и укажите параметр --handle-extended-json-format
.
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-03-01",
"name": "[variables('vmName')]", // to customize name, change it in variables
"location": "[parameters('location')]", //defaults to resource group location
"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 может автоматически определять шаблоны ARM и менять режим языка. Если в правом нижнем углу окна Visual Studio Code отображается надпись Шаблон Azure Resource Manager, то вы можете использовать встроенные комментарии. В таком случае встроенные комментарии больше не будут помечены как недопустимые.
Найдите в Bicep раздел комментариев.
Метаданные
Вы можете добавить объект metadata
практически в любом месте шаблона. Resource Manager игнорирует объект, но ваш редактор JSON может предупредить вас, что свойство недопустимо. Определите необходимые свойства в объекте.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"comments": "This template was developed for demonstration purposes.",
"author": "Example Name"
},
Для parameters
добавьте объект metadata
со свойством description
.
"parameters": {
"adminUsername": {
"type": "string",
"metadata": {
"description": "User name for the Virtual Machine."
}
},
При развертывании шаблона через портал текст, который вы указываете в описании, автоматически используется в качестве подсказки для этого параметра.
Для resources
добавьте элемент comments
или объект metadata
. В приведенном ниже примере показаны элемент comments
и объект metadata
.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[format('{0}{1}', 'storage', uniqueString(resourceGroup().id))]",
"comments": "Storage account used to store VM disks",
"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": {}
}
]
Для outputs
добавьте объект metadata
к выходному значению.
"outputs": {
"hostname": {
"type": "string",
"value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
"metadata": {
"comments": "Return the fully qualified domain name"
}
},
Добавить объект metadata
в пользовательские функции невозможно.
Многострочные строки
Строку можно разбить на несколько строк. Обратите внимание на свойство location
и один из комментариев в приведенном ниже примере JSON.
Примечание.
Для развертывания шаблонов с многострочными литералами используйте Azure PowerShell или Azure CLI. Что касается CLI, используйте версию не ниже 2.3.0 и укажите переключатель --handle-extended-json-format
.
Многострочные литералы не поддерживаются при развертывании шаблона через портал Azure, конвейер DevOps или REST API.
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-03-01",
"name": "[variables('vmName')]", // to customize name, change it in variables
"location": "[
parameters('location')
]", //defaults to resource group location
/*
storage account and network interface
must be deployed first
*/
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
"[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
Найдите в Bicep раздел мультиломаных.
languageVersion 2.0
Примечание.
Использование любого languageVersion
из этих -experimental
условий не рекомендуется в рабочих средах, так как экспериментальная функциональность может быть изменена в любое время.
Примечание.
Текущий выпуск расширения средств Azure Resource Manager для Visual Studio Code не распознает улучшения, внесенные в languageVersion 2.0.
Чтобы использовать languageVersion 2.0, добавьте "languageVersion": "2.0"
в шаблон:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"resources": {
"<name-of-the-resource>": {
...
}
}
}
Улучшения и изменения, которые приходят с languageVersion 2.0:
- Используйте символьные имена в шаблоне ARM JSON. Дополнительные сведения см. в разделе "Использование символьного имени".
- Используйте символьные имена в циклах копирования ресурсов. См . раздел "Использование символьного имени".
- Используйте символьные имена в
dependsOn
массивах. См . раздел "Зависит от ресурсов" в цикле. - Используйте символическое имя вместо имени ресурса в
reference
функции. См. справочные материалы. - Функция references(), которая возвращает массив объектов, представляющих состояния среды выполнения коллекции ресурсов. См . ссылки.
- Используйте свойство ресурса "существующий" для объявления существующих ресурсов для ARM для чтения, а не для развертывания ресурса. См. раздел "Объявление существующих ресурсов".
- Создание определяемых пользователем типов. См . определение типа.
- Дополнительные ограничения проверки агрегатного типа для использования в параметрах и выходных данных.
- Значение по умолчанию для
expressionEvaluationOptions
свойстваinner
. Значениеouter
заблокировано. См . область оценки выражений в вложенных шаблонах. - Функция
deployment
возвращает ограниченное подмножество свойств. См . развертывание. - Если ресурс deployments используется в развертывании символьного имени, используйте apiVersion
2020-09-01
или более поздней версии. - В определении ресурсов двойные экранирование значений в выражении больше не требуется. См . экранные символы.
При использовании любой из следующих функций Bicep автоматически включается создание кода версии 2.0:
- определяемые пользователем типы
- определяемые пользователем функции
- Импорт во время компиляции
- экспериментальные функции
Следующие шаги
- Полные шаблоны для различных типов решений доступны на странице Шаблоны быстрого запуска Azure.
- Дополнительные сведения о функциях, которые можно использовать в шаблонах, см. в статье Функции шаблонов ARM.
- Инструкции по объединению нескольких шаблонов при развертывании см. в статье Использование связанных и вложенных шаблонов при развертывании ресурсов Azure.
- Рекомендации по созданию шаблонов см. в статье Рекомендации по работе с шаблонами ARM.
- Ответы на распространенные вопросы см. в разделе Часто задаваемые вопросы о шаблонах ARM.