Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Par défaut, azd up vous êtes invité à entrer trois éléments : nom de l’environnement, abonnement et emplacement. Toutefois, les projets réels ont souvent besoin d’une entrée supplémentaire, comme un type d’environnement, un propriétaire de projet ou un nom d’équipe. Cet article décrit trois approches pour l’ajout d’invites personnalisées, de la plus simple à la plus flexible. Vous pouvez combiner et mettre en correspondance les trois approches dans le même modèle.
Option 1 : Liste de sélection avec le @allowed décorateur
La façon la plus simple d’ajouter un prompt personnalisé consiste à utiliser le décorateur @allowed sur un paramètre Bicep. Lorsque azd rencontre un paramètre avec @allowed valeurs et qu’aucune valeur n’est fournie, il affiche une liste de sélection interactive, similaire aux sélecteurs d’abonnement et d’emplacement intégrés.
Ajoutez le paramètre décoré à votre infra/main.bicep fichier :
@description('The environment type')
@allowed([
'dev'
'staging'
'prod'
])
param environmentType string
Lorsque vous exécutez azd up, azd présente automatiquement une liste de sélections pour ce paramètre. L’utilisateur peut naviguer à l’aide de touches de direction et taper pour filtrer, tout comme le sélecteur d’abonnement.
Aucune configuration supplémentaire n’est nécessaire. Ajoutez le paramètre à votre fichier Bicep et azd gère le reste.
Conseil / Astuce
Utilisez le @metadata décorateur avec azd.default pour mettre en surbrillance une sélection par défaut :
@allowed(['dev', 'staging', 'prod'])
@metadata({
azd: {
default: 'dev'
}
})
param environmentType string
Pour plus d’options de décoration, consultez Utilisez les métadonnées de Azure Developer CLI pour les paramètres d’entrée de Bicep.
Option 2 : Entrée de texte libre
Si vous avez besoin d’une entrée ouverte au lieu d’une liste fixe, déclarez un paramètre sans valeur par défaut. Lorsque azd rencontre un paramètre obligatoire qui n’a ni valeur par défaut ni valeur, il invite l’utilisateur à entrer du texte libre.
Ajoutez le paramètre à votre infra/main.bicep fichier :
@description('Who owns this project')
param projectOwner string
Lorsque vous exécutez azd up, l’utilisateur tape une valeur et appuie sur Entrée.
Option 3 : Hooks pour une logique personnalisée
Les décorateurs Bicep couvrent la plupart des scénarios, mais vous avez parfois besoin d’une plus grande flexibilité, comme des listes dynamiques issues d’une API, d’invites conditionnelles, de validation ou d’une interface utilisateur personnalisée de type menu. Dans ces cas, utilisez un preprovision hook pour exécuter un script personnalisé avant azd provision.
Comprendre le flux
L’approche par crochet fonctionne selon la chaîne suivante :
- Un script de déclencheur s’exécute et propose à l’utilisateur des menus personnalisés, une validation ou d'autres logiques.
- Le script stocke les valeurs à l’aide de
azd env set VARIABLE_NAME value. - Les valeurs sont conservées dans
.azure/<env>/.env. -
main.parameters.jsonréférence les valeurs en tant que${VARIABLE_NAME}. - Bicep les reçoit en tant que paramètres réguliers lors de l’approvisionnement.
Créer le script de crochet
Créez un script de hook qui invite l’utilisateur et stocke le résultat. Les exemples suivants incluent un garde d’idempotency qui ignore l’invite lors de nouvelles exécutions si une valeur est déjà définie et un cas qui gère l’entrée default non valide.
Créez un hooks/preprovision.ps1 fichier :
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"
Associer la variable à un paramètre Bicep
Dans votre main.parameters.json fichier, référencez la variable d’environnement :
{
"parameters": {
"customTeamName": {
"value": "${CUSTOM_TEAM_NAME}"
}
}
}
Dans votre fichier main.bicep, déclarez le paramètre avec une valeur par défaut pour que azd ne le demande pas non plus.
@description('Team name - set by preprovision hook')
param customTeamName string = ''
Activer le hook
Ajoutez la configuration du hook à votre azure.yaml:
hooks:
preprovision:
windows:
shell: pwsh
run: hooks/preprovision.ps1
interactive: true
posix:
shell: sh
run: hooks/preprovision.sh
interactive: true
Le interactive: true paramètre lie le script à la console afin qu’il puisse lire l’entrée utilisateur. Pour plus d’informations sur la configuration du hook, consultez Customiser vos flux de travail CLI Azure développeur à l’aide de hooks de commande et d’événements.
Choisir l’approche appropriée
| Scénario | Approche |
|---|---|
| Choisissez dans une liste fixe de valeurs. |
@allowed décorateur (Option 1) |
| Collecter une entrée de texte libre. | Paramètre sans valeur par défaut (Option 2) |
| Listes dynamiques, appels d’API ou logique conditionnelle. | Script de hook (option 3) |
| Ignorez toutes les invites dans CI/CD. | Valeurs prédéfinies (voir la section suivante) |
Ignorer les invites dans CI/CD
Les trois options prennent en charge le mode non interactif. Valeurs prédéfinies avant l’exécution de azd et le passage de --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
Si une valeur requise est manquante, azd signale exactement quel paramètre est manquant et affiche la azd env config set commande nécessaire pour la corriger.
Contenu connexe
- Travailler avec les métadonnées de la CLI du développeur Azure pour les paramètres d’entrée Bicep
- Customiser vos workflows CLI pour développeur Azure à l’aide de hooks de commande et d’événements
- Travailler avec les variables d'environnement du CLI pour développeur Azure
- paramètres et décorateurs Bicep
- Exemple de dépôt : azd-custom-parameters