Variabel dalam Bicep

Artikel ini menjelaskan cara menentukan dan menggunakan parameter dalam file Bicep. Anda menggunakan variabel untuk menyederhanakan pengembangan file Bicep Anda. Daripada mengulangi ekspresi rumit di seluruh templat Anda, Anda tentukan variabel yang berisi ekspresi rumit. Kemudian, Anda gunakan variabel tersebut sesuai kebutuhan di seluruh file Bicep Anda.

Resource Manager menyelesaikan nilai parameter sebelum memulai operasi penyebaran. Di mana pun parameter digunakan dalam file Bicep, Azure Resource Manager menggantinya dengan nilai yang diselesaikan.

Anda dibatasi hingga 256 variabel dalam file Bicep. Untuk informasi selengkapnya, lihat Batas templat.

Menentukan variabel

Sintaks untuk menentukan variabel adalah:

var <variable-name> = <variable-value>

Variabel tidak boleh memiliki nama yang sama dengan parameter, modul, atau sumber daya.

Perhatikan bahwa Anda tidak menentukan jenis data untuk variabel. Jenis ini disimpulkan dari nilai. Contoh berikut mengatur variabel ke string.

var stringVar = 'example value'

Anda dapat menggunakan nilai dari parameter atau variabel lain saat membuat variabel.

param inputValue string = 'deployment parameter'

var stringVar = 'preset variable'
var concatToVar =  '${stringVar}AddToVar'
var concatToParam = '${inputValue}AddToParam'

output addToVar string = concatToVar
output addToParam string = concatToParam

Contoh sebelumnya menampilkan:

{
  "addToParam": {
    "type": "String",
    "value": "deployment parameterAddToParam"
  },
  "addToVar": {
    "type": "String",
    "value": "preset variableAddToVar"
  }
}

Anda dapat menggunakan fungsi Bicep untuk membuat nilai variabel. Contoh berikut menggunakan fungsi Bisep untuk membuat nilai string untuk nama akun penyimpanan.

param storageNamePrefix string = 'stg'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'

output uniqueStorageName string = storageName

Contoh sebelumnya menampilkan nilai seperti berikut ini:

"uniqueStorageName": {
  "type": "String",
  "value": "stghzuunrvapn6sw"
}

Anda dapat menggunakan perulangan iteratif saat menentukan variabel. Contoh berikut membuat array objek dengan tiga properti.

param itemCount int = 3

var objectArray = [for i in range(0, itemCount): {
  name: 'myDataDisk${(i + 1)}'
  diskSizeGB: '1'
  diskIndex: i
}]

output arrayResult array = objectArray

Output menghasilkan array dengan nilai-nilai berikut:

[
  {
    "name": "myDataDisk1",
    "diskSizeGB": "1",
    "diskIndex": 0
  },
  {
    "name": "myDataDisk2",
    "diskSizeGB": "1",
    "diskIndex": 1
  },
  {
    "name": "myDataDisk3",
    "diskSizeGB": "1",
    "diskIndex": 2
  }
]

Untuk informasi selengkapnya tentang jenis perulangan yang dapat Anda gunakan dengan variabel, lihat Perulangan Iteratif di Bisep.

Menggunakan variabel

Contoh berikut menunjukkan cara menggunakan variabel untuk properti sumber daya. Anda mereferensikan nilai variabel dengan memberikan nama variabel: storageName.

param rgLocation string
param storageNamePrefix string = 'STG'

var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'

resource demoAccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  name: storageName
  location: rgLocation
  kind: 'Storage'
  sku: {
    name: 'Standard_LRS'
  }
}

output stgOutput string = storageName

Karena nama akun penyimpanan harus menggunakan huruf kecil, storageName variabel menggunakan toLower fungsi untuk membuat storageNamePrefix nilai huruf kecil. Fungsi ini uniqueString menciptakan nilai unik dari ID grup sumber daya. Nilai digabungkan ke string.

Variabel konfigurasi

Anda dapat menahan variabel yang menyimpan nilai terkait untuk mengonfigurasi lingkungan. Anda tentukan variabel sebagai objek dengan nilai. Contoh berikut menunjukkan objek yang menahan nilai untuk dua lingkungan - uji dan prod. Masukkan salah satu nilai tersebut selama penyebaran.

@allowed([
  'test'
  'prod'
])
param environmentName string

var environmentSettings = {
  test: {
    instanceSize: 'Small'
    instanceCount: 1
  }
  prod: {
    instanceSize: 'Large'
    instanceCount: 4
  }
}

output instanceSize string = environmentSettings[environmentName].instanceSize
output instanceCount int = environmentSettings[environmentName].instanceCount

Langkah berikutnya