Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Por padrão, azd up solicita três coisas: nome do ambiente, assinatura e localização. No entanto, projetos reais geralmente precisam de entrada extra, como um tipo de ambiente, proprietário do projeto ou nome da equipe. Este artigo descreve três abordagens para adicionar prompts personalizados, da mais simples à mais flexível. Você pode misturar e combinar todas as três abordagens no mesmo modelo.
Opção 1: lista de opções com o decorador @allowed
A maneira mais simples de adicionar um prompt personalizado é usar o decorador @allowed em um parâmetro Bicep. Quando azd encontra um parâmetro com @allowed valores e nenhum valor é fornecido, ele exibe uma lista de seleção interativa, semelhante aos seletores internos de assinatura e local.
Adicione o parâmetro decorado ao arquivo infra/main.bicep :
@description('The environment type')
@allowed([
'dev'
'staging'
'prod'
])
param environmentType string
Quando você executa azd up, azd apresenta automaticamente uma lista de seleção para esse parâmetro. O usuário pode navegar usando teclas de direção e digitar para filtrar, assim como o seletor de assinatura.
Nenhuma configuração extra é necessária. Adicione o parâmetro ao arquivo Bicep e azd manipula o restante.
Dica
Use o decorador @metadata com azd.default para destacar uma seleção padrão.
@allowed(['dev', 'staging', 'prod'])
@metadata({
azd: {
default: 'dev'
}
})
param environmentType string
Para obter mais opções de decorador, consulte Trabalhando com metadados da CLI do desenvolvedor do Azure para parâmetros de entrada do Bicep.
Opção 2: entrada de texto livre
Se você precisar de entrada aberta em vez de uma lista fixa, declare um parâmetro sem valor padrão. Quando azd encontra um parâmetro necessário que não tem valor padrão nem valor em main.parameters.json, ele solicita ao usuário um texto livre.
Adicione o parâmetro ao arquivo infra/main.bicep :
@description('Who owns this project')
param projectOwner string
Quando você executa azd up, o usuário digita um valor e pressiona Enter.
Opção 3: Ganchos para lógica personalizada
Decoradores do Bicep abrangem a maioria dos cenários, mas às vezes você precisa de mais flexibilidade, como listas dinâmicas de uma API, prompts condicionais, validação ou uma interface de usuário personalizada em estilo de menu. Nesses casos, use um preprovision gancho para executar um script personalizado antes azd provision.
Entender o fluxo
A abordagem do gancho funciona por meio da seguinte cadeia:
- Um script de gancho é executado e solicita ao usuário menus personalizados, validação ou outra lógica.
- O script armazena valores usando
azd env set VARIABLE_NAME value. - Os valores persistem em
.azure/<env>/.env. -
main.parameters.jsonfaz referência aos valores como${VARIABLE_NAME}. - Bicep recebe-os como parâmetros regulares durante o provisionamento.
Criar o script de gancho
Crie um script de gancho que solicite ao usuário e armazene o resultado. Os exemplos a seguir incluem uma proteção de idempotência que ignora o prompt em novas execuções se um valor já estiver definido e um caso que manipula a entrada inválida.
Crie um hooks/preprovision.ps1 arquivo:
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"
Mapear a variável para um parâmetro Bicep
main.parameters.json No arquivo, faça referência à variável de ambiente:
{
"parameters": {
"customTeamName": {
"value": "${CUSTOM_TEAM_NAME}"
}
}
}
No arquivo main.bicep, declare o parâmetro com um padrão, para que azd também não o solicite.
@description('Team name - set by preprovision hook')
param customTeamName string = ''
Habilitar o gancho
Adicione a configuração do gancho ao seu azure.yaml:
hooks:
preprovision:
windows:
shell: pwsh
run: hooks/preprovision.ps1
interactive: true
posix:
shell: sh
run: hooks/preprovision.sh
interactive: true
A interactive: true configuração associa o script ao console para que ele possa ler a entrada do usuário. Para obter mais informações sobre a configuração de ganchos, consulte Personalize seus fluxos de trabalho da CLI do Desenvolvedor Azure utilizando ganchos de comando e de evento.
Escolher a abordagem certa
| Scenario | Abordagem |
|---|---|
| Escolha em uma lista fixa de valores. |
@allowed decorador (opção 1) |
| Coletar entrada de texto livre. | Parâmetro sem padrão (Opção 2) |
| Listas dinâmicas, chamadas à API ou lógica condicional. | Script de gancho (Opção 3) |
| Ignore todos os prompts em CI/CD. | Valores pré-definidos (consulte a seção a seguir) |
Ignorar prompts em CI/CD
Todas as três opções dão suporte ao modo não interativo. Predefinir valores antes de executar azd e passar --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 um valor necessário estiver ausente, azd relatará exatamente qual parâmetro está ausente e mostrará o azd env config set comando necessário para corrigi-lo.
Conteúdo relacionado
- Trabalhar com metadados do Azure Developer CLI para parâmetros de entrada do Bicep
- Customize seus fluxos de trabalho da CLI do Desenvolvedor do Azure usando ganchos de comandos e eventos
- Trabalhar com variáveis de ambiente do Azure Developer CLI
- Parâmetros e decoradores do Bicep
- Repositório de exemplo: azd-custom-parameters