مشاركة عبر


إنشاء ملف معلمات لتوزيع Bicep

توضح هذه المقالة كيفية إنشاء ملف معلمات، والذي يمكنك استخدامه بدلا من تمرير المعلمات كقيم مضمنة في البرنامج النصي الخاص بك. يمكنك استخدام إما ملف معلمات Bicep مع .bicepparam ملحق الملف أو ملف معلمات JSON الذي يحتوي على قيمة المعلمة.

إشعار

يتم دعم ملفات معلمات Bicep فقط في إصدار Bicep CLI 0.18.4 أو أحدث، وإصدار Azure CLI 2.47.0 أو أحدث، والإصدار 9.7.1 من Azure PowerShell أو أحدث.

يمكن أن يحتوي ملف Bicep واحد على ملفات معلمات Bicep متعددة مقترنة به. ومع ذلك، كل ملف معلمات Bicep مخصص لملف Bicep معين واحد. يمكنك إنشاء هذه العلاقة عن طريق تطبيق العبارة using داخل ملف معلمات Bicep.

يمكنك تحويل ملفات معلمات Bicep برمجيا إلى ملفات معلمات JSON التي يمكنك نشرها باستخدام ملف Bicep. لمزيد من المعلومات، انظر build-params. يمكنك أيضا إلغاء تحويل ملف معلمات JSON برمجيا إلى ملف معلمات Bicep. لمزيد من المعلومات، انظر decompile-params.

ملف المعلمات

يستخدم ملف المعلمات التنسيق التالي:

using '<path>/<file-name>.bicep'

param <first-parameter-name> = <first-value>
param <second-parameter-name> = <second-value>

يمكنك تطبيق العبارة using باستخدام ملف Bicep وقوالب JSON Azure Resource Manager ووحدات Bicep النمطية ومواصفات القالب. على سبيل المثال:

using './main.bicep'
...
using './azuredeploy.json'
...
using 'br/public:avm/res/storage/storage-account:0.9.0' 
...
using 'br:myacr.azurecr.io/bicep/modules/storage:v1'
...
using 'ts:00000000-0000-0000-0000-000000000000/myResourceGroup/storageSpec:1.0'
...

لمزيد من المعلومات، راجع استخدام عبارة .

من الممكن استخدام التعبيرات المحتوية القيمة الافتراضية. على سبيل المثال:

using 'main.bicep'

param storageName = toLower('MyStorageAccount')
param intValue = 2 + 2

يمكنك الرجوع إلى متغيرات البيئة كقيم معلمات. على سبيل المثال:

using './main.bicep'

param intFromEnvironmentVariables = int(readEnvironmentVariable('intEnvVariableName'))

يمكنك تعريف المتغيرات واستخدامها. يجب استخدام Bicep CLI الإصدار 0.21.X أو أحدث لاستخدام المتغيرات في .bicepparam الملفات. انظر الأمثلة التالية:

using './main.bicep'

var storagePrefix = 'myStorage'
param primaryStorageName = '${storagePrefix}Primary'
param secondaryStorageName = '${storagePrefix}Secondary'
using './main.bicep'

var testSettings = {
  instanceSize: 'Small'
  instanceCount: 1
}

var prodSettings = {
  instanceSize: 'Large'
  instanceCount: 4
}

param environmentSettings = {
  test: testSettings
  prod: prodSettings
}

إشعار

يحفظ ملف المعلمات قيم المعلمات كنص عادي. لأسباب أمنية، لا نوصي باستخدام هذا الأسلوب مع قيم حساسة مثل كلمات المرور.

إذا كنت بحاجة إلى تمرير معلمة بقيمة حساسة، يجب الاحتفاظ بالقيمة في key vault. بدلا من إضافة قيمة حساسة إلى ملف المعلمات، استخدم الدالة getSecret لاستردادها. لمزيد من المعلومات، راجع استخدام Azure Key Vault لتمرير سر كمعلمة أثناء نشر Bicep.

تنسيقات نوع المعلمة

يوضح المثال التالي تنسيقات أنواع المعلمات المختلفة: السلسلة والعدد الصحيح والقيم المنطقية والصفيف والعنصر.

using './main.bicep'

param exampleString = 'test string'
param exampleInt = 2 + 2
param exampleBool = true
param exampleArray = [
  'value 1'
  'value 2'
]
param exampleObject = {
  property1: 'value 1'
  property2: 'value 2'
}

استخدم بناء جملة Bicep للإعلان عن الكائنات والصفائف.

اسم الملف

ملحق الملف لملف معلمات Bicep هو .bicepparam.

للنشر في بيئات متعددة، يمكنك إنشاء أكثر من ملف معلمات واحد. عند استخدام ملفات معلمات متعددة، قم بتسميةها وفقا لاستخدامها. على سبيل المثال، لنشر الموارد، استخدم التسمية main.dev.bicepparam للتطوير والتسمية main.prod.bicepparam للإنتاج.

تعريف قيم المعلمات

لتحديد كيفية تعريف أسماء المعلمات والقيم، افتح ملف Bicep. انظر إلى قسم المعلمات في ملف Bicep. توضح الأمثلة التالية المعلمات من ملف Bicep المسمى main.bicep:

@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param storageAccountType string = 'Standard_LRS'

في ملف المعلمات، ابحث عن اسم كل معلمة. يجب أن تتطابق أسماء المعلمات في ملف المعلمات مع أسماء المعلمات في ملف Bicep الخاص بك.

