المتغيرات في Bicep

توضح هذه المقالة كيفية تحديد المتغيرات واستخدامها في ملف Bicep. يمكنك استخدام المتغيرات لتبسيط تطوير ملف Bicep الخاص بك. بدلاً من تكرار التعبيرات المعقدة في ملف Bicep الخاص بك، يمكنك تحديد متغير يحتوي على تعبير معقد. بعد ذلك، يمكنك استخدام هذا المتغير حسب الحاجة في ملف Bicep الخاص بك.

يحل Resource Manager المتغيرات قبل بدء عمليات التوزيع. أينما يتم استخدام المتغير في ملف Bicep، تقوم إدارة الموارد باستبداله بالقيمة التي تم حلها.

تقتصر على 256 متغيرا في ملف Bicep. لمزيد من المعلومات، راجع حدود القالب.

تحديد المتغير

بناء جملة تحديد المتغير هو:

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

لا يمكن أن يكون للمتغيّر نفس اسم المعلمة، أو الوحدة النمطية، أو المورد.

لاحظ أنك لا تحدد نوع بيانات للمتغير. يتم الاستدلال على النوع من القيمة. المثال التالي يعين متغيرًا إلى السلسلة.

var stringVar = 'example value'

يمكنك استخدام القيمة من معلمة أو متغير آخر عند تكوين المتغير.

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

المثال السابق يرجع:

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

يمكنك استخدام وظائف Bicep لتكوين قيمة المتغير. يستخدم المثال التالي وظائف Bicep لإنشاء قيمة سلسلة لاسم حساب تخزين.

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

output uniqueStorageName string = storageName

المثال السابق يرجع قيمة كالتالي:

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

يمكنك استخدام التكرارات الحلقية عند تحديد متغير. ينشئ المثال التالي صفيف من العناصر ذات الخصائص الثلاث.

param itemCount int = 3

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

output arrayResult array = objectArray

يعيد الإخراج صفيف بالقيم التالية:

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

لمزيد من المعلومات حول أنواع التكرارات الحلقية التي يمكنك استخدامها مع المتغيرات، راجع الحلقات التكرارية في Bicep.

استخدام المتغير

يوضح المثال التالي كيفية استخدام المتغير لخاصية مورد. يمكنك الرجوع إلى قيمة المتغير من خلال توفير اسم المتغير: 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

لأن أسماء حسابات التخزين يجب أن تستخدم أحرف صغيرة، المتغير storageName يستخدم الوظيفة toLower لجعل القيمة storageNamePrefix حرف صغير. تقوم الوظيفة uniqueString بإنشاء قيمة فريدة من معرف مجموعة الموارد. يتم ربط القيم بسلسلة.

متغيرات التكوين

يمكنك تحديد المتغيرات التي تحتوي على قيم ذات صلة لتكوين بيئة. يمكنك تحديد المتغير ككائن مع القيم. يوضح المثال التالي كائناً يحمل قيماً لبيئتين - اختبار وإنتاج. قم بتمرير إحدى هذه القيم أثناء التوزيع.

@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

الخطوات التالية