Mulai Cepat: Membuat beberapa instans sumber daya di Bicep

Pelajari cara menggunakan sintaks for yang berbeda untuk membuat beberapa instans sumber daya di Bicep. Meskipun artikel ini hanya menunjukkan pembuatan beberapa instans sumber daya, metode yang sama dapat digunakan untuk menentukan salinan modul, variabel, properti, atau output. Untuk mempelajari selengkapnya, lihat perulangan Bicep.

Artikel ini berisi topik berikut:

Prasyarat

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Untuk menyiapkan lingkungan untuk pengembangan Bicep, lihat Pasang alat Bicep. Setelah menyelesaikan langkah-langkah tersebut, Anda akan memiliki Visual Studio Code dan ekstensi Bicep. Anda juga memiliki salah satu dari Azure CLI terbaru atau modul Microsoft Azure PowerShell terbaru.

Buat satu instans

Di bagian ini, Anda menentukan file Bicep untuk membuat akun penyimpanan, dan kemudian menyebarkan file Bicep. Bagian selanjutnya memberikan sampel Bicep untuk sintaks for yang berbeda. Anda dapat menggunakan metode penyebaran yang sama untuk menyebarkan dan menguji sampel tersebut. Jika penyebaran Anda gagal, kemungkinan salah satu dari dua penyebabnya:

  • Nama akun penyimpanan terlalu panjang. Nama akun penyimpanan harus berdurasi antara 3 dan 24 karakter dan dapat berisi angka dan huruf kecil saja.
  • Nama akun penyimpanan tidak unik. Nama akun penyimpanan harus unik di seluruh Azure.

File Bicep berikut menentukan satu akun penyimpanan:

param rgLocation string = resourceGroup().location

resource createStorage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

Simpan file Bicep secara lokal, lalu gunakan Azure CLI atau Azure PowerShell untuk menyebarkan file Bicep:

resourceGroupName = "{provide-a-resource-group-name}"
templateFile="{provide-the-path-to-the-bicep-file}"

az group create --name $resourceGroupName --location eastus

az deployment group create --resource-group $resourceGroupName --template-file $templateFile

Menggunakan indeks bilangan bulat

Perulangan for dengan indeks digunakan dalam contoh berikut untuk membuat dua akun penyimpanan:

param rgLocation string = resourceGroup().location
param storageCount int = 2

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for i in range(0, storageCount): {
  name: '${i}storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

output names array = [for i in range(0,storageCount) : {
  name: createStorages[i].name
} ]

Nomor indeks digunakan sebagai bagian dari nama akun penyimpanan. Setelah menyebarkan file Bicep, Anda mendapatkan dua akun penyimpanan yang mirip dengan:

Gunakan indeks bilangan bulat dengan 0 sebagai nomor awal

Di dalam range(), angka pertama adalah angka awal, dan angka kedua adalah jumlah berapa kali perulangan akan berjalan. Jadi, jika Anda mengubahnya ke range(3,2), Anda juga akan mendapatkan dua akun penyimpanan:

Gunakan indeks bilangan bulat dengan 3 sebagai nomor awal

Hasil dari contoh sebelumnya menunjukkan cara mereferensikan sumber daya yang dibuat dalam perulangan. Output mirip dengan:

"outputs": {
  "names": {
    "type": "Array",
    "value": [
      {
        "name": "0storage52iyjssggmvue"
      },
      {
        "name": "1storage52iyjssggmvue"
      }
    ]
  }
},

Menggunakan elemen larik

Anda dapat mengulang melalui larik. Contoh berikut menunjukkan larik string.

param rgLocation string = resourceGroup().location
param storageNames array = [
  'contoso'
  'fabrikam'
]

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for name in storageNames: {
  name: '${name}str${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

Perulangan menggunakan semua string dalam larik sebagai bagian dari nama akun penyimpanan. Dalam kasus ini, perulangan membuat dua akun penyimpanan:

Gunakan array string

Anda juga dapat mengulang melalui larik objek. Perulangan tidak hanya menyesuaikan nama akun penyimpanan, tetapi juga mengonfigurasi SKU.

param rgLocation string = resourceGroup().location
param storages array = [
  {
    name: 'contoso'
    skuName: 'Standard_LRS'
  }
  {
    name: 'fabrikam'
    skuName: 'Premium_LRS'
  }
]

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for storage in storages: {
  name: '${storage.name}obj${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: storage.skuName
  }
  kind: 'StorageV2'
}]

Perulangan membuat dua akun penyimpanan. SKU akun penyimpanan dengan nama yang diawali dengan fabrikam adalah Premium_LRS.

Gunakan array string

Menggunakan larik dan indeks

Dalam kasus yang sama, Anda mungkin perlu menggabungkan perulangan larik dengan perulangan indeks. Contoh berikut menunjukkan cara menggunakan larik dan nomor indeks untuk konvensi penamaan.

param rgLocation string = resourceGroup().location
param storageNames array = [
  'contoso'
  'fabrikam'
]

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for (name, i) in storageNames: {
  name: '${i}${name}${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

Setelah menyebarkan sampel sebelumnya, Anda membuat dua akun penyimpanan yang mirip dengan:

Gunakan array string dan nomor indeks

Menggunakan objek kamus

Untuk mengulangi elemen dalam objek kamus, gunakan fungsi item, yang mengonversi objek menjadi array. Gunakan properti value untuk mendapatkan properti pada objek.

param rgLocation string = resourceGroup().location

param storageConfig object = {
  storage1: {
    name: 'contoso'
    skuName: 'Standard_LRS'
  }
  storage2: {
    name: 'fabrikam'
    skuName: 'Premium_LRS'
  }
}

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for config in items(storageConfig): {
  name: '${config.value.name}${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: config.value.skuName
  }
  kind: 'StorageV2'
}]

Perulangan membuat dua akun penyimpanan. SKU akun penyimpanan dengan nama yang diawali dengan fabrikam adalah Premium_LRS.

Gunakan objek kamus

Perulangan dengan kondisi

Untuk sumber daya dan modul, Anda dapat menambahkan ekspresi if dengan sintaks perulangan guna menyebarkan koleksi secara kondisional.

param rgLocation string = resourceGroup().location
param storageCount int = 2
param createNewStorage bool = true

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for i in range(0, storageCount): if(createNewStorage) {
  name: '${i}storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

Untuk informasi selengkapnya, lihat penyebaran kondisional di Bicep.

Membersihkan sumber daya

Saat sumber daya Azure tidak lagi diperlukan, gunakan modul Azure CLI atau Azure PowerShell untuk menghapus grup sumber daya mulai cepat.

resourceGroupName = "{provide-the-resource-group-name}"

az group delete --name $resourceGroupName

Langkah berikutnya