Предоставление значений с помощью файлов параметров

Завершено

В предыдущих уроках вы предоставляли значения параметров в командной строке при создании развертывания. Этот метод отлично подходит для создания и тестирования файлов 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 Значение, указанное во время развертывания, переопределяет значение по умолчанию и значение в файле параметров.

Используя сочетание подходов для указания значений параметров, вы избежите дублирования значений параметров в нескольких местах и сможете сохранить гибкость переопределения, где это требуется.