Bagikan melalui


FAQ alat dan lingkungan Azure Developer CLI

Artikel ini menyediakan jawaban atas pertanyaan umum tentang alat, perintah, dan lingkungan Azure Developer CLI (azd).

Pertanyaan umum

Bagian berikut berfokus pada peralatan umum azd dan pertanyaan lingkungan.

Bagaimana cara menghapus instalan Azure Developer CLI?

Ada berbagai opsi untuk menghapus azd tergantung pada cara Anda menginstalnya. Kunjungi halaman penginstalan untuk detailnya.

Apa perbedaan antara Azure Developer CLI dan Azure CLI?

Azure Developer CLI (azd) dan Azure CLI (az) keduanya adalah alat baris perintah, tetapi keduanya membantu Anda melakukan tugas yang berbeda.

azd berfokus pada alur kerja pengembang tingkat tinggi. Selain menyediakan/mengelola sumber daya Azure, azd membantu menjahit komponen cloud, konfigurasi pengembangan lokal, dan otomatisasi alur bersama-sama menjadi solusi lengkap.

Azure CLI adalah alat sarana kontrol untuk membuat dan mengelola infrastruktur Azure seperti komputer virtual, jaringan virtual, dan penyimpanan. Azure CLI dirancang di sekitar perintah terperinci untuk tugas administratif tertentu.

Kunjungi Azure Developer CLI vs Azure CLI untuk informasi selengkapnya.

Apa itu nama lingkungan?

Azure Developer CLI menggunakan nama lingkungan untuk mengatur variabel lingkungan AZURE_ENV_NAME yang digunakan oleh templat CLI Pengembang Azure. AZURE_ENV_NAME juga digunakan untuk mengawali nama grup sumber daya Azure. Karena setiap lingkungan memiliki serangkaian konfigurasinya sendiri, Azure Developer CLI menyimpan semua file konfigurasi di direktori lingkungan.

├── .Azure                          [This directory displays after you run `azd init` or `azd up`]
│   ├── <your environment1>         [A directory to store all environment-related configurations]
│   │   ├── .env                    [Contains environment variables]
│   │   └── main.parameters.json    [A parameter file]
│   └── <your environment2>         [A directory to store all environment-related configurations]
│   │   ├── .env                    [Contains environment variables]
│   │   └── main.parameters.json    [A parameter file]
│   └──config.json

Untuk informasi selengkapnya tentang alur kerja, lihat azd init dan azd up.

Bisakah saya menyiapkan lebih dari satu lingkungan?

Ya. Anda dapat menyiapkan berbagai lingkungan (misalnya, dev, test, production). Anda dapat menggunakan azd env untuk mengelola lingkungan ini.

Di mana file konfigurasi lingkungan (.env) disimpan?

Jalur file .env adalah <your-project-directory-name>\.azure\<your-environment-name>\.env. Untuk informasi selengkapnya, lihat Mengelola variabel lingkungan.

Bagaimana file .env digunakan?

Di Azure Developer CLI, perintah azd merujuk ke file .env untuk konfigurasi lingkungan. Perintah seperti azd deploy juga memperbarui file .env dengan, misalnya, connection string db dan titik akhir Azure Key Vault.

Saya telah menjalankan azd up di Codespaces. Dapatkah saya melanjutkan pekerjaan saya di lingkungan pengembangan lokal?

Ya. Anda dapat melanjutkan pekerjaan pengembangan secara lokal.

  1. Jalankan azd init -t <template repo> untuk mengkloning proyek templat ke komputer lokal Anda.
  2. Untuk menarik env yang ada yang dibuat menggunakan Codespace, jalankan azd env refresh. Pastikan Anda memberikan nama lingkungan, langganan, dan lokasi yang sama seperti sebelumnya.

Bagaimana cara mengautentikasi di Codespace jika login perangkat mengalami masalah?

Jika Anda mengalami masalah dengan autentikasi kode perangkat di Codespaces (misalnya, permintaan atau kesalahan 2FA berulang), coba solusi berikut menggunakan Visual Studio Code Desktop:

  1. Buka Codespace Anda di Visual Studio Code Desktop menggunakan salah satu metode berikut:
    • Gunakan palet perintah (Ctrl+Shift+P di Windows atau Cmd+Shift+P di MacO) dan pilih Codespaces: Buka di Visual Studio Code Desktop.
    • Klik sudut kiri bawah Codespace di browser dan pilih Buka di Visual Studio Code Desktop).
  2. Di terminal Vs Code Desktop, jalankan azd auth login dan selesaikan autentikasi berbasis browser.
  3. Setelah diautentikasi, tutup Visual Studio Code Desktop dan kembali ke Codespace Anda di browser. Status autentikasi harus bertahan.

