Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Domyślnie azd up monituje o trzy elementy: nazwę środowiska, subskrypcję i lokalizację. Jednak rzeczywiste projekty często wymagają dodatkowych danych wejściowych, takich jak typ środowiska, właściciel projektu lub nazwa zespołu. W tym artykule opisano trzy podejścia do dodawania niestandardowych monitów — od najprostszych do najbardziej elastycznych. Możesz mieszać i dopasowywać wszystkie trzy podejścia w tym samym szablonie.
Opcja 1: Lista wyboru z dekoratorem @allowed
Najprostszym sposobem dodania niestandardowego monitu jest użycie dekoratora @allowed na parametrze Bicep. Gdy azd napotka parametr z wartościami @allowed i nie zostanie podana żadna wartość, zostanie wyświetlona interaktywna lista wyboru, podobna do wbudowanych selektorów subskrypcji i lokalizacji.
Dodaj parametr ozdobiony do infra/main.bicep pliku:
@description('The environment type')
@allowed([
'dev'
'staging'
'prod'
])
param environmentType string
Po uruchomieniu polecenia azd upazd program automatycznie wyświetla listę wyboru dla tego parametru. Użytkownik może nawigować przy użyciu klawiszy strzałek i wpisać, aby filtrować, podobnie jak selektor subskrypcji.
Nie jest wymagana żadna dodatkowa konfiguracja. Dodaj parametr do pliku Bicep, a azd zajmie się pozostałymi czynnościami.
Wskazówka
Użyj dekoratora @metadata z azd.default , aby wyróżnić wybór domyślny:
@allowed(['dev', 'staging', 'prod'])
@metadata({
azd: {
default: 'dev'
}
})
param environmentType string
Aby uzyskać więcej opcji dekoratora, zobacz Praca z metadanymi wiersza polecenia dewelopera Azure dla parametrów wejściowych Bicep.
Opcja 2: Wprowadzanie tekstu dowolnego
Jeśli potrzebujesz otwartych danych wejściowych zamiast stałej listy, zadeklaruj parametr bez wartości domyślnej. W przypadku azd napotkania wymaganego parametru, który nie ma wartości domyślnej i żadnej wartości w elemencie main.parameters.json, wyświetla użytkownikowi monit o wprowadzenie swobodnego tekstu.
Dodaj parametr do infra/main.bicep pliku:
@description('Who owns this project')
param projectOwner string
Po uruchomieniu polecenia azd upużytkownik wpisze wartość i naciśnie klawisz Enter.
Opcja 3: Hooki dla logiki niestandardowej
Bicep dekoratory obejmują większość scenariuszy, ale czasami potrzebujesz większej elastyczności, takich jak dynamiczne listy z API, podpowiedzi warunkowe, walidacja lub niestandardowy interfejs użytkownika w stylu menu. W takich przypadkach użyj haka preprovision , aby uruchomić skrypt niestandardowy przed azd provision.
Omówienie przepływu
Metoda oparta na haku działa przez następujący łańcuch:
- Skrypt hooka jest uruchamiany i prezentuje użytkownikowi niestandardowe menu, walidację lub inną logikę.
- Skrypt przechowuje wartości przy użyciu polecenia
azd env set VARIABLE_NAME value. - Wartości są utrwalane w pliku
.azure/<env>/.env. -
main.parameters.jsonodwołuje się do wartości jako${VARIABLE_NAME}. - Bicep odbiera je jako zwykłe parametry podczas prowizjonowania.
Tworzenie skryptu zaczepienia
Utwórz skrypt zaczepienia, który monituje użytkownika i zapisuje wynik. Poniższe przykłady obejmują ochronę idempotentności, która pomija monit po ponownym uruchomieniu, jeśli wartość jest już ustawiona, oraz default przypadek, który obsługuje nieprawidłowe dane wejściowe.
hooks/preprovision.ps1 Utwórz plik:
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"
Mapuj zmienną na parametr Bicep
main.parameters.json W pliku odwołaj się do zmiennej środowiskowej:
{
"parameters": {
"customTeamName": {
"value": "${CUSTOM_TEAM_NAME}"
}
}
}
main.bicep W pliku zadeklaruj parametr z wartością domyślną, więc azd nie wyświetla również monitu o jego podanie:
@description('Team name - set by preprovision hook')
param customTeamName string = ''
Włączanie haka
Dodaj konfigurację punktów zaczepienia do elementu azure.yaml:
hooks:
preprovision:
windows:
shell: pwsh
run: hooks/preprovision.ps1
interactive: true
posix:
shell: sh
run: hooks/preprovision.sh
interactive: true
Ustawienie interactive: true wiąże skrypt z konsolą, aby mógł odczytywać dane wejściowe użytkownika. Aby uzyskać więcej informacji na temat konfiguracji hooków, zobacz Dostosowywanie przepływów pracy interfejsu wiersza polecenia dewelopera Azure przy użyciu poleceń i hooków zdarzeń.
Wybieranie odpowiedniego podejścia
| Scenario | Metoda |
|---|---|
| Wybierz z stałej listy wartości. |
@allowed Dekorator (Opcja 1) |
| Zbieranie danych wejściowych w formie dowolnego tekstu. | Parametr bez wartości domyślnej (opcja 2) |
| Listy dynamiczne, wywołania interfejsu API lub logika warunkowa. | Skrypt hooka (opcja 3) |
| Pomiń wszystkie monity w CI/CD. | Wstępnie ustawione wartości (zobacz następującą sekcję) |
Pomiń monity i komunikaty w procesach CI/CD
Wszystkie trzy opcje obsługują tryb nieinterakcyjny. Przed uruchomieniem azd i przekazaniem --no-promptwstępnie ustawionych wartości:
# 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
Jeśli brakuje wymaganej wartości, azd raportuje dokładnie, którego parametru brakuje i wyświetla azd env config set polecenie potrzebne do jego naprawienia.
Treści powiązane
- Praca z metadanymi Azure Developer CLI dla parametrów wejściowych Bicep
- Dostosowywanie przepływów pracy Azure Developer CLI przy użyciu haków komend i zdarzeń
- Praca z zmiennymi środowiskowymi środowiska deweloperskiego CLI Azure
- Bicep parametry i dekoratory
- Przykładowe repozytorium: azd-custom-parameters