Объявление ресурса в шаблонах ARM
Для развертывания ресурса с помощью шаблона Azure Resource Manager (шаблон ARM) добавьте объявление ресурса. Используйте массив resources
в шаблоне JSON.
LanguageVersion 2.0 делает список улучшений шаблонов JSON ARM, таких как изменение объявления ресурсов из массива в объект. Большинство примеров, показанных в этой статье, по-прежнему используют resources
массив. Сведения о языкеVersion 2.0 см. в разделе "Использование символьного имени".
Примечание.
Текущий выпуск расширения средств Azure Resource Manager для Visual Studio Code не распознает улучшения, внесенные в languageVersion 2.0.
Совет
Мы рекомендуем использовать Bicep, так как он предоставляет те же возможности, что и шаблоны ARM, и имеет более простой синтаксис. Дополнительные сведения см. в документации по объявлению ресурсов.
В шаблоне ограничено 800 ресурсов. Дополнительные сведения см. в разделе Ограничения шаблона.
Настройка типа и версии ресурса
При добавлении ресурса в шаблон начните с настройки типа ресурса и версии API. Эти значения определяют другие свойства, доступные для ресурса.
В следующем примере показано, как задать тип ресурса и версию API для учетной записи хранения. В примере не показано полное объявление ресурса.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
...
}
]
Установка имени ресурса
У каждого ресурса есть имя. При задании имени ресурса обратите внимание на правила и ограничения для имен ресурсов.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[parameters('storageAccountName')]",
...
}
]
Определение расположения
Для многих ресурсов требуется расположение. Определить, требуется ли ресурсу расположение, можно с помощью технологии IntelliSense или справочника по шаблону. В следующем примере мы добавляем параметр location, используемый для учетной записи хранения.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
...
}
]
Дополнительные сведения см. в разделе Задание расположения ресурса в шаблоне ARM.
Настройка тегов
Вы можете добавлять теги к ресурсу во время развертывания. Теги помогают логически упорядочивать развернутые ресурсы. Примеры различных способов указания тегов см. в разделе Теги шаблонов ARM.
Настройка свойств для конкретного ресурса
Приведенные выше свойства являются общими для большинства типов ресурсов. После задания этих значений необходимо задать свойства, относящиеся к типу ресурсов, которые вы развертываете.
Используйте IntelliSense или ссылку на шаблон, чтобы определить, какие свойства доступны и какие из них являются обязательными. В следующем примере задаются оставшиеся свойства учетной записи хранения.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
Использование символьного имени
В Bicep каждое определение ресурса имеет символическое имя. Символьное имя используется для ссылки на ресурс из других частей файла Bicep. Для поддержки символьного имени в шаблонах JSON ARM добавьте languageVersion
версию 2.0
и измените определение ресурса из массива на объект. При languageVersion
указании для шаблона символьное имя должно быть указано для ресурсов корневого уровня. Например:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.ContainerService/managedClusters",
...
}
]
}
Предыдущий код JSON можно записать в следующий код JSON:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"resources": {
"aks": {
"type": "Microsoft.ContainerService/managedClusters",
...
}
}
}
В символьных именах учитывается регистр. Допустимые символы для символьных имен — буквы, цифры и _. Символьные имена должны быть уникальными в шаблоне, но могут перекрываться именами переменных, именами параметров и именами выходных данных в шаблоне. В следующем примере символическое имя ресурса учетной записи хранения имеет то же имя, что и выходные данные.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": {
"myStorage": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
},
"outputs": {
"myStorage":{
"type": "object",
"value": "[reference('myStorage')]"
}
}
}
Эталонная функция может использовать символическое имя ресурса, как показано в предыдущем примере. Ссылочная функция больше не может использовать имя ресурса, например reference(parameters('storageAccountName'))
, не допускается.
Если ресурс deployments используется в развертывании символьного имени, используйте apiVersion 2020-09-01
или более поздней версии.
Объявление существующих ресурсов
С languageVersion 2.0
помощью символьного имени для объявления ресурсов можно объявить существующие ресурсы. Свойство ресурса верхнего уровня приводит к тому, "existing": true
что ARM считывает, а не развертывает ресурс, как показано в следующем примере:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"languageVersion": "2.0",
"resources": {
"storageAccount": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "storageacct",
"existing": true
}
},
"outputs": {
"saBlocksPlaintext": {
"type": "bool",
"value": "[ reference('storageAccount').supportsHttpsTrafficOnly]"
}
}
}
Существующие ресурсы не должны определять какие-либо свойства, кроме type
, apiVersion
и name
.
Следующие шаги
- Дополнительные сведения об условном развертывании см. в разделе Условное развертывание в шаблонах ARM.
- Сведения о настройке зависимостей ресурсов см. в разделе Определение порядка развертывания ресурсов в шаблонах ARM.