Предоставление значений с помощью файлов параметров
В предыдущих уроках вы предоставляли значения параметров в командной строке при создании развертывания. Этот метод отлично подходит для создания и тестирования файлов Bicep, но он не подойдет для большого количества параметров или автоматизации развертывания. Из этого урока вы узнаете о различных способах установки значений параметров.
Примечание.
Команды в этом уроке демонстрируют основные понятия. На этом этапе не выполняйте команды. Вскоре вы поупражняетесь с полученными знаниями.
Создание файлов параметров
Файлы параметров позволяют легко указать значения параметров в виде набора. В файле параметров укажите значения для параметров в Bicep-файле. Такие файлы создаются на языке JSON (нотация объектов JavaScript). Вы можете предоставить файл параметров при развертывании шаблона Bicep. Вот как выглядит файл параметров:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"appServicePlanInstanceCount": {
"value": 3
},
"appServicePlanSku": {
"value": {
"name": "P1v3",
"tier": "PremiumV3"
}
},
"cosmosDBAccountLocations": {
"value": [
{
"locationName": "australiaeast"
},
{
"locationName": "southcentralus"
},
{
"locationName": "westeurope"
}
]
}
}
}
Рассмотрим каждую часть этого файла более подробно:
$schema
указывает Azure Resource Manager на то, что этот файл является файлом параметров.contentVersion
— это свойство, которое можно использовать для отслеживания значительных изменений в файле параметров. Обычно для него задано значение по умолчанию —1.0.0.0
.- В разделе
parameters
приведены все параметры и значения, которые необходимо использовать. Значение параметра должно быть указано в виде объекта. Объект имеет свойствоvalue
, которое определяет фактическое значение параметра для использования.
Как правило, файл параметров создается для каждой среды. Рекомендуется включить имя среды в имя файла параметров. Например, у вас может быть файл параметров с именем main.parameters.dev.json для среды разработки и файл параметров main.parameters.production.json для рабочей среды.
Примечание.
Указывайте значения только для тех параметров, которые присутствуют в шаблоне Bicep. При создании развертывания Azure проверяет параметры и выдает ошибку, если вы попытались указать значение для параметра, которого нет в файле Bicep.
Использование файлов параметров при развертывании
При создании развертывания с помощью команды az deployment group create
вы можете указать имя файла параметров, который нужно использовать, с помощью аргумента --parameters
:
az deployment group create \
--template-file main.bicep \
--parameters main.parameters.json
При создании развертывания с помощью командлета New-AzResourceGroupDeployment
вы можете указать имя файла параметров, который нужно использовать, с помощью аргумента -TemplateParameterFile
:
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-TemplateParameterFile main.parameters.json
Переопределение значений параметров
Вы узнали о трех способах указания значений параметров: использование значений по умолчанию, командной строки и файлов параметров. Обычно для указания разных значений для одного и того же параметра используются разные способы. Вы уже ознакомились с этим подходом при работе со значениями по умолчанию. Если вы создали для параметра значение по умолчанию, а потом указали другое значение с помощью командной строки, приоритет имеет значение, заданное с помощью командной строки. Рассмотрим, где файлы параметров находятся в этом порядке приоритета.
На схеме видно, что значения в файлах параметров переопределяют значения по умолчанию, а значения параметров, заданные с помощью командной строки, переопределяют значения в файлах параметров.
Давайте посмотрим, как работает этот подход. Ниже приведен пример файла Bicep, в котором определены три параметра со значениями по умолчанию:
param location string = resourceGroup().location
param appServicePlanInstanceCount int = 1
param appServicePlanSku object = {
name: 'F1'
tier: 'Free'
}
Рассмотрим файл параметров, в котором переопределены значения двух параметров, но не указано значение для параметра location
:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"appServicePlanInstanceCount": {
"value": 3
},
"appServicePlanSku": {
"value": {
"name": "P1v3",
"tier": "PremiumV3"
}
}
}
}
При создании развертывания также переопределяется значение для appServicePlanInstanceCount
. Как и в случае с файлами параметров, используется аргумент --parameters
, но значение, которое необходимо переопределить, добавляется отдельно:
az deployment group create \
--template-file main.bicep \
--parameters main.parameters.json \
appServicePlanInstanceCount=5
При создании развертывания переопределяется одно из значений параметров. Имя параметра нужно указать в виде аргумента командлета:
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-TemplateParameterFile main.parameters.json `
-appServicePlanInstanceCount 5
Рассмотрим, какие значения будут использоваться.
Параметр | Значение | Объяснение |
---|---|---|
location |
Расположение группы ресурсов. | В файле Bicep для этого параметра задано значение по умолчанию, и оно не переопределено. |
appServicePlanSku |
Объект со свойством name , для которого задано значение P1v3 , и tier со значением PremiumV3 . |
Значение по умолчанию в файле Bicep переопределяется значением, указанным в файле параметров. |
appServicePlanInstanceCount |
5 |
Значение, указанное во время развертывания, переопределяет значение по умолчанию и значение в файле параметров. |
Используя сочетание подходов для указания значений параметров, вы избежите дублирования значений параметров в нескольких местах и сможете сохранить гибкость переопределения, где это требуется.