기본적으로 환경 이름, azd up 구독 및 위치의 세 가지를 묻는 메시지가 표시됩니다. 그러나 실제 프로젝트에는 환경 유형, 프로젝트 소유자 또는 팀 이름과 같은 추가 입력이 필요한 경우가 많습니다. 이 문서에서는 가장 간단한 방법부터 가장 유연한 사용자 지정 프롬프트를 추가하는 세 가지 방법을 설명합니다. 동일한 템플릿에서 세 가지 방법을 모두 혼합하고 일치시킬 수 있습니다.
옵션 1: @allowed 데코레이터가 있는 목록
사용자 지정 프롬프트를 추가하는 가장 간단한 방법은 Bicep 매개 변수에서 @allowed 데코레이터를 사용하는 것입니다.
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
더 많은 데코레이터 옵션은 Bicep 입력 매개 변수에 대한 Azure Developer CLI 메타데이터로 작업 참조하세요.
옵션 2: 자유 텍스트 입력
고정 목록 대신 개방형 입력이 필요한 경우 기본값이 없는 매개 변수를 선언합니다.
azd에서 기본값이 없고 값이 없는 필수 매개 변수가 발견될 경우 main.parameters.json에서 사용자는 자유 텍스트 입력을 요청받습니다.
파일에 매개 변수를 추가합니다 infra/main.bicep .
@description('Who owns this project')
param projectOwner string
실행 azd up하면 사용자가 값을 입력하고 Enter 키를 누릅니다.
옵션 3: 사용자 지정 논리에 대한 후크
Bicep 데코레이터는 대부분의 시나리오를 다루지만 API의 동적 목록, 조건부 프롬프트, 유효성 검사 또는 사용자 지정 메뉴 스타일 UI와 같은 더 많은 유연성이 필요한 경우가 있습니다. 이러한 경우, preprovision 앞에서 사용자 지정 스크립트를 실행하기 위해 후크를 사용합니다.
흐름 이해
후크 접근 방식은 다음 체인을 통해 작동합니다.
- 후크 스크립트가 실행되고 사용자 지정 메뉴, 유효성 검사 또는 기타 논리를 사용하여 사용자에게 메시지를 표시합니다.
- 스크립트는 .를 사용하여
azd env set VARIABLE_NAME value값을 저장합니다. -
.azure/<env>/.env에 값이 유지됩니다. -
main.parameters.json는 값을${VARIABLE_NAME}로 참조합니다. - Bicep은 프로비저닝하는 동안 일반 매개변수로 이를 수신합니다.
후크 스크립트 만들기
사용자에게 메시지를 표시하고 결과를 저장하는 후크 스크립트를 만듭니다. 다음 예제에는 값이 이미 설정된 경우 다시 실행 시 프롬프트를 건너뛰는 idempotency Guard와 잘못된 입력을 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 사용자 입력을 읽을 수 있도록 스크립트를 콘솔에 바인딩합니다. 후크 구성에 대한 자세한 내용은 명령 및 이벤트 후크를 사용하여 Azure 개발자 CLI 워크플로 사용 참조하세요.
올바른 방법 선택
| 시나리오 | 접근법 |
|---|---|
| 고정된 값 목록에서 선택합니다. |
@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 합니다.