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.
Artikel ini menjelaskan cara menggunakan Azure CLI dengan templat Azure Resource Manager (templat ARM) untuk menyebarkan sumber daya Anda ke Azure. Jika Anda tidak terbiasa dengan konsep penyebaran dan pengelolaan solusi Azure Anda, lihat gambaran umum penyebaran template.
Perintah penyebaran berubah dalam Azure CLI versi 2.2.0. Contoh dalam artikel ini memerlukan Azure CLI versi 2.20.0 atau yang lebih baru.
Untuk menjalankan sampel ini, instal versi terbaru Azure CLI. Untuk memulai, jalankan az login untuk membuat koneksi dengan Azure.
Sampel untuk Azure CLI ditulis untuk shell bash. Untuk menjalankan sampel ini di Windows PowerShell atau Prompt Perintah, Anda mungkin perlu mengubah elemen skrip.
Jika Anda belum menginstal Azure CLI, Anda dapat menggunakan Azure Cloud Shell. Untuk informasi selengkapnya, lihat Deploy ARM templates dari Azure Cloud Shell.
Tips
Sebaiknya Bicep karena menawarkan kemampuan yang sama dengan templat ARM dan sintaks lebih mudah digunakan. Untuk mempelajari selengkapnya, lihat Cara menyebarkan sumber daya dengan Bicep dan Azure CLI.
Prasyarat
Izin yang diperlukan
Untuk menyebarkan file Bicep atau templat Azure Resource Manager (ARM), Anda memerlukan akses tulis pada sumber daya yang Anda sebarkan dan akses ke semua operasi pada jenis sumber daya Microsoft.Resources/deployments. Misalnya, untuk menyebarkan komputer virtual, Anda memerlukan izin Microsoft.Compute/virtualMachines/write dan Microsoft.Resources/deployments/*. Operasi hipotetis memiliki persyaratan izin yang sama.
Azure CLI versi 2.76.0 atau yang lebih baru dan versi Azure PowerShell 13.4.0 atau yang lebih baru memperkenalkan switch ValidationLevel untuk menentukan seberapa lengkap ARM memvalidasi templat Bicep selama proses ini. Untuk informasi selengkapnya, lihat Perintah bagaimana-jika
Untuk daftar peran dan izin, lihat peran bawaan Azure.
Cakupan penyebaran
Anda dapat menargetkan templat penyebaran Azure ke grup sumber daya, langganan, grup manajemen, atau penyewa. Tergantung pada lingkup penyebaran, Anda menggunakan perintah yang berbeda.
Untuk menyebarkan ke grup sumber daya, gunakan az deployment group create:
az deployment group create --resource-group <resource-group-name> --template-file <path-to-template>Untuk menyebarkan ke langganan, gunakan z deployment sub create:
az deployment sub create --location <location> --template-file <path-to-template>Untuk informasi selengkapnya tentang penyebaran tingkat langganan, lihat Membuat grup sumber daya dan sumber daya di tingkat langganan.
Untuk menyebarkan ke grup manajemen, gunakan az deployment mg create:
az deployment mg create --location <location> --template-file <path-to-template>Untuk informasi selengkapnya tentang penyebaran tingkat grup manajemen, lihat Membuat sumber daya di tingkat grup manajemen.
Untuk menyebarkan ke penyewa, gunakan az deployment tenant create:
az deployment tenant create --location <location> --template-file <path-to-template>Untuk informasi selengkapnya tentang penyebaran tingkat penyewa, lihat Membuat sumber daya di tingkat penyewa.
Untuk setiap cakupan, pengguna yang menyebarkan templat harus memiliki izin yang diperlukan untuk membuat sumber daya.
Menyebarkan templat lokal
Anda dapat menyebarkan templat ARM dari mesin lokal Anda atau templat yang disimpan secara eksternal. Bagian ini mendeskripsikan cara menyebarkan templat lokal.
Jika Anda menyebarkan ke grup sumber daya yang tidak ada, buatlah grup sumber daya. Nama grup sumber daya hanya dapat mencakup karakter alfanumerik, titik, garis bawah, tanda hubung, dan tanda kurung. Panjangnya bisa sampai 90 karakter. Nama tidak boleh diakhiri dengan titik.
az group create --name ExampleGroup --location "Central US"
Untuk menggunakan templat lokal, gunakan parameter --template-file dalam perintah penyebaran. Contoh berikut juga memperlihatkan cara mengatur nilai parameter.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file <path-to-template> \
--parameters storageAccountType=Standard_GRS
Nilai parameter --template-file harus berupa file Bicep atau file .json atau .jsonc. Ekstensi file .jsonc menunjukkan bahwa file dapat berisi // komentar gaya. Sistem ARM menerima // komentar dalam file .json. Itu tidak peduli dengan ekstensi file. Untuk detail selengkapnya tentang komentar dan metadata, lihat Memahami struktur dan sintaksis templat ARM.
Templat penyebaran Azure dapat memakan waktu beberapa menit untuk diselesaikan. Setelah selesai, Anda akan melihat pesan yang menyertakan hasilnya:
"provisioningState": "Succeeded",
Menyebarkan templat jarak jauh
Alih-alih menyimpan templat ARM di komputer lokal, Anda mungkin lebih suka menyimpannya di lokasi eksternal. Anda dapat menyimpan templat di repositori kontrol sumber (seperti GitHub). Atau, Anda dapat menyimpannya di akun penyimpanan Azure untuk akses bersama di organisasi Anda.
Catatan
Untuk menyebarkan templat atau mereferensikan templat tertaut yang disimpan dalam repositori GitHub privat, lihat solusi kustom yang didokumentasikan di Buat Penawaran portal Azure Kustom dan Aman. Anda dapat membuat fungsi Azure yang menarik token GitHub keluar dari Azure Key Vault.
Jika Anda menyebarkan ke grup sumber daya yang tidak ada, buatlah grup sumber daya. Nama grup sumber daya hanya dapat mencakup karakter alfanumerik, titik, garis bawah, tanda hubung, dan tanda kurung. Panjangnya bisa sampai 90 karakter. Nama tidak boleh diakhiri dengan titik.
az group create --name ExampleGroup --location "Central US"
Untuk menyebarkan templat eksternal, gunakan template-uri parameter.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" \
--parameters storageAccountType=Standard_GRS
Contoh sebelumnya memerlukan URI yang dapat diakses publik untuk templat, yang berfungsi untuk sebagian besar skenario karena templat Anda tidak boleh menyertakan data sensitif. Jika Anda perlu menentukan data sensitif (seperti kata sandi admin), berikan nilai tersebut sebagai parameter aman. Namun, jika Anda ingin mengelola akses ke templat, pertimbangkan untuk menggunakan spesifikasi templat.
Untuk menyebarkan templat tertaut jarak jauh dengan jalur relatif yang disimpan di akun penyimpanan, gunakan query-string untuk menentukan token SAS:
az deployment group create \
--name linkedTemplateWithRelativePath \
--resource-group myResourceGroup \
--template-uri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" \
--query-string $sasToken
Untuk informasi lebih lanjut, lihat Menggunakan jalur relatif untuk templat tertaut.
Nama templat penyebaran Azure
Saat menyebarkan templat ARM, Anda dapat memberikan nama pada templat penyebaran Azure. Nama ini dapat membantu Anda mendapatkan kembali penyebaran dari riwayat penyebaran. Jika Anda tidak memberikan nama untuk penyebaran, nama file templat akan digunakan. Misalnya, jika Anda menyebarkan templat bernama azuredeploy.json dan tidak menentukan nama penyebaran, penyebaran tersebut akan diberi nama azuredeploy.
Setiap kali Anda menjalankan penyebaran, sebuah entri ditambahkan ke riwayat penyebaran grup sumber daya dengan menggunakan nama penyebaran. Jika Anda menjalankan penggelaran lainnya dan memberinya nama yang sama, entri sebelumnya akan digantikan oleh penggelaran saat ini. Jika Anda ingin mempertahankan entri unik dalam riwayat penyebaran, berikan nama yang unik pada setiap penyebaran.
Untuk membuat nama yang unik, Anda dapat menetapkan angka acak.
deploymentName='ExampleDeployment'$RANDOM
Atau, tambahkan nilai tanggal.
deploymentName='ExampleDeployment'$(date +"%d-%b-%Y")
Jika Anda menjalankan penyebaran bersamaan ke grup sumber daya yang sama dengan nama penyebaran yang sama, hanya penyebaran terakhir yang diselesaikan. Setiap penyebaran dengan nama yang sama yang belum selesai akan digantikan oleh penyebaran terakhir. Misalnya, jika Anda menjalankan penyebaran bernama newStorage yang menyebarkan akun penyimpanan bernama storage1, dan pada saat yang sama menjalankan penyebaran lain bernama newStorage yang menyebarkan akun penyimpanan bernama storage2, Anda hanya menyebarkan satu akun penyimpanan. Akun penyimpanan yang dihasilkan diberi nama storage2.
Namun, jika Anda menjalankan penyebaran bernama newStorage yang menyebarkan akun penyimpanan bernama storage1, dan segera setelah selesai Anda menjalankan penyebaran lain bernama newStorage yang menyebarkan akun penyimpanan bernama storage2, Anda memiliki dua akun penyimpanan. Satu bernama storage1, dan yang lain bernama storage2. Tetapi, Anda hanya memiliki satu entri dalam riwayat penyebaran.
Saat menentukan nama unik untuk setiap penyebaran, Anda dapat menjalankannya secara bersamaan tanpa konflik. Jika Anda menjalankan penyebaran bernama newStorage1 yang menyebarkan akun penyimpanan bernama storage1, dan pada saat yang sama menjalankan penyebaran lain bernama newStorage2 yang menyebarkan akun penyimpanan bernama storage2, Anda memiliki dua akun penyimpanan dan dua entri di riwayat penyebaran.
Untuk menghindari konflik dengan penyebaran bersamaan dan memastikan entri unik dalam riwayat penyebaran, berikan nama yang unik pada setiap penyebaran.
Menyebarkan spesifikasi templat
Alih-alih menyebarkan templat lokal atau jarak jauh, Anda dapat membuat spesifikasi template. Spesifikasi templat adalah sumber daya dalam langganan Azure Anda yang berisi templat ARM. Sumber daya ini memudahkan Anda berbagi templat dengan pengguna di organisasi Anda secara aman. Anda menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memberikan akses ke spesifikasi templat. Fitur ini saat ini dalam pratinjau.
Contoh berikut menunjukkan cara membuat dan menyebarkan spesifikasi templat.
Pertama, buat spesifikasi templat dengan menyediakan templat ARM.
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "./mainTemplate.json"
Kemudian, dapatkan ID untuk template spesifikasi dan terapkan.
id = $(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
az deployment group create \
--resource-group demoRG \
--template-spec $id
Untuk informasi selengkapnya, lihat spesifikasi templat Azure Resource Manager.
Pratinjau perubahan
Sebelum menyebarkan templat ARM, Anda dapat mempratinjau perubahan yang dilakukan templat ke lingkungan Anda. Gunakan operasi what-if untuk memverifikasi bahwa templat membuat perubahan yang Anda harapkan. What-if juga memvalidasi template untuk kesalahan.
Parameter
Untuk meneruskan nilai parameter, Anda dapat menggunakan parameter inline atau file parameter. File parameter dapat berupa file parameter Bicep atau file parameter JSON.
Parameter sebaris
Untuk meneruskan parameter sebaris, berikan nilai dalam parameters. Misalnya, untuk meneruskan string dan array ke templat di shell Bash, gunakan:
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters exampleString='inline string' exampleArray='("value1", "value2")'
Jika Anda menggunakan Azure CLI dengan Windows Command Prompt (CMD) atau PowerShell, teruskan array dalam format: exampleArray="['value1','value2']".
Anda juga bisa mendapatkan konten file dan menyediakan konten tersebut sebagai parameter sebaris.
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters exampleString=@stringContent.txt exampleArray=@arrayContent.json
Mendapatkan nilai parameter dari file sangat berguna ketika Anda perlu memberikan nilai konfigurasi. Misalnya, Anda dapat memberikan nilai cloud-init untuk mesin virtual Linux.
Format arrayContent.json adalah:
[
"value1",
"value2"
]
Untuk meneruskan objek, misalnya untuk mengatur tag, gunakan JSON. Misalnya, templat Anda mungkin menyertakan parameter seperti ini:
"resourceTags": {
"type": "object",
"defaultValue": {
"Cost Center": "IT Department"
}
}
Dalam hal ini, Anda dapat meneruskan untai JSON untuk mengatur parameter seperti yang ditunjukkan dalam skrip Bash berikut:
tags='{"Owner":"Contoso","Cost Center":"2345-324"}'
az deployment group create --name addstorage --resource-group myResourceGroup \
--template-file $templateFile \
--parameters resourceName=abcdef4556 resourceTags="$tags"
Gunakan tanda kutip ganda di sekitar JSON yang ingin Anda masukkan ke dalam objek.
Anda dapat menggunakan variabel untuk berisi nilai parameter. Di Bash, atur variabel ke semua nilai parameter dan tambahkan ke perintah penyebaran.
params="prefix=start suffix=end"
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters $params
Namun, jika Anda menggunakan Azure CLI dengan Windows Command Prompt (CMD) atau PowerShell, atur variabel ke string JSON. Hindari tanda kutip: $params = '{ \"prefix\": {\"value\":\"start\"}, \"suffix\": {\"value\":\"end\"} }'.
File parameter JSON
Daripada meneruskan parameter sebagai nilai sebaris dalam skrip Anda, akan lebih mudah untuk menggunakan file parameter, baik file .bicepparam atau file parameter JSON, yang berisi nilai parameter. File parameter harus berupa file lokal. File parameter eksternal tidak didukung dengan Azure CLI.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.json \
--parameters 'storage.parameters.json'
Untuk informasi selengkapnya tentang file parameter, lihat Buat file parameter Resource Manager.
Bicep file parameter
Dengan Azure CLI versi 2.53.0 atau yang lebih baru, dan Bicep CLI versi 0.22.6 atau yang lebih baru, Anda dapat menyebarkan file Bicep dengan menggunakan file parameter Bicep. Dengan pernyataan using dalam file parameter Bicep, tidak perlu menyediakan sakelar --template-file saat menentukan file parameter Bicep untuk sakelar --parameters. Menyertakan pengalih --template-file menghasilkan kesalahan, "Hanya file .bicep yang diizinkan dengan file .bicepparam."
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--parameters storage.bicepparam
File parameter harus berupa file lokal. File parameter eksternal tidak didukung dengan Azure CLI. Untuk informasi selengkapnya tentang file parameter, lihat panduan Membuat File Parameter Resource Manager.
Komentar dan format JSON yang diperluas
Anda dapat menyertakan // komentar gaya dalam file parameter, tetapi Anda harus memberi nama file dengan ekstensi .jsonc.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.json \
--parameters '@storage.parameters.jsonc'
Untuk detail selengkapnya tentang komentar dan metadata, lihat Memahami struktur dan sintaks templat ARM.
Jika Anda menggunakan Azure CLI dengan versi 2.3.0 atau yang lebih lama, Anda dapat menyebarkan templat dengan string multibaris atau komentar menggunakan sakelar --handle-extended-json-format. Contohnya:
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2025-04-01",
"name": "[variables('vmName')]", // to customize name, change it in variables
"location": "[
parameters('location')
]", //defaults to resource group location
/*
storage account and network interface
must be deployed first
*/
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
"[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
Langkah berikutnya
- Untuk putar kembali ke penyebaran yang berhasil saat Anda mendapatkan kesalahan, lihat Putar kembali pada kesalahan ke penyebaran yang berhasil.
- Untuk menentukan cara menangani sumber daya yang ada di grup sumber daya tetapi tidak ditentukan dalam templat, lihat mode penyebaran Azure Resource Manager.
- Untuk memahami cara menentukan parameter dalam templat Anda, lihat Memahami struktur dan sintaksis templat ARM.
- Untuk mendapatkan tips mengatasi kesalahan penyebaran umum, lihat Memecahkan Masalah Kesalahan Penyebaran Azure Umum dengan Azure Resource Manager.