Bagaimana file azure.yaml digunakan?

File azure.yaml menjelaskan aplikasi dan jenis sumber daya Azure yang disertakan dalam templat.

Bagaimana perilaku dari fungsi secretOrRandomPassword?

Fungsi secretOrRandomPassword mengambil rahasia dari Azure Key Vault jika parameter untuk nama dan rahasia brankas kunci disediakan. Jika parameter ini tidak disediakan atau rahasia tidak dapat diambil, fungsi mengembalikan kata sandi yang dihasilkan secara acak untuk digunakan sebagai gantinya.

Contoh berikut menunjukkan kasus penggunaan umum secretOrRandomPassword dalam file main.parameters.json. Variabel ${AZURE_KEY_VAULT_NAME} dan sqlAdminPassword diteruskan sebagai parameter untuk nama Key Vault dan nama kode rahasia. Jika nilai tidak dapat diambil, kata sandi acak dihasilkan sebagai gantinya.

"sqlAdminPassword": {
    "value": "$(secretOrRandomPassword ${AZURE_KEY_VAULT_NAME} sqlAdminPassword)"
}

Output secretOrRandomPassword juga harus disimpan ke Key Vault menggunakan Bicep untuk eksekusi di masa mendatang. Mengambil dan menggunakan kembali rahasia yang sama di seluruh penyebaran dapat mencegah kesalahan atau perilaku yang tidak diinginkan yang dapat muncul ketika berulang kali menghasilkan nilai baru. Untuk membuat Key Vault dan menyimpan rahasia yang dihasilkan di dalamnya, gunakan kode Bicep di bawah ini. Anda dapat melihat kode sampel lengkap untuk modul ini di repositori GitHub Azure Developer CLI.

module keyVault './core/security/keyvault.bicep' = {
name: 'keyvault'
scope: resourceGroup
params: {
    name: '${take(prefix, 17)}-vault'
    location: location
    tags: tags
    principalId: principalId
}
}

module keyVaultSecrets './core/security/keyvault-secret.bicep' = {
name: 'keyvault-secret-sqlAdminPassword'
scope: resourceGroup
params: {
    keyVaultName: keyVault.outputs.name
    name: 'sqlAdminPassword'
    secretValue: sqlAdminPassword
}
}]

Penyiapan Bicep ini memungkinkan alur kerja berikut untuk mengelola rahasia Anda:

  1. Jika rahasia yang ditentukan ada, rahasia diambil dari Key Vault menggunakan fungsi secretOrRandomPassword.
  2. Jika rahasia tidak ada, Key Vault dibuat, dan rahasia yang dihasilkan secara acak disimpan di dalamnya.
  3. Pada penyebaran di masa mendatang, metode secretOrRandomPassword akan mengambil rahasia yang disimpan sekarang karena rahasia tersebut sudah ada di Key Vault. Key Vault tidak akan dibuat ulang jika sudah ada, tetapi nilai rahasia yang sama akan disimpan lagi untuk eksekusi berikutnya.

Bisakah saya menggunakan Langganan Gratis Azure?

Ya, tetapi setiap lokasi Azure hanya dapat memiliki satu penyebaran. Jika Anda telah menggunakan lokasi Azure yang dipilih, Anda akan melihat kesalahan penyebaran:

InvalidTemplateDeployment: The template deployment '<env_name>' isn't valid according to the validation procedure. The tracking ID is '<tracking_id>'. See inner errors for details.

Anda dapat memilih lokasi Azure lain untuk memperbaiki masalah.

Aplikasi saya yang dihosting dengan Azure App Service memicu peringatan "Situs penipuan ke depan". Bagaimana cara memperbaikinya?

Ini mungkin terjadi karena metode kami untuk penamaan sumber daya.

Templat penulisan 'Azure Dev' kami memungkinkan untuk mengonfigurasi nama sumber daya. Untuk melakukannya, Anda dapat menambahkan entri ke main.parameters.json di folder infra. Contohnya:

