Bicep'te değişkenler

Bu makalede, Bicep dosyanız içinde değişkenleri tanımlama ve kullanma açıklanmıştır. Değişkenleri kullanarak Bicep dosya geliştirme sürecinizi basitleştirirsiniz. Bicep dosyanız genelinde karmaşık ifadeleri yinelemek yerine, karmaşık ifadeyi içeren bir değişken tanımlayın. Ardından bu değişkeni Bicep dosyanız boyunca gereken şekilde kullanabilirsiniz.

Resource Manager dağıtım işlemlerini başlatmadan önce değişkenleri çözümlemektedir. Değişken Bicep dosyasında nerede kullanılırsa Resource Manager çözümlenen değerle değiştirir.

Değişken tanımlama

Değişken tanımlama söz dizimi şu şekildedir:

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

Değişkenin adı parametre, modül veya kaynakla aynı adla aynı olabilir.

değişkeni için bir veri türü belirtmeyebilirsiniz. Tür, değerinden inferred. Aşağıdaki örnek bir değişkeni dizeye ayarlar.

var stringVar = 'example value'

Değişkeni oluşturmak için bir parametre veya başka bir değişkenden değeri kullanabilirsiniz.

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

Yukarıdaki örnek şunları döndürür:

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

Değişken değerini oluşturmak için Bicep işlevlerini kullanabilirsiniz. Aşağıdaki örnekte, bir depolama hesabı adı için dize değeri oluşturmak için Bicep işlevleri kullanılır.

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

output uniqueStorageName string = storageName

Yukarıdaki örnek aşağıdakine benzer bir değer döndürür:

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

Değişken tanımlarken tekrarlı döngüler kullanabilirsiniz. Aşağıdaki örnek, üç özelliği olan bir nesne dizisi oluşturur.

param itemCount int = 3

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

output arrayResult array = objectArray

Çıkış, aşağıdaki değerlerle bir dizi döndürür:

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

Değişkenlerle kullanabileceğiniz döngü türleri hakkında daha fazla bilgi için bkz. Bicep'te tekrarlı döngüler.

Değişken kullanma

Aşağıdaki örnekte, bir kaynak özelliği için değişkenin nasıl kullanımına sahip olduğu gösterir. Değişkenin adını sağlayarak değişkenin değerine başvururuz: 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

Depolama hesabı adlarının küçük harfler kullanması gerek olduğundan storageName değişken, değeri toLower küçük harf yapmak için işlevini storageNamePrefix kullanır. İşlev, uniqueString kaynak grubu kimliğinden benzersiz bir değer oluşturur. Değerler bir dizeyle bir concatenated.

Yapılandırma değişkenleri

Bir ortamı yapılandırmak için ilgili değerlerin tutulacak değişkenleri tanımlayabilirsiniz. Değişkeni değerleriyle bir nesne olarak tanımlarsınız. Aşağıdaki örnek, test ve prod olmak için iki ortam için değerleri tutan bir nesneyi gösterir. Dağıtım sırasında bu değerlerden birini iletir.

@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

Sonraki adımlar