using 'main.bicep'

param storagePrefix
param storageAccountType

تربط using العبارة ملف معلمات Bicep إلى ملف Bicep. لمزيد من المعلومات، راجع استخدام عبارة .

عند كتابة الكلمة الأساسية param في Visual Studio Code، فإنه يطالبك بالمعلمات المتوفرة ووصفها من ملف Bicep المرتبط.

لقطة شاشة لمطالبة المعلمات المتاحة.

عند المرور فوق param اسم، يمكنك مشاهدة نوع بيانات المعلمة ووصفها.

لقطة شاشة لنوع بيانات المعلمة ووصفها.

راجع نوع المعلمة، لأن أنواع المعلمات في ملف المعلمات يجب أن تستخدم نفس أنواع ملف Bicep الخاص بك. في هذا المثال، كلا النوعين من المعلمات هما سلاسل:

using 'main.bicep'

param storagePrefix = ''
param storageAccountType = ''

تحقق من ملف Bicep بحثا عن المعلمات التي تتضمن قيمة افتراضية. إذا كانت المعلمة تحتوي على قيمة افتراضية، يمكنك توفير قيمة في ملف المعلمات، ولكنها غير مطلوبة. تتجاوز قيمة ملف المعلمات القيمة الافتراضية لملف Bicep.

using 'main.bicep'

param storagePrefix = '' // This value must be provided.
param storageAccountType = '' // This value is optional. Bicep uses default value if not provided.

لمعرفة ما إذا كانت هناك أي قيود مثل الحد الأقصى للطول، تحقق من القيم المسموح بها لملف Bicep. تحدد القيم المسموح بها نطاق القيم التي يمكنك توفيرها لمعلمة. في هذا المثال، storagePrefix يمكن أن يكون بحد أقصى 11 حرفا، storageAccountType ويجب تحديد قيمة مسموح بها.

using 'main.bicep'

param storagePrefix = 'storage'
param storageAccountType = 'Standard_ZRS'

إنشاء ملف المعلمات

يمكنك إنشاء ملف معلمات باستخدام إما Visual Studio Code أو Bicep CLI. تسمح لك كلتا الأدوتين باستخدام ملف Bicep لإنشاء ملف معلمات. راجع إنشاء ملف معلمات لأسلوب Visual Studio Code وإنشاء ملف معلمات لأسلوب Bicep CLI.

إنشاء ملف معلمات Bicep

من Bicep CLI، يمكنك إنشاء ملف معلمات Bicep في ملف معلمات JSON. لمزيد من المعلومات، راجع إنشاء ملف معلمات.

نشر ملف Bicep مع ملف المعلمات

Azure CLI

من Azure CLI، يمكنك تمرير ملف معلمات مع نشر ملف Bicep الخاص بك.

يمكنك نشر ملف Bicep باستخدام ملف معلمات Bicep مع الإصدار 2.53.0 من Azure CLI أو أحدث وإصدار Bicep CLI 0.22.X أو أحدث. باستخدام العبارة using داخل ملف معلمات Bicep، ليست هناك حاجة لتوفير --template-file مفتاح التبديل عند تحديد ملف معلمات Bicep للتبديل --parameters .

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam

يمكنك استخدام المعلمات المضمنة وملف معلمات الموقع في نفس عملية النشر. على سبيل المثال:

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam \
  --parameters storageAccountType=Standard_LRS

لمزيد من المعلومات، راجع نشر ملفات Bicep باستخدام Azure CLI.

Azure PowerShell

من Azure PowerShell، مرر ملف معلمات محلي باستخدام المعلمة TemplateParameterFile .

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.bicep `
  -TemplateParameterFile C:\MyTemplates\storage.bicepparam

يمكنك استخدام المعلمات المضمنة وملف معلمات الموقع في نفس عملية النشر. على سبيل المثال:

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.bicep `
  -TemplateParameterFile C:\MyTemplates\storage.bicepparam `
  -storageAccountType Standard_LRS

لمزيد من المعلومات، راجع نشر ملفات Bicep باستخدام Azure PowerShell. لنشر .bicep الملفات، تحتاج إلى الإصدار 5.6.0 من Azure PowerShell أو أحدث.

أسبقية المعلمة

يمكنك استخدام المعلمات المضمنة وملف معلمات محلي في نفس عملية التوزيع. على سبيل المثال، يمكنك تحديد بعض القيم في ملف المعلمات المحلية وإضافة قيم أخرى مضمنة أثناء النشر. إذا قمت بتوفير قيم لمعلمة في كل من ملف المعلمات المحلية والمضمنة، فإن القيمة المضمنة لها الأسبقية.

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

تعارضات اسم المعلمة

إذا كان ملف Bicep الخاص بك يتضمن معلمة بنفس اسم إحدى المعلمات في أمر Azure PowerShell، يقدم Azure PowerShell المعلمة من ملف Bicep الخاص بك مع FromTemplate postfix. على سبيل المثال، إذا تعارضت معلمة مسماة ResourceGroupName في ملف Bicep مع المعلمة ResourceGroupNameNew-AzResourceGroupDeployment في cmdlet، فستتم مطالبتك بتوفير قيمة ل ResourceGroupNameFromTemplate. لتجنب هذا الالتباس، استخدم أسماء المعلمات التي لا تُستخدم لأوامر التوزيع.