إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة كيفية استخدام Azure PowerShell مع ملفات Bicep لنشر الموارد الخاصة بك إلى Azure. إذا لم تكن على دراية بنشر حلول Azure وإدارتها، فشاهد ما هو Bicep؟.
المتطلبات الأساسية
تحتاج إلى ملف Bicep لنشره، ويجب أن يكون الملف محليا. تحتاج أيضا إلى Azure PowerShell وأن تكون متصلا ب Azure:
- قم بتثبيت Azure PowerShell cmdlets على الكمبيوتر المحلي. لنشر ملفات Bicep، تحتاج إلى الإصدار 5.6.0 من Azure PowerShell أو أحدث. لمزيد من المعلومات، راجع بدء استخدام Azure PowerShell.
- تثبيت Bicep CLI. يجب تثبيت Bicep CLI يدويا نظرا لأن Azure PowerShell لا يقوم بتثبيته تلقائيا.
-
استخدم
Connect-AzAccountللاتصال ب Azure. إذا كان لديك العديد من اشتراكات Azure، فقد تحتاج أيضا إلى تشغيلSet-AzContext. لمزيد من المعلومات، راجع استخدام اشتراكات Azure المتعددة.
إذا لم يكن لديك PowerShell مثبتًا، فيمكنك استخدام Azure Cloud Shell. لمزيد من المعلومات، راجع نشر ملفات Bicep باستخدام Azure Cloud Shell.
الأذونات المطلوبة
لنشر ملف Bicep أو قالب Azure Resource Manager (ARM)، تحتاج إلى الوصول للكتابة على الموارد التي تقوم بنشرها والوصول إلى جميع العمليات على نوع المورد Microsoft.Resources/deployments . على سبيل المثال، لتوزيع جهاز ظاهري، تحتاج إلى أذونات Microsoft.Compute/virtualMachines/write وMicrosoft.Resources/deployments/*. عملية "ماذا لو" لها متطلبات الإذن نفسها.
يقدم الإصدار 2.76.0 من Azure CLI أو إصدار أحدث والإصدار 13.4.0 من Azure PowerShell أو إصدار أحدث مفتاح ValidationLevel لتحديد مدى دقة ARM للتحقق من صحة قالب Bicep أثناء هذه العملية. لمزيد من المعلومات، راجع أوامر ماذا لو
للحصول على قائمة بالأدوار والأذونات، انظر أدوار Azure المضمنة.
نطاق النشر
يمكنك توجيه عملية النشر إلى مجموعة موارد أو اشتراك أو مجموعة إدارة أو مستأجر. اعتمادا على نطاق النشر، يمكنك استخدام أوامر مختلفة، ويجب أن يكون لدى المستخدم الذي ينشر ملف Bicep الأذونات المطلوبة لإنشاء موارد لكل نطاق.
للنشر إلى مجموعة موارد، استخدم
New-AzResourceGroupDeployment:New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateFile <path-to-bicep>للنشر إلى cmdlet:
New-AzSubscriptionDeployment -Location <location> -TemplateFile <path-to-bicep>لمزيد من المعلومات حول عمليات النشر على مستوى الاشتراك، راجع استخدام Bicep لنشر الموارد للاشتراك.
للنشر إلى مجموعة إدارة، استخدم
New-AzManagementGroupDeployment.New-AzManagementGroupDeployment -ManagementGroupId <management-group-id> -Location <location> -TemplateFile <path-to-bicep>لمزيد من المعلومات حول عمليات النشر على مستوى مجموعة الإدارة، راجع استخدام Bicep لنشر الموارد إلى مجموعة الإدارة.
للنشر إلى مستأجر، استخدم
New-AzTenantDeployment.New-AzTenantDeployment -Location <location> -TemplateFile <path-to-bicep>لمزيد من المعلومات حول عمليات النشر على مستوى المستأجر، راجع استخدام Bicep لنشر الموارد إلى المستأجر.
نشر ملف Bicep المحلي
يصف هذا القسم كيفية نشر ملف Bicep محلي. يمكنك نشر ملف Bicep من جهازك المحلي أو ملف خارجي.
إذا كنت تقوم بالتوزيع في مجموعة موارد غير موجودة، قم بإنشاء مجموعة الموارد. يمكن أن يتضمن اسم مجموعة الموارد أحرفاً أبجدية رقمية ونقاط وتسطيرات أسفل السطر وواصلات وأقواساً فقط. يمكن أن يصل إلى 90 حرفا ولا يمكن أن ينتهي في فترة.
New-AzResourceGroup -Name ExampleGroup -Location "Central US"
لنشر ملف Bicep محلي، استخدم -TemplateFile مفتاح التبديل في أمر النشر:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleGroup `
-TemplateFile <path-to-bicep>
قد يستغرق النشر عدة دقائق حتى يكتمل.
نشر ملف Bicep عن بُعد
لا يدعم Azure PowerShell حاليا نشر ملفات Bicep البعيدة. يمكنك استخدام Bicep CLI لإنشاء ملف Bicep إلى قالب JSON ثم تحميل ملف JSON إلى موقع بعيد. لمزيد من المعلومات، راجع نشر قالب بعيد.
المعلمات
لتمرير قيم المعلمات، يمكنك استخدام معلمات مضمنة أو ملف معلمات. يمكن أن يكون ملف المعلمات إما ملف معلمات Bicep أو ملف معلمات JSON.
المعلمات المُضمنة
لتمرير معلمات مُضمنة، قم بتوفير أسماء المعلمة مع الأمر New-AzResourceGroupDeployment. على سبيل المثال، لتمرير سلسلة صفيف إلى ملف Bicep، استخدم:
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleString "inline string" `
-exampleArray $arrayParam
يمكنك استخدام المعلمة TemplateParameterObject لتمرير hashtable الذي يحتوي على معلمات القالب:
$params = @{
exampleString = "inline string"
exampleArray = "value1", "value2"
}
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-TemplateParameterObject $params
يمكنك أيضا الحصول على محتويات الملف وتوفير هذا المحتوى كمعلمة مضمنة:
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleString $(Get-Content -Path c:\MyTemplates\stringcontent.txt -Raw) `
-exampleArray $arrayParam
يُعد الحصول على قيمة معلمة من ملف مفيداً عندما تحتاج إلى توفير قيم التكوين. على سبيل المثال، يمكنك توفير قيم تهيئة السحابة لجهاز Linux ظاهري.
إذا كنت بحاجة إلى تمرير صفيف من الكائنات، قم بإنشاء جداول التجزئة في Azure PowerShell وإضافتها إلى صفيف. قم بتمرير هذا الصفيف كمعلمة أثناء النشر:
$hash1 = @{ Name = "firstSubnet"; AddressPrefix = "10.0.0.0/24"}
$hash2 = @{ Name = "secondSubnet"; AddressPrefix = "10.0.1.0/24"}
$subnetArray = $hash1, $hash2
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-bicep> `
-exampleArray $subnetArray
ملفات معلمات Bicep
بدلا من تمرير المعلمات كقيم مضمنة في البرنامج النصي الخاص بك، قد تجد أنه من الأسهل استخدام ملف معلمات Bicep أو ملف معلمات JSON الذي يحتوي على قيم المعلمات. يجب أن يكون ملف معلمات Bicep ملفا محليا، بينما يمكن أن يكون ملف قالب JSON موجودا في مكان ما عبر الإنترنت. لمزيد من المعلومات حول ملفات المعلمات، راجع إنشاء ملفات المعلمات لتوزيع Bicep.
يمكنك استخدام ملف معلمات Bicep لنشر ملف Bicep مع الإصدار 10.4.0 من Azure PowerShell أو أحدث وإصدار Bicep CLI 0.22.X أو أحدث. باستخدام العبارة using داخل ملف معلمات Bicep، ليست هناك حاجة لتوفير -TemplateFile مفتاح التبديل عند تحديد ملف معلمات Bicep للتبديل -TemplateParameterFile .
يوضح المثال التالي ملف معلمات يسمى storage.bicepparam. الملف موجود في نفس الدليل حيث يتم تشغيل الأمر:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateParameterFile storage.bicepparam
ملفات معلمات JSON
يمكن لملف معلمات JSON ملف محلي أو خارجي مع URI يمكن الوصول إليه.
لتمرير ملف معلمات محلي، استخدم TemplateParameterFile مفتاح التبديل مع ملف معلمات JSON:
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\BicepFiles\storage.bicep `
-TemplateParameterFile c:\BicepFiles\storage.parameters.json
لتمرير ملف معلمات خارجي، استخدم المعلمة TemplateParameterUri :
New-AzResourceGroupDeployment `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\BicepFiles\storage.bicep `
-TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json
نظرا لأن المعلمة TemplateParameterUri تدعم ملفات معلمات JSON فقط، فإنها لا تدعم .bicepparam الملفات.
يمكنك استخدام المعلمات المضمنة وملف معلمات الموقع في نفس عملية النشر. لمزيد من المعلومات، راجع أسبقية المعلمة.
معاينة التغييرات
قبل نشر ملف Bicep الخاص بك، يمكنك معاينة التغييرات التي سيقوم بها ملف Bicep على البيئة الخاصة بك. استخدم عملية ماذا لو للتحقق من أن ملف Bicep يقوم بإجراء التغييرات التي تتوقعها. ماذا لو أيضاً تقوم بالتحقق من صحة الملف Bicep للأخطاء.
نشر مواصفات القالب
لا يوفر Azure PowerShell حاليا ملفات Bicep للمساعدة في إنشاء مواصفات القالب. ومع ذلك، يمكنك إنشاء ملف Bicep باستخدام مورد Microsoft.Resources/templateSpecs لنشر مواصفات قالب. يوضح نموذج Create template spec كيفية إنشاء مواصفات قالب في ملف Bicep. يمكنك أيضا إنشاء ملف Bicep الخاص بك إلى JSON باستخدام Bicep CLI ثم قالب JSON لإنشاء مواصفات قالب.
اسم التوزيع
عند نشر ملف Bicep، يمكنك إعطاء النشر اسماً. يمكن أن يساعدك هذا الاسم في استرداد النشر من محفوظات النشر. إذا لم تقدم اسما للتوزيع، يصبح اسمه اسم ملف Bicep. على سبيل المثال، إذا قمت بنشر ملف Bicep يسمى main.bicep ولم تحدد اسم نشر، تتم تسمية mainالنشر .
في كل مرة تُشغل فيها النشر، تتم إضافة إدخال إلى محفوظات نشر مجموعة الموارد باسم النشر. إذا قمت بتشغيل نشر آخر وأعطيته نفس الاسم، يُستبدل الإدخال السابق بالنشر الحالي. إذا كنت ترغب في الاحتفاظ بإدخالات فريدة في محفوظات النشر، قم بإعطاء كل نشر اسماً فريداً.
لإنشاء اسم فريد، يمكنك تعيين رقم عشوائي:
$suffix = Get-Random -Maximum 1000
$deploymentName = "ExampleDeployment" + $suffix
أو أضف قيمة تاريخ:
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="ExampleDeployment"+"$today"
إذا قمت بتشغيل عمليات النشر المتزامنة إلى نفس مجموعة الموارد بنفس اسم النشر، فسيتم إكمال النشر الأخير فقط. تُستبدل أي عمليات نشر تحمل نفس الاسم، ولم تكتمل بعد، بعملية النشر الأخيرة. على سبيل المثال، إذا قمت بتشغيل عملية نشر باسم newStorage تنشر حساب تخزين يسمى storage1 وتشغل نشرا آخر باسم newStorage ينشر حساب تخزين باسم storage2 في نفس الوقت، فإنك تقوم بنشر حساب تخزين واحد فقط. يتم تسمية حساب التخزين الناتج بـ storage2.
ومع ذلك، إذا قمت بتشغيل نشر باسم newStorage ينشر حساب تخزين يسمى storage1 وقمت على الفور بتشغيل نشر آخر يسمى newStorage ينشر حساب تخزين يسمى storage2 بعد انتهاء النشر الأول، فلديك حسابان للتخزين. أحدهما يسمى storage1، والآخر يسمى storage2. ولكن لديك إدخال واحد فقط في محفوظات النشر.
عند تحديد اسم فريد لكل نشر، يمكنك تشغيلهم بشكل متزامن دون تعارض. إذا قمت بتشغيل عملية نشر باسم newStorage1 تقوم بنشر حساب تخزين مسمى storage1 وتشغيل نشر آخر يسمى newStorage2 ينشر حساب تخزين باسم storage2 في نفس الوقت، فسيكون لديك حسابا تخزين وإدخالين في محفوظات النشر.
لتجنب تعارض مع عمليات التوزيع المتزامنة ولضمان إدخالات فريدة في محفوظات التوزيع، قم بإعطاء كل توزيع اسمًا فريدًا.
الخطوات التالية
لمعرفة كيفية تعريف المعلمات في ملفك، راجع فهم بنية وبناء جملة ملفات Bicep.