Поделиться через


Создание файла параметров для развертывания Bicep

Файлы параметров Bicep позволяют определять значения в отдельном файле, которые затем передаются в файл main.bicep. Файл параметров предоставляет значения, которые могут изменяться в зависимости от подписки, среды и/или региона. Использование файла параметров обеспечивает согласованность в развертываниях IaC, обеспечивая гибкость. Некоторые из этих гибких возможностей могут позволить организации воспользоваться преимуществами затрат путем правильного определения их непроизводственных сред, сохраняя ту же основную инфраструктуру.

Эти файлы параметров также помогают упростить подход к развертыванию CI/CD. Каждый файл параметров находится под управлением системой контроля версий и передается в соответствующие этапы автоматического развертывания. Эти файлы параметров обеспечивают согласованное развертывание.

В этой статье показано, как создать файл параметров, который можно использовать вместо передачи параметров в качестве встроенных значений в скрипте. Вы можете использовать либо файл параметров Bicep с расширением .bicepparam, либо файл параметров JSON, содержащий значение параметра.

Примечание.

Файлы параметров Bicep поддерживаются только в Bicep CLI версии 0.18.4 или более поздней версии, Azure CLI версии 2.47.0 или более поздней версии, а также в Azure PowerShell версии 9.7.1 или более поздней версии.

Один файл Bicep может иметь несколько связанных с ним файлов параметров Bicep. Однако каждый файл параметров Bicep предназначен для одного определённого файла Bicep. Эту связь можно установить, применяя инструкцию using в файле параметров Bicep.

Файлы параметров Bicep можно скомпилировать в файлы параметров JSON, которые можно развернуть с помощью Bicep-файла. Дополнительные сведения см. в разделе build-params. Файл параметров JSON можно также декомпилировать в файл параметров Bicep. Дополнительные сведения см. в разделе decompile-params.

Файл параметров

Файл параметров использует следующий формат:

using '<path>/<file-name>.bicep'

param <first-parameter-name> = <first-value>
param <second-parameter-name> = <second-value>

Инструкцию using можно применить с помощью файла Bicep, шаблонов JSON Azure Resource Manager, модулей Bicep и спецификаций шаблонов. Например:

using './main.bicep'
...
using './azuredeploy.json'
...
using 'br/public:avm/res/storage/storage-account:0.9.0' 
...
using 'br:myacr.azurecr.io/bicep/modules/storage:v1'
...
using 'ts:00000000-0000-0000-0000-000000000000/myResourceGroup/storageSpec:1.0'
...

Дополнительные сведения см. в инструкции по использованию.

Выражения можно использовать со значением по умолчанию. Например:

using 'main.bicep'

param storageName = toLower('MyStorageAccount')
param intValue = 2 + 2

Вы можете ссылаться на переменные среды в качестве значений параметров. Например:

using './main.bicep'

param intFromEnvironmentVariables = int(readEnvironmentVariable('intEnvVariableName'))

Можно определить и использовать переменные. Для использования переменных в файлах необходимо использовать .bicepparam Bicep версии 0.21.X или более поздней версии. См. следующие примеры.

using './main.bicep'

var storagePrefix = 'myStorage'
param primaryStorageName = '${storagePrefix}Primary'
param secondaryStorageName = '${storagePrefix}Secondary'
using './main.bicep'

var testSettings = {
  instanceSize: 'Small'
  instanceCount: 1
}

var prodSettings = {
  instanceSize: 'Large'
  instanceCount: 4
}

param environmentSettings = {
  test: testSettings
  prod: prodSettings
}

Примечание.

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

Если необходимо передать параметр с конфиденциальным значением, следует сохранить это значение в хранилище ключей. Вместо добавления конфиденциального значения в файл параметров используйте getSecret функцию для его извлечения. Дополнительную информацию см. в разделе «Использование Azure Key Vault для передачи секрета в качестве параметра во время развертывания Bicep».

Форматы типов параметров

В следующем примере показаны форматы различных типов параметров: string, integer, Boolean, array и object.

using './main.bicep'

param exampleString = 'test string'
param exampleInt = 2 + 2
param exampleBool = true
param exampleArray = [
  'value 1'
  'value 2'
]
param exampleObject = {
  property1: 'value 1'
  property2: 'value 2'
}

Используйте синтаксис Bicep для объявления объектов и массивов.

Имя файла

Расширение файла параметров Bicep равно .bicepparam.

Чтобы развернуть в нескольких средах, создайте несколько файлов параметров. При использовании нескольких файлов параметров пометьте их в соответствии с их использованием. Например, чтобы развернуть ресурсы, используйте метку main.dev.bicepparam для разработки и метку main.prod.bicepparam для рабочей среды.

Определение значений параметров

Чтобы определить имена и значения параметров, откройте файл Bicep. Просмотрите раздел параметров файла Bicep. В следующих примерах показаны параметры из файла Bicep с именем main.bicep:

