Предоставление значений с помощью файлов параметров
В предыдущих уроках вы предоставляли значения параметров в командной строке при создании развертывания. Этот метод отлично подходит для создания и тестирования файлов Bicep, но он не подойдет для большого количества параметров или автоматизации развертывания. Из этого урока вы узнаете о различных способах установки значений параметров.
Примечание.
Команды в этом уроке демонстрируют основные понятия. На этом этапе не выполняйте команды. Вскоре вы поупражняетесь с полученными знаниями.
Создание файлов параметров
файлы параметров позволяют легко задавать значения параметров как набор. В файле параметров вы указываете значения параметров в файле Bicep. Файлы параметров создаются с помощью файла параметров Bicep с расширением .bicepparam
или файлом параметров JSON, содержащим значения параметров. Вы можете указать файл параметров при развертывании шаблона Bicep. Вот как выглядит файл параметров JSON:
{
"$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 \
--name main \
--template-file main.bicep \
--parameters main.parameters.json
При создании нового развертывания с помощью командлета New-AzResourceGroupDeployment
можно указать имя файла параметров, который вы хотите использовать с аргументом -TemplateParameterFile
:
New-AzResourceGroupDeployment `
-Name main `
-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 \
--name main \
--template-file main.bicep \
--parameters main.parameters.json \
appServicePlanInstanceCount=5
При создании развертывания переопределяется одно из значений параметров. Имя параметра нужно указать в виде аргумента командлета:
New-AzResourceGroupDeployment `
-Name main `
-TemplateFile main.bicep `
-TemplateParameterFile main.parameters.json `
-appServicePlanInstanceCount 5
Рассмотрим, какие значения будут использоваться.
Параметр | Значение | Объяснение |
---|---|---|
location |
Расположение группы ресурсов. | В файле Bicep для этого параметра задано значение по умолчанию, и оно не переопределено. |
appServicePlanSku |
Объект со свойством name , для которого задано значение P1v3 , и tier со значением PremiumV3 . |
Значение по умолчанию в файле Bicep переопределяется файлом параметров. |
appServicePlanInstanceCount |
5 |
Значение, указанное во время развертывания, переопределяет значение по умолчанию и значение в файле параметров. |
Используя сочетание подходов для указания значений параметров, вы избежите дублирования значений параметров в нескольких местах и сможете сохранить гибкость переопределения, где это требуется.