Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per impostazione predefinita, azd up richiede tre elementi: nome dell'ambiente, sottoscrizione e posizione. Tuttavia, i progetti reali spesso richiedono input aggiuntivi, ad esempio un tipo di ambiente, il proprietario del progetto o il nome del team. Questo articolo descrive tre approcci per l'aggiunta di prompt personalizzati, dal più semplice al più flessibile. È possibile combinare e associare tutti e tre gli approcci nello stesso modello.
Opzione 1: Lista di selezione con il decoratore @allowed
Il modo più semplice per aggiungere un prompt personalizzato consiste nell'usare il decorator @allowed su un parametro di Bicep. Quando azd rileva un parametro con @allowed valori e non viene fornito alcun valore, viene visualizzato un elenco di selezione interattivo, simile alle selezioni predefinite per la sottoscrizione e la posizione.
Aggiungere il parametro decorato al infra/main.bicep file:
@description('The environment type')
@allowed([
'dev'
'staging'
'prod'
])
param environmentType string
Quando si esegue azd up, azd presenta automaticamente un elenco di selezione per questo parametro. L'utente può spostarsi usando i tasti di direzione e digitare per filtrare, proprio come lo strumento di selezione della sottoscrizione.
Non è necessaria alcuna configurazione aggiuntiva. Aggiungere il parametro al file Bicep e azd gestisce il resto.
Suggerimento
Usa il decoratore @metadata con azd.default per evidenziare una selezione predefinita:
@allowed(['dev', 'staging', 'prod'])
@metadata({
azd: {
default: 'dev'
}
})
param environmentType string
Per altre opzioni di decorator, vedere Lavorare con i metadati della CLI per sviluppatori di Azure per i parametri di input di Bicep.
Opzione 2: input di testo libero
Se è necessario un input aperto anziché un elenco fisso, dichiarare un parametro senza valore predefinito. Quando azd rileva un parametro obbligatorio senza valore predefinito e senza valore in main.parameters.json, viene richiesto all'utente di immettere testo libero.
Aggiungere il parametro al infra/main.bicep file:
@description('Who owns this project')
param projectOwner string
Quando si esegue azd up, l'utente digita un valore e preme INVIO.
Opzione 3: Hook per la logica personalizzata
I decoratori di Bicep coprono la maggior parte degli scenari, ma a volte è necessaria una maggiore flessibilità, come elenchi dinamici da un'API, prompt condizionali, convalida o un'interfaccia utente personalizzata stilizzata come un menu. In questi casi, utilizzare un preprovision gancio per eseguire uno script personalizzato prima di azd provision.
Comprendere il flusso
L'approccio hook funziona attraverso la catena seguente:
- Uno script hook viene eseguito e presenta all'utente dei menu personalizzati, opzioni di convalida o altra logica.
- Lo script archivia i valori usando
azd env set VARIABLE_NAME value. - I valori vengono mantenuti in
.azure/<env>/.env. -
main.parameters.jsonfa riferimento ai valori come${VARIABLE_NAME}. - Bicep li riceve come parametri regolari durante il provisioning.
Creare lo script hook
Creare uno script di hook che chiede all'utente e archivia il risultato. Gli esempi seguenti includono una protezione di idempotenza che salta il prompt nei re-run se è già impostato un valore e un caso default che gestisce l'input non valido.
Creare un hooks/preprovision.ps1 file:
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"
Associa la variabile a un parametro Bicep
main.parameters.json Nel file fare riferimento alla variabile di ambiente:
{
"parameters": {
"customTeamName": {
"value": "${CUSTOM_TEAM_NAME}"
}
}
}
Nel tuo file main.bicep, dichiara il parametro con un valore predefinito affinché azd non richieda anche:
@description('Team name - set by preprovision hook')
param customTeamName string = ''
Abilitare l'hook
Aggiungi la configurazione dell'hook a azure.yaml:
hooks:
preprovision:
windows:
shell: pwsh
run: hooks/preprovision.ps1
interactive: true
posix:
shell: sh
run: hooks/preprovision.sh
interactive: true
L'impostazione interactive: true associa lo script alla console in modo che possa leggere l'input dell'utente. Per altre informazioni sulla configurazione degli hook, vedere Customizzare i flussi di lavoro dell'interfaccia della riga di comando per sviluppatori Azure usando hook di comandi ed eventi.
Scegliere l'approccio corretto
| Scenario | Avvicinarsi |
|---|---|
| Selezionare un elenco fisso di valori. |
@allowed decorator (opzione 1) |
| Raccogli input di testo libero. | Parametro senza impostazione predefinita (opzione 2) |
| Elenchi dinamici, chiamate API o logica condizionale. | Script di hook (opzione 3) |
| Ignorare tutti i prompt in CI/CD. | Valori preimpostati (vedere la sezione seguente) |
Ignorare gli inviti in CI/CD
Tutte e tre le opzioni supportano la modalità non interattiva. Preconfigurare i valori prima di eseguire azd e passare --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
Se manca un valore obbligatorio, azd segnala esattamente il parametro mancante e visualizza il azd env config set comando necessario per correggerlo.
Contenuti correlati
- Utilizzare i metadati di Azure Developer CLI per i parametri di input di Bicep
- Customizzare i flussi di lavoro dell'interfaccia della riga di comando per sviluppatori Azure usando hook di comandi ed eventi
- Lavorare con le variabili di ambiente di Azure Developer CLI
- Bicep parametri e decoratori
- Repository di esempio: azd-custom-parameters