Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
По умолчанию azd up запрашивает три элемента: имя среды, подписку и местоположение. Однако реальные проекты часто требуют дополнительных входных данных, таких как тип среды, владелец проекта или имя команды. В этой статье описывается три подхода к добавлению пользовательских запросов, от самых простых до самых гибких. Вы можете комбинировать и совмещать все три подхода в одном шаблоне.
Вариант 1: Список выбора с декоратором @allowed
Наиболее простой способ добавить настраиваемый запрос — использовать декоратор @allowed для параметра Bicep. При azd обнаружении параметра с возможными @allowed значениями и при отсутствии установленного значения отображается интерактивный список выбора, аналогичный встроенным средствам выбора подписки и расположения.
Добавьте в файл декорированный параметр infra/main.bicep :
@description('The environment type')
@allowed([
'dev'
'staging'
'prod'
])
param environmentType string
При запуске azd upazd автоматически отображается список выбора для этого параметра. Пользователь может перемещаться с помощью клавиш со стрелками и вводить текст для фильтрации, как и при выборе подписки.
Дополнительная конфигурация не требуется. Добавьте параметр в файл Bicep, а azd обработает остальное.
Подсказка
Используйте декоратор @metadata с azd.default, чтобы выделить выбор по умолчанию.
@allowed(['dev', 'staging', 'prod'])
@metadata({
azd: {
default: 'dev'
}
})
param environmentType string
Дополнительные параметры декоратора см. в разделе Работа с метаданными CLI разработчика Azure для входных параметров Bicep.
Вариант 2. Ввод свободного текста
Если вам нужны открытые входные данные вместо фиксированного списка, объявите параметр без значения по умолчанию. При обнаружении azd обязательного параметра, не имеющего значения по умолчанию и без установленного значения, main.parameters.json запрашивает у пользователя ввод произвольного текста.
Добавьте параметр в infra/main.bicep файл:
@description('Who owns this project')
param projectOwner string
При запуске azd up, пользователь вводит значение и нажимает клавишу ВВОД.
Вариант 3. Хуки для пользовательской логики
Декораторы Bicep охватывают большинство сценариев, но иногда требуется дополнительная гибкость, например, динамические списки из API, условные подстановки, проверка или пользовательский интерфейс в стиле меню. В этих случаях используйте preprovision перехватчик для запуска пользовательского скрипта до azd provision.
Изучите поток
Метод хука выполняется посредством следующей цепочки:
- Хуковый скрипт запускается и предлагает пользователю пользовательские меню, валидацию или другую логику.
- Скрипт сохраняет значения с помощью
azd env set VARIABLE_NAME value. - Значения сохраняются в
.azure/<env>/.env. -
main.parameters.jsonссылается на значения как${VARIABLE_NAME}. - Bicep получает их как обычные параметры во время подготовки.
Создание hook-скрипта
Создайте хук-скрипт, который выдаёт запрос пользователю и сохраняет результат. В следующих примерах включен механизм идемпотентности, который пропускает запрос при повторных запусках, если значение уже задано, и случай default, обрабатывающий недопустимые входные данные.
hooks/preprovision.ps1 Создайте файл:
Write-Host "========================================"
Write-Host " Custom Pre-Provision Configuration"
Write-Host "========================================"
# Skip prompt if value is already set
$existingTeam = $null
$output = azd env get-value CUSTOM_TEAM_NAME 2>&1
if ($LASTEXITCODE -eq 0 -and $output) {
$existingTeam = $output.Trim()
}
if ($existingTeam) {
Write-Host "Team name is already set to: $existingTeam"
exit 0
}
Write-Host "Available teams:"
Write-Host " 1) platform-engineering"
Write-Host " 2) app-development"
Write-Host " 3) data-science"
Write-Host " 4) devops"
Write-Host " 5) Enter custom value"
$choice = Read-Host "Select a team (1-5)"
$teamName = switch ($choice) {
"1" { "platform-engineering" }
"2" { "app-development" }
"3" { "data-science" }
"4" { "devops" }
"5" { Read-Host "Enter custom team name" }
default {
Write-Error "Invalid selection: $choice"
exit 1
}
}
# Store in azd environment
azd env set CUSTOM_TEAM_NAME $teamName
Write-Host "Team name set to: $teamName"
Сопоставьте переменную с параметром Bicep
main.parameters.json В файле наведите ссылку на переменную среды:
{
"parameters": {
"customTeamName": {
"value": "${CUSTOM_TEAM_NAME}"
}
}
}
main.bicep В файле объявите параметр по умолчанию, поэтому azd не запрашивает его:
@description('Team name - set by preprovision hook')
param customTeamName string = ''
Включение крючка
Добавьте конфигурацию хука в вашу azure.yaml:
hooks:
preprovision:
windows:
shell: pwsh
run: hooks/preprovision.ps1
interactive: true
posix:
shell: sh
run: hooks/preprovision.sh
interactive: true
Параметр interactive: true привязывает скрипт к консоли, чтобы он смог прочитать входные данные пользователя. Дополнительные сведения о настройке перехватчика см. в разделе Настройка рабочих процессов CLI разработчика Azure с помощью перехватчиков команд и событий.
Выберите правильный подход
| Сценарий | Подход |
|---|---|
| Выберите из фиксированного списка значений. |
@allowed декоратор (вариант 1) |
| Соберите бесплатные текстовые входные данные. | Параметр без значения по умолчанию (вариант 2) |
| Динамические списки, вызовы API или условная логика. | Скрипт перехватчика (вариант 3) |
| Пропустить все запросы в CI/CD. | Предварительные значения (см. следующий раздел) |
Пропускать запросы в CI/CD
Все три варианта поддерживают неинтерактивный режим. Предварительно установите значения перед выполнением azd и передачей --no-prompt:
# Set hook values
azd env set CUSTOM_TEAM_NAME "platform-engineering"
# Set Bicep parameter values
azd env config set infra.parameters.environmentType "prod"
azd env config set infra.parameters.projectOwner "ci-bot"
# Run with no prompts
azd up --subscription <subscription-id> --location eastus --no-prompt
Если необходимое значение отсутствует, azd сообщает точно, какой параметр отсутствует и отображает команду, необходимую azd env config set для его исправления.
Связанный контент
- Работа с метаданными интерфейса командной строки (CLI) разработчика Azure для входных параметров Bicep
- Настройте рабочие процессы CLI разработчика Azure с помощью перехватчиков команд и событий
- Работа с переменными среды в CLI для разработчиков Azure
- Параметры и декораторы Bicep
- Пример репозитория: azd-custom-parameters