Cara menyebarkan sumber daya dengan Bicep dan Azure CLI

Artikel ini menjelaskan cara menggunakan Azure CLI dengan file Bicep untuk menyebarkan sumber daya Anda ke Azure. Jika Anda belum terbiasa dengan konsep penyebaran dan pengelolaan solusi Azure, lihat gambaran umum Bicep.

Prasyarat

Anda membutuhkan file Bicep untuk menyebarkan. File harus lokal.

Anda memerlukan Azure CLI dan terhubung ke Azure:

  • Instal perintah Azure CLI di komputer lokal Anda. Untuk menyebarkan file Bicep, Anda memerlukan Azure CLI versi 2.20.0 atau yang lebih baru.
  • Terhubung ke Azure dengan menggunakan az login. Jika memiliki beberapa langganan Azure, Anda mungkin juga perlu menjalankan az account set.

Sampel untuk Azure CLI ditulis untuk bash shell. Untuk menjalankan sampel ini di Windows PowerShell atau Prompt Perintah, Anda mungkin perlu mengubah elemen skrip.

Jika Anda tidak memiliki Azure CLI yang terinstal, Anda dapat menggunakan Azure Cloud Shell. Untuk informasi selengkapnya, lihat Menyebarkan file Bicep dari Azure Cloud Shell.

Izin yang diperlukan

Untuk menyebarkan file Bicep atau templat ARM, Anda memerlukan akses tulis pada sumber daya yang Anda sebarkan dan mengakses ke semua operasi di Microsoft.Resources/deployments resource type. Misalnya, untuk menyebarkan mesin virtual, Anda memerlukan izin Microsoft.Compute/virtualMachines/write dan Microsoft.Resources/deployments/*. Operasi bagaimana-jika memiliki persyaratan izin yang sama.

Untuk daftar peran dan izin, lihat Peran bawaan Azure.

Cakupan penyebaran

Anda dapat menargetkan penyebaran Anda ke grup sumber daya, langganan, grup manajemen, atau penyewa. Tergantung pada lingkup penyebaran, Anda menggunakan perintah yang berbeda.

Untuk setiap cakupan, pengguna yang menyebarkan file Bicep harus memiliki izin yang diperlukan untuk membuat sumber daya.

Menyebarkan file Bicep lokal

Anda dapat menyebarkan file Bicep dari komputer lokal Anda atau file yang disimpan secara eksternal. Bagian ini mendeskripsikan cara menyebarkan file Bicep 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 menyebarkan file Bicep lokal, gunakan sakelar --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-bicep> \
  --parameters storageAccountType=Standard_GRS

Diperlukan beberapa menit untuk menyelesaikan penyebaran. Setelah selesai, Anda akan melihat pesan yang menyertakan hasilnya:

"provisioningState": "Succeeded",

Sebarkan file Bicep jarak jauh

Saat ini, Azure CLI tidak mendukung penyebaran file Bicep jarak jauh. Anda dapat menggunakan Bicep CLI untuk membuild file Bicep ke template JSON, lalu memuat file JSON ke lokasi yang jauh. Untuk informasi selengkapnya, lihat Menyebarkan templat ARM JSON jarak jauh.

Parameter

Untuk meneruskan nilai parameter, Anda dapat menggunakan parameter sebaris 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 file Bicep dalam shell Bash, gunakan:

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-bicep> \
  --parameters exampleString='inline string' exampleArray='["value1", "value2"]'

Jika Anda menggunakan Azure CLI dengan Windows Command Prompt (CMD) atau PowerShell, berikan array dalam format: exampleArray="['value1','value2']".

Anda juga bisa mendapatkan konten file dan menyediakan konten tersebut sebagai parameter sebaris. Awali nama file dengan @.

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-bicep> \
  --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.jspada adalah:

[
  "value1",
  "value2"
]

Untuk meneruskan objek, misalnya untuk mengatur tag, gunakan JSON. Misalnya, file Bicep Anda mungkin termasuk 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 $bicepFile \
--parameters resourceName=abcdef4556 resourceTags="$tags"

Gunakan kuotasi ganda di sekitar JSON yang ingin Anda teruskan ke objek.

Jika Anda menggunakan Azure CLI dengan Printah Windows (CMD) atau PowerShell, teruskan objek dalam format berikut:

$tags="{'Owner':'Contoso','Cost Center':'2345-324'}"
az deployment group create --name addstorage  --resource-group myResourceGroup \
--template-file $bicepFile \
--parameters resourceName=abcdef4556 resourceTags=$tags

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-bicep> \
  --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\"} }'.

Evaluasi parameter mengikuti urutan berurutan, yang berarti bahwa jika nilai ditetapkan beberapa kali, hanya nilai terakhir yang ditetapkan yang digunakan. Untuk memastikan penetapan parameter yang tepat, disarankan untuk menyediakan file parameter Anda pada awalnya dan secara selektif mengambil alih parameter tertentu menggunakan sintaks KEY=VALUE . Penting untuk disebutkan bahwa jika Anda menyediakan bicepparam file parameter, Anda hanya dapat menggunakan argumen ini sekali.

File parameter Bicep

Daripada meneruskan parameter sebagai nilai sebaris dalam skrip Anda, Anda mungkin merasa lebih mudah untuk menggunakan file parameter, baik file parameter Bicep atau file parameter JSON yang berisi nilai parameter. File parameter harus berupa file lokal. File parameter eksternal tidak didukung dengan Azure CLI. Untuk informasi selengkapnya tentang file parameter, lihat Membuat file parameter Resource Manager.

Dengan Azure CLI versi 2.53.0 atau yang lebih baru, dan Bicep CLI versi 0.22.X atau yang lebih tinggi, Anda dapat menyebarkan file Bicep dengan menggunakan file parameter Bicep. using Dengan pernyataan dalam file parameter Bicep, tidak perlu memberikan --template-file sakelar saat menentukan file parameter Bicep untuk --parameters sakelar. Menyertakan sakelar --template-file akan menghasilkan kesalahan "Hanya templat .bicep yang diizinkan dengan file .bicepparam".

Contoh berikut menunjukkan file parameter bernama storage.bicepparam. File berada di direktori yang sama dengan tempat perintah dijalankan.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam

File parameter JSON

Contoh berikut menunjukkan file parameter bernama storage.parameters.json. File berada di direktori yang sama dengan tempat perintah dijalankan.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.bicep \
  --parameters '@storage.parameters.json'

Untuk informasi selengkapnya tentang file parameter, lihat Membuat file parameter Resource Manager.

Anda dapat menggunakan parameter sebaris dan file parameter lokasi dalam operasi penyebaran yang sama. Untuk informasi selengkapnya, lihat Prioritas parameter.

Pratinjau perubahan

Sebelum menyebarkan file Bicep Anda, Anda dapat melakukan pratinjau pada perubahan yang akan dilakukan file Bicep ke lingkungan Anda. Gunakan operasi bagaimana-jika untuk memverifikasi bahwa file Bicep membuat perubahan yang Anda harapkan. Bagaimana-jika juga memvalidasi file Bicep untuk kesalahan.

Menyebarkan spesifikasi templat

Saat ini, Azure CLI tidak mendukung pembuatan spesifikasi templat dengan menyediakan file Bicep. Namun Anda dapat membuat file Bicep dengan sumber daya Microsoft.Resources/templateSpecs untuk menyebarkan spesifikasi templat. Buat sampel spesifikasi templat menunjukkan cara untuk membuat spesifikasi templat di file Bicep. Anda juga dapat membuat file Bicep ke JSON dengan menggunakan Bicep CLI, dan kemudian membuat spesifikasi template dengan template JSON.

Nama penyebaran

Saat menyebarkan file Bicep, Anda dapat memberi nama penyebaran. Nama ini dapat membantu Anda mengambil penyebaran dari riwayat penyebaran. Jika Anda tidak memberikan nama untuk penyebaran, nama file Bicep akan digunakan. Misalnya, jika Anda menyebarkan Bicep bernama main.bicep dan tidak menentukan nama penyebaran, penyebaran akan diberi nama main.

Setiap kali Anda menjalankan penyebaran, entri ditambahkan ke riwayat penyebaran grup sumber daya dengan nama penyebaran. Jika Anda menjalankan penyebaran lain dan memberinya nama yang sama, entri sebelumnya diganti dengan penyebaran 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 untuk memastikan entri unik dalam riwayat penyebaran, berikan nama unik pada setiap penyebaran nama.

Langkah berikutnya