@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param storageAccountType string = 'Standard_LRS'

В файле параметров найдите имя каждого параметра. Имена параметров в файле параметров должны совпадать с именами параметров в файле Bicep.

using 'main.bicep'

param storagePrefix
param storageAccountType

Инструкция using связывает файл параметров Bicep с файлом Bicep. Для получения дополнительной информации см. инструкцию по использованию.

При вводе ключевого слова param в Visual Studio Code он запрашивает доступные параметры и их описания из связанного файла Bicep.

Снимок экрана: запрос доступных параметров.

При наведении указателя мыши на param имя можно увидеть тип и описание параметров.

Снимок экрана: тип данных параметра и описание.

Просмотрите тип параметра, так как типы параметров в файле параметров должны использовать те же типы, что и файл Bicep. В этом примере оба типа параметров являются строками:

using 'main.bicep'

param storagePrefix = ''
param storageAccountType = ''

Проверьте файл Bicep на наличие параметров, включающих значение по умолчанию. Если параметр имеет значение по умолчанию, можно указать значение в файле параметров, но это не обязательно. Значение файла параметров заменяет значение по умолчанию файла Bicep.

using 'main.bicep'

param storagePrefix = '' // This value must be provided.
param storageAccountType = '' // This value is optional. Bicep uses default value if not provided.

Чтобы узнать, существуют ли ограничения, такие как максимальная длина, проверьте допустимые значения файла Bicep. Допустимые значения указывают диапазон значений, которые можно указать для параметра. В этом примере storagePrefix может содержать не более 11 символов и storageAccountType указывать допустимое значение.

using 'main.bicep'

param storagePrefix = 'storage'
param storageAccountType = 'Standard_ZRS'

Создание файла параметров

Файл параметров можно создать с помощью Visual Studio Code или интерфейса командной строки Bicep. Оба средства позволяют использовать Bicep-файл для создания файла параметров. Смотрите Генерация файла параметров для метода Visual Studio Code и Генерация файла параметров для метода Bicep CLI.

Создание файла параметров Bicep

В командной строке Bicep вы можете преобразовать файл параметров Bicep в файл параметров JSON. Дополнительные сведения см. в файле параметров сборки.

Развертывание Bicep-файла с помощью файла параметров

Azure CLI

Из Azure CLI можно передать файл параметров для развертывания с помощью Bicep-файла.

Файл Bicep можно развернуть, используя файл параметров Bicep с помощью Azure CLI версии 2.53.0 или более поздней и Bicep CLI версии 0.22.X или более поздней. using При использовании инструкции в файле параметров Bicep не требуется предоставлять --template-file параметр при указании файла параметров Bicep для коммутатора--parameters.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam

Встроенные параметры и файл параметров расположения можно использовать в той же операции развертывания. Например:

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam \
  --parameters storageAccountType=Standard_LRS

Для получения дополнительной информации см. статью Развертывание Bicep-файлов с помощью Azure CLI.

Azure PowerShell

В Azure PowerShell передайте локальный файл параметров с помощью TemplateParameterFile параметра.

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.bicep `
  -TemplateParameterFile C:\MyTemplates\storage.bicepparam

Встроенные параметры и файл параметров расположения можно использовать в той же операции развертывания. Например:

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.bicep `
  -TemplateParameterFile C:\MyTemplates\storage.bicepparam `
  -storageAccountType Standard_LRS

Дополнительные сведения см. в статье "Развертывание Bicep-файлов с помощью Azure PowerShell". Для развертывания .bicep файлов требуется Azure PowerShell версии 5.6.0 или более поздней.

Приоритет параметров

Встроенные параметры и локальный файл параметров можно использовать в той же операции развертывания. Например, можно указать некоторые значения в файле локальных параметров и добавить другие значения во время развертывания. Если вы предоставляете значения для параметра как в файле локальных параметров, так и во встроенном файле, то встроенное значение имеет приоритет.

Хотя внешние файлы параметров Bicep в настоящее время не поддерживаются, можно использовать внешний файл параметров JSON, предоставив URI файлу. При использовании файла внешних параметров укажите все значения параметров во внешнем файле. При использовании внешнего файла невозможно передавать другие значения ни встроенным способом, ни из локального файла, и все встроенные параметры игнорируются.

Конфликты в названиях параметров

Если файл Bicep содержит параметр с тем же именем, что и один из параметров в команде Azure PowerShell, Azure PowerShell представляет параметр из файла Bicep с FromTemplate постфиксом. Например, если параметр с именем ResourceGroupName в файле Bicep конфликтует с параметром ResourceGroupName в командлете New-AzResourceGroupDeployment, вам будет предложено указать значение для ResourceGroupNameFromTemplate. Этой путаницы можно избежать, используя имена параметров, которые не используются для команд развертывания.