"webServiceName": {
    "value": "my-unique-name"
}

Entri ini membuat sumber daya baru bernama "my-unique-name" alih-alih nilai acak seperti "app-web-aj84u2adj" saat Berikutnya Anda memprovisikan aplikasi Anda. Anda dapat menghapus grup sumber daya lama secara manual menggunakan portal Azure atau menjalankan azd down untuk menghapus semua penyebaran sebelumnya. Setelah menghapus sumber daya, jalankan azd provision untuk membuatnya lagi dengan nama baru.

Nama ini perlu unik di seluruh dunia, jika tidak, Anda akan menerima kesalahan ARM selama proses azd provision saat mencoba membuat sumber daya.

Bisakah saya bekerja dengan beberapa penyewa Azure?

Ya. Untuk mengautentikasi dengan penyewa spesifik, gunakan parameter --tenant-id dengan perintah azd auth login.

azd auth login --tenant-id <tenant-id>

Atau, jika Anda ingin azd memiliki akses ke semua penyewa, Anda dapat menangani tantangan Autentikasi Multifaktor (MFA) di browser terlebih dahulu:

  1. Buka Azure Portal di browser Anda.
  2. Beralih ke masing-masing penyewa Anda satu per satu. Tindakan ini memicu tantangan MFA yang diperlukan dan memperbarui token Anda.
  3. Jalankan azd auth login di terminal Anda. azd akan menggunakan sesi browser yang ada dan token akses, yang sekarang berlaku untuk semua penyewa yang Anda kunjungi.

Dapatkah saya menjalankan azd up beberapa kali?

Ya. Kami menggunakan mode penyebaran inkremental . Untuk informasi selengkapnya, lihat azd up.

Provisioning

Bagian berikut berfokus pada proses provisioning azd.

Dapatkah saya menjalankan azd provision beberapa kali?

Ya. Kami menggunakan mode penyebaran inkremental . Untuk informasi selengkapnya, lihat provisi azd.

Bagaimana perintah azd provision mengetahui apa sumber daya yang perlu disediakan?

Perintah ini menggunakan templat Bicep, yang ditemukan di bawah <your-project-directory-name>/infra untuk menyediakan sumber daya Azure.

Di mana saya dapat menemukan sumber daya apa yang disediakan di Azure?

Buka https://portal.azure.com lalu cari grup sumber daya Anda, yang rg-<your-environment-name>.

Bagaimana cara menemukan informasi selengkapnya tentang kesalahan Azure?

Kami menggunakan templat Bicep, yang ditemukan di bawah <your-project-directory-name>/infra, untuk menyediakan sumber daya Azure. Jika ada masalah, kami menyertakan pesan kesalahan dalam output CLI.

Anda juga dapat membuka https://portal.azure.com lalu mencari grup sumber daya Anda, yang rg-<your-environment-name>. Jika salah satu penyebaran gagal, pilih tautan kesalahan untuk mendapatkan informasi lebih lanjut.

Untuk sumber lain, lihat Pemecahan Masalah Kesalahan Penyebaran Umum Azure - Azure Resource Manager.

Apakah ada file log untuk azd provision?

Segera datang. Fitur ini direncanakan untuk rilis mendatang.

Penyebaran

Bagian berikut fokus pada proses azd penyebaran.

Dapatkah saya menjalankan azd deploy beberapa kali?

Ya. Lihat azd deploy untuk informasi selengkapnya.

Bagaimana azd menemukan sumber daya Azure untuk menyebarkan kode saya?

Selama penyebaran, azd pertama-tama menemukan semua grup sumber daya yang membentuk aplikasi Anda dengan mencari grup yang ditandai dengan azd-env-name dan dengan nilai yang cocok dengan nama lingkungan Anda. Kemudian, ini menghitung semua sumber daya di setiap grup sumber daya ini, mencari sumber daya yang ditandai dengan azd-service-name dengan nilai yang cocok dengan nama layanan Anda dari azure.yaml.

Meskipun sebaiknya gunakan tag pada sumber daya, Anda juga dapat menggunakan resourceName properti di azure.yaml untuk memberikan nama sumber daya eksplisit. Dalam hal ini, logika di atas tidak dijalankan.

Bagaimana cara menyebarkan layanan tertentu dalam proyek saya sambil melewati yang lain?

Saat menyebarkan proyek, Anda dapat memilih untuk menyebarkan layanan tertentu baik dengan menentukan nama layanan dalam perintah (yaitu azd deploy api) atau dengan menavigasi ke subfolder yang hanya berisi layanan yang ingin Anda sebarkan. Ketika melakukannya, semua layanan lain akan terdaftar sebagai - Skipped.

Jika Anda tidak ingin melewati layanan apa pun, pastikan untuk menjalankan perintah Anda dari folder akar atau menambahkan bendera --all ke perintah Anda.

Konfigurasi alur

Bagian berikut memfokuskan konfigurasi alur CI/CD.

Apa itu perwakilan layanan Azure?

Perwakilan layanan Azure adalah identitas yang dibuat untuk digunakan dengan aplikasi, layanan yang dihosting, dan alat otomatis untuk mengakses sumber daya Azure. Akses ini dibatasi oleh peran yang ditetapkan ke perwakilan layanan, yang memberi Anda kontrol atas sumber daya mana yang dapat diakses dan pada tingkat mana. Untuk informasi selengkapnya tentang mengautentikasi dari Azure ke GitHub, lihat Koneksikan GitHub dan Azure | Microsoft Docs.

Apakah saya perlu membuat perwakilan layanan Azure sebelum menjalankan azd pipeline config?

Tidak. Perintah azd pipeline config mengelola pembuatan service principal Azure dan melakukan langkah-langkah penting untuk menyimpan rahasia di repo GitHub Anda.

Apa saja rahasia yang disimpan di GitHub?

Perintah menyimpan empat rahasia dalam GitHub: AZURE_CREDENTIALS, AZURE_ENV_NAME, AZURE_LOCATION, dan AZURE_SUBSCRIPTION_ID. Anda dapat mengambil alih nilai setiap rahasia dengan masuk ke https://github.com/<your-github-account>/<your-repo>/secrets/actions.

Apa itu OpenID Connect (OIDC), dan apakah didukung?

Dengan OpenID Connect, alur kerja Anda dapat bertukar token berumur pendek langsung dari Azure.

Meskipun OIDC didukung sebagai default untuk alur GitHub Actions dan Azure (ditetapkan sebagai federated), itu tidak didukung untuk Azure DevOps atau Terraform.

  • Untuk Azure DevOps, secara eksplisit memanggil --auth-type sebagai federated akan mengakibatkan kesalahan.
  • Untuk Terraform:
    • Jika --auth-type tidak ditentukan, itu akan kembali ke clientcredentials dan akan menghasilkan peringatan.
    • Jika --auth-type secara eksplisit diatur ke federated, itu akan mengakibatkan kesalahan.

Bagaimana cara mengatur ulang prinsipal layanan Azure yang telah disimpan di GitHub Actions?

Pergi ke https://github.com/<your-github-account>/<your-repo>settings/secrets/actions, lalu perbarui AZURE_CREDENTIALS dengan menyalin dan menempelkan seluruh objek JSON untuk prinsipal layanan baru. Contohnya:

{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}

Di mana file GitHub Actions disimpan?

Jalur file GitHub Actions <your-project-directory-name>\.github\workflows\azure-dev.yml. Untuk informasi selengkapnya, lihat Memulai Cepat: Membuat prinsipal layanan dan menjalankan tindakan GitHub.

Dalam file azure-dev.yml, bisakah saya menyebarkan kode saja di langkah build?

Ya. Ganti run: azd up --no-prompt dengan run: azd deploy --no-prompt.

Di mana saya dapat menemukan log untuk pekerjaan GitHub Actions yang saya picu saat menjalankan azd pipeline config?

Buka https://github.com/<your-github-account>/<your-repo>/actions, lalu lihat file log dalam alur kerja yang dijalankan.

Membangun aplikasi kontainer secara lokal

Mengapa saya tidak dapat menjalankan aplikasi kontainer yang saya buat secara lokal?

Saat membangun aplikasi kontainer secara lokal, Anda perlu menjalankan azd auth login dalam kontainer agar aplikasi berfungsi dengan AzureDeveloperCliCredential. Atau, Anda dapat mengonfigurasi aplikasi Anda untuk menggunakan perwakilan layanan alih-alih AzureDeveloperCliCredential.