Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Secara default, azd up meminta tiga hal: nama lingkungan, langganan, dan lokasi. Namun, proyek nyata sering membutuhkan input tambahan, seperti jenis lingkungan, pemilik proyek, atau nama tim. Artikel ini menjelaskan tiga pendekatan untuk menambahkan perintah kustom, dari yang paling sederhana hingga yang paling fleksibel. Anda dapat mencampur dan mencocokkan ketiga pendekatan dalam templat yang sama.
Opsi 1: Daftar pilihan dengan @allowed dekorator
Cara paling sederhana untuk menambahkan prompt kustom adalah dengan menggunakan dekorator @allowed pada parameter Bicep. Saat azd menemukan parameter dengan @allowed nilai dan tidak ada nilai yang diberikan, sistem akan menampilkan daftar pilihan interaktif, mirip dengan pemilih langganan dan lokasi bawaan.
Tambahkan parameter yang didekorasi ke file Anda infra/main.bicep :
@description('The environment type')
@allowed([
'dev'
'staging'
'prod'
])
param environmentType string
Saat Anda menjalankan azd up, azd secara otomatis menyajikan daftar pilih untuk parameter ini. Pengguna dapat menavigasi dengan menggunakan tombol panah dan mengetik untuk memfilter, seperti pada pemilih langganan.
Tidak diperlukan konfigurasi tambahan. Tambahkan parameter ke file Bicep Anda dan azd menangani sisanya.
Petunjuk / Saran
@metadata Gunakan dekorator dengan azd.default untuk menyoroti pilihan default:
@allowed(['dev', 'staging', 'prod'])
@metadata({
azd: {
default: 'dev'
}
})
param environmentType string
Untuk opsi dekorator lainnya, lihat Bekerja dengan metadata Azure Developer CLI untuk parameter input Bicep.
Opsi 2: Input teks bebas
Jika Anda memerlukan input terbuka alih-alih daftar tetap, deklarasikan parameter tanpa nilai default. Ketika azd menemukan parameter yang diperlukan yang tidak memiliki nilai default dan tidak ada nilai di main.parameters.json, parameter meminta input teks bebas kepada pengguna.
Tambahkan parameter ke file Anda infra/main.bicep :
@description('Who owns this project')
param projectOwner string
Saat Anda menjalankan azd up, pengguna mengetikan nilai dan menekan Enter.
Opsi 3: Kait untuk logika kustom
Bicep dekorator mencakup sebagian besar skenario, tetapi terkadang Anda memerlukan lebih banyak fleksibilitas, seperti daftar dinamis dari API, prompt bersyarat, validasi, atau antarmuka pengguna gaya menu kustom. Dalam kasus ini, gunakan preprovision hook untuk menjalankan skrip kustom sebelum azd provision.
Memahami alur
Pendekatan kait bekerja melalui urutan langkah berikut:
- Skrip kait dijalankan dan meminta interaksi dari pengguna melalui menu kustom, validasi, atau logika lainnya.
- Skrip menyimpan nilai menggunakan
azd env set VARIABLE_NAME value. - Nilai bertahan di
.azure/<env>/.env. -
main.parameters.jsonmereferensikan nilai sebagai${VARIABLE_NAME}. - Bicep menerimanya sebagai parameter reguler selama proses penyediaan.
Membuat skrip hook
Buat skrip hook yang meminta pengguna dan menyimpan hasilnya. Contoh berikut menyertakan 'idempotency guard' yang melewati prompt pada saat dijalankan ulang jika nilai sudah ditetapkan, dan skenario default yang menangani input yang tidak valid.
Buat file 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"
Memetakan variabel ke parameter Bicep
Dalam file Anda main.parameters.json , referensikan variabel lingkungan:
{
"parameters": {
"customTeamName": {
"value": "${CUSTOM_TEAM_NAME}"
}
}
}
Dalam file Anda main.bicep , deklarasikan parameter dengan default sehingga azd tidak juga memintanya:
@description('Team name - set by preprovision hook')
param customTeamName string = ''
Aktifkan hook
Tambahkan konfigurasi kait ke azure.yaml:
hooks:
preprovision:
windows:
shell: pwsh
run: hooks/preprovision.ps1
interactive: true
posix:
shell: sh
run: hooks/preprovision.sh
interactive: true
Pengaturan mengikat interactive: true skrip ke konsol sehingga dapat membaca input pengguna. Untuk informasi selengkapnya tentang konfigurasi hook, lihat Sesuaikan alur kerja CLI Pengembang Azure Anda dengan menggunakan perintah dan hook peristiwa.
Pilih pendekatan yang tepat
| Skenario | Pendekatan |
|---|---|
| Pilih dari daftar nilai tetap. |
@allowed dekorator (Opsi 1) |
| Kumpulkan input teks bebas. | Parameter tanpa nilai default (Opsi 2) |
| Daftar dinamis, panggilan API, atau logika bersyarah. | Skrip kait (Opsi 3) |
| Lewati semua perintah dalam CI/CD. | Nilai yang telah ditetapkan sebelumnya (lihat bagian berikut) |
Lewati perintah di CI/CD
Ketiga opsi mendukung mode non-interaktif. Nilai yang telah ditetapkan sebelumnya sebelum menjalankan azd dan meneruskan --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
Jika nilai yang diperlukan hilang, azd laporkan dengan tepat parameter mana yang hilang dan menunjukkan perintah yang azd env config set diperlukan untuk memperbaikinya.