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:
- menggunakan indeks bilangan bulat
- menggunakan elemen larik
- menggunakan larik dan indeks
- menggunakan objek kamus
- perulangan dengan kondisi
Prasyarat
Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda 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 sepanjang 3 dan 24 karakter dan dapat mengandung 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@2023-04-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@2023-04-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:
Di dalam range(), angka pertama adalah angka awal, dan angka kedua adalah jumlah berapa kali perulangan akan berjalan. Jadi, jika Anda mengubahnya menjadi rentang(3,2), Anda juga akan mendapatkan dua akun penyimpanan:
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@2023-04-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:
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@2023-04-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.
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@2023-04-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:
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@2023-04-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.
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@2023-04-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