Руководство по добавлению переменных в шаблон ARM
Из этого учебника вы узнаете, как добавить переменные в шаблон Azure Resource Manager (ARM). Переменные упрощают шаблоны. Они позволяют написать выражение один раз, а затем его несколько раз использовать в шаблоне. Для выполнения инструкций из этого учебника требуется 7 минут.
Предварительные требования
Советуем выполнить инструкции из руководства о функциях, но это необязательно.
Вам потребуется установить Visual Studio Code с расширением инструментов Resource Manager,а также либо Azure PowerShell, либо Azure CLI. Дополнительные сведения см. в разделе об инструментах шаблона.
Проверка шаблона
В конце предыдущего учебника шаблон содержал следующий файл JSON:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Standard_ZRS",
"Premium_LRS",
"Premium_ZRS",
"Standard_GZRS",
"Standard_RAGZRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[parameters('storageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
Имя учетной записи хранения Azure должно быть уникальным, чтобы легко продолжить создание шаблона ARM. Если вы работали с предыдущими учениками в этой серии, вы, вероятно, устали придумывать уникальные имена. Эту проблему можно решить, добавив переменную, создающую уникальное имя для учетной записи хранения.
Использование переменной
В следующем примере показаны изменения для добавления переменной в шаблон, создающей уникальное имя учетной записи хранения. Скопируйте весь файл и замените шаблон на его содержимое.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"minLength": 3,
"maxLength": 11
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Standard_ZRS",
"Premium_LRS",
"Premium_ZRS",
"Standard_GZRS",
"Standard_RAGZRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[variables('uniqueStorageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
Обратите внимание, что он включает переменную с именем uniqueStorageName
. Эта переменная использует четыре функции для создания строкового значения.
Вы уже знакомы с функцией parameters, поэтому мы не будем ее изучать.
Вы также знакомы с функцией resourceGroup. В этом случае вы получаете свойство id
вместо свойства location
, как показано в предыдущем учебнике. Свойство id
возвращает полный идентификатор группы ресурсов, включая идентификатор подписки и имя группы ресурсов.
Функция uniqueString создает значение хэша длиной 13 символов. Передаваемые параметры определяют возвращаемое значение. В этом учебнике идентификатор группы ресурсов используется в качестве входных данных для хэш-значения. Это означает, что можно развернуть этот шаблон в разных группах ресурсов и получить другое уникальное строковое значение. Однако при развертывании в той же группе ресурсов вы получаете то же значение.
Функция concat принимает значения и объединяет их. Для этой переменной она принимает строку из параметра и из функции uniqueString
и объединяет эти строки в одну.
Параметр storagePrefix
позволяет передавать префикс, который помогает в определении учетных записей хранения. Вы можете создать собственное соглашение об именовании, которое упростит определение учетных записей хранения в длинном списке ресурсов после развертывания.
Наконец, обратите внимание, что в качестве имени учетной записи хранилища теперь задана переменная, а не параметр.
Развертывание шаблона
Давайте развернем шаблон. Развернуть этот шаблон проще, чем предыдущие, так как вы предоставляете только префикс для имени учетной записи хранилища.
Если вы еще не создали группу ресурсов, см. этот раздел. В этом примере предполагается, что для переменной templateFile
указан путь к файлу шаблона, как показано в первом учебнике.
New-AzResourceGroupDeployment `
-Name addnamevariable `
-ResourceGroupName myResourceGroup `
-TemplateFile $templateFile `
-storagePrefix "store" `
-storageSKU Standard_LRS
Примечание
Если развертывание завершается сбоем, используйте параметр verbose
, чтобы получить сведения о создаваемых ресурсах. Используйте параметр debug
, чтобы получить дополнительные сведения для отладки.
Проверка развертывания
Чтобы проверить развертывание, просмотрите группу ресурсов на портале Azure.
- Войдите на портал Azure.
- В меню слева выберите Группы ресурсов.
- Выберите нужную группу ресурсов.
- Обратите внимание, что в качестве имени развернутой учетной записи хранения используется store плюс строка случайных символов.
Очистка ресурсов
Если вы переходите к следующему учебнику, вам не нужно удалять группу ресурсов.
Если вы прекращаете работу, то можете удалить группу ресурсов.
- На портале Azure в меню слева выберите Группы ресурсов.
- Введите имя группы ресурсов в текстовое поле Фильтрация всех полей....
- Установите флажок рядом с myResourceGroup и выберите myResourceGroup или имя вашей группы ресурсов.
- В главном меню выберите Удалить группу ресурсов.
Дальнейшие действия
В рамках этого учебника вы добавили переменную, которая создает уникальное имя для учетной записи хранения. При работе со следующим учебником вы вернете значение из развернутой учетной записи хранения.