Упражнение. Добавление параметров и выходных данных в шаблон Azure Resource Manager
В этом упражнении вы добавите параметр для определения имени учетной записи хранения Azure во время развертывания. Затем вы добавите параметр для определения разрешенных номеров SKU учетной записи хранения и определите, какой из них следует использовать для этого развертывания. Вы также добавите полезность в шаблон Azure Resource Manager (шаблон ARM), добавив выходные данные, которые можно использовать позже в процессе развертывания.
Создание параметров для шаблона ARM
Здесь вы сделаете шаблон ARM более гибким, добавив параметры, которые можно задать во время выполнения. Создайте параметр для значения storageName
.
В файле azuredeploy.json в Visual Studio Code поместите указатель между фигурными скобками в атрибуте parameters. Выглядит следующим образом:
"parameters":{},
Нажмите клавишу ВВОД и введите par. Появится список связанных фрагментов кода. Выберите новый параметр, который добавляет универсальный параметр в шаблон. Он будет выглядеть примерно так:
"parameters": { "parameter1": { "type": "string", "metadata": { "description": "description" } } },
Измените параметр на параметр 1на storageName и оставьте тип строкой. Для параметра minLength укажите значение 3, а для параметра maxLength — 24. Добавьте в описание имя ресурса службы хранилища Azure.
Блок параметров должен выглядеть следующим образом.
"parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } },
Используйте этот новый параметр в блоке
resources
в значенияхname
иdisplayName
. Весь файл должен выглядеть следующим образом.{ "$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, "metadata": { "description": "The name of the Azure storage resource" } } }, "functions": [], "variables": {}, "resources": [ { "name": "[parameters('storageName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Standard_LRS", "tier": "Standard" } } ], "outputs": {} }
Сохраните файл.
Развертывание параметризованного шаблона ARM
Здесь вы измените имя развертывания, чтобы лучше отразить то, что такое развертывание делает и введите значение для нового параметра.
В терминале выполните следующие команды Azure CLI. Вы уже использовали этот фрагмент кода ранее, но имя развертывания изменилось. Укажите уникальное имя для параметра storageName
. Напомним, что это имя должно быть уникальным в пределах всей платформы Azure. Вы можете использовать уникальное имя, созданное в предыдущем модуле. В таком случае Azure обновит ресурс, а не создаст новый.
templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addnameparameter-"$today
az deployment group create \
--name $DeploymentName \
--template-file $templateFile \
--parameters storageName={your-unique-name}
В терминале выполните следующие команды Azure PowerShell. Вы уже использовали этот фрагмент кода ранее, но имя развертывания изменилось. Укажите уникальное имя для параметра storageName
. Напомним, что это имя должно быть уникальным в пределах всей платформы Azure. Вы можете использовать уникальное имя, созданное в предыдущем модуле. В таком случае Azure обновит ресурс, а не создаст новый.
$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile `
-storageName {your-unique-name}
Проверка развертывания
По завершении развертывания вернитесь к портал Azure в браузере. Перейдите в свою группу ресурсов. Вы видите, что теперь в ней указаны 3 успешных развертывания. Нажмите эту ссылку.
Обратите внимание, что в списке присутствуют все три развертывания.
Исследуйте развертывание addnameparameter, как вы уже делали ранее.
Добавление параметра для ограничения разрешенных значений
Здесь вы будете использовать параметры для ограничения значений, разрешенных для параметра.
Поместите курсор после закрывающей фигурной скобки параметра
storageName
. Добавьте запятую и нажмите клавишу ВВОД.Снова введите par и выберите new-parameter.
Измените новый универсальный параметр следующим образом:
"storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] }
Здесь вы перечисляете значения, которые этот параметр будет разрешать. Если шаблон запускается со значением, которое не разрешено, развертывание завершится ошибкой.
Добавьте в этот параметр какой-нибудь комментарий.
Шаблоны ARM поддерживают комментарии
//
и/* */
.Обновите параметр resources так, чтобы он использовал параметр
storageSKU
. Чтобы упростить выполнение этого шага, воспользуйтесь функцией IntelliSense в Visual Studio Code."sku": { "name": "[parameters('storageSKU')]" }
Весь файл должен выглядеть следующим образом.
{ "$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, "metadata": { "description": "The name of the Azure storage resource" } }, "storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] } }, "functions": [], "variables": {}, "resources": [ { "name": "[parameters('storageName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]", "tier": "Standard" } } ], "outputs": {} }
Сохраните файл.
Развертывание шаблона ARM
В данном случае вы выполните развертывание с помощью параметра storageSKU
, который входит в список разрешенных. После этого вы попробуете развернуть шаблон, используя параметр storageSKU
, которого нет в списке разрешенных. Предполагается, что второе развертывание должно завершиться неудачно.
Для развертывания шаблона выполните следующие команды. Укажите уникальное имя для параметра
storageName
. Напомним, что это имя должно быть уникальным в пределах всей платформы Azure. Вы можете использовать уникальное имя, созданное в предыдущем разделе. В таком случае Azure обновит ресурс, а не создаст новый.templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addSkuParameter-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Standard_GRS storageName={your-unique-name}
Дождитесь завершения развертывания. Как и ожидалось, это развертывание выполнилось успешно. Допустимые значения запрещают пользователям шаблона передавать значения параметров, которые не работают для ресурса. Давайте посмотрим, что произойдет, если указать недопустимый SKU.
Выполните следующие команды для развертывания шаблона с параметром, который не входит в список разрешенных. В данном случае значение параметра
storageSKU
изменено на Basic. Укажите уникальное имя для параметраstorageName
. Напомним, что это имя должно быть уникальным в пределах всей платформы Azure. Вы можете использовать уникальное имя, созданное в предыдущем разделе. В таком случае Azure обновит ресурс, а не создаст новый.templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addSkuParameter-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Basic storageName={your-unique-name}
Это развертывание завершается неудачно. Обратите внимание на ошибку.
Для развертывания шаблона выполните следующие команды. Укажите уникальное имя для параметра
storageName
. Напомним, что это имя должно быть уникальным в пределах всей платформы Azure. Вы можете использовать уникальное имя, созданное в предыдущем разделе. В таком случае Azure обновит ресурс, а не создаст новый.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_GRS
Дождитесь завершения развертывания. Как и ожидалось, это развертывание выполнилось успешно. Допустимые значения запрещают пользователям шаблона передавать значения параметров, которые не работают для ресурса. Давайте посмотрим, что произойдет, если указать недопустимый SKU.
Выполните следующие команды для развертывания шаблона с параметром, который не входит в список разрешенных. В данном случае значение параметра
storageSKU
изменено на Basic. Укажите уникальное имя для параметраstorageName
. Напомним, что это имя должно быть уникальным в пределах всей платформы Azure. Вы можете использовать уникальное имя, созданное в предыдущем разделе. В таком случае Azure обновит ресурс, а не создаст новый.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Basic
Это развертывание завершается неудачно. Обратите внимание на ошибку.
Добавление выходных данных в шаблон ARM
Здесь вы добавите в outputs
раздел шаблона ARM, чтобы вывести конечные точки для ресурса учетной записи хранения.
В файле azuredeploy.json в Visual Studio Code поместите указатель между фигурными скобками в атрибуте выходных данных
"outputs":{},
.Нажмите клавишу ВВОД, а затем введите . Вы получите список связанных фрагментов. Выберите new-output. В шаблон будет добавлен универсальный блок выходных данных. Он будет выглядеть следующим образом.
"outputs": { "output1": { "type": "string", "value": "value" }
Измените значение output1 на storageEndpoint, а затем измените значение
type
объекта. Измените значениеvalue
"[reference(parameters('storageName'))).primaryEndpoints]". Это выражение мы обсуждали в предыдущем модуле — оно получает данные конечных точек. Так как мы указали объект в качестве типа, он вернет объект в формате JSON."outputs": { "storageEndpoint": { "type": "object", "value": "[reference(parameters('storageName')).primaryEndpoints]" }
Сохраните файл.
Развертывание шаблона ARM с выходными данными
Здесь вы развернете шаблон и увидите выходные данные конечных точек в формате JSON. Вам нужно указать уникальное имя для параметра storageName
. Напомним, что это имя должно быть уникальным в пределах всей платформы Azure. Вы можете использовать уникальное имя, созданное в предыдущем разделе. В таком случае Azure обновит ресурс, а не создаст новый.
Для развертывания шаблона выполните следующие команды. Обязательно замените {your-unique-name} на свою уникальную строку.
templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addoutputs-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Standard_LRS storageName={your-unique-name}
Обратите внимание на результат.
Для развертывания шаблона выполните следующие команды. Обязательно замените {your-unique-name} на свою уникальную строку.
$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addOutputs-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_LRS
Обратите внимание на результат.
Проверка развертывания выходных данных
На портале Azure перейдите в свое развертывание addOutputs. Вы видите, что теперь отображаются и выходные данные.