التمرين - إضافة معلمات ومتغيرات إلى قالب Bicep الخاص بك
في هذا التمرين، ستقوم بتحديث قالب Bicep الذي قمت بإنشائه مسبقاً بحيث يقوم بالتالي:
- قبول المعلمات الخاصة بمواقع الموارد وأسمائها
- استخدام قواعد العمل الخاصة بك لتحديد وحدات SKU المناسبة للموارد التي يتم توزيعها
أثناء العملية، ستقوم بما يلي:
- تحديث القالب لتضمين معلمة
location - تحديث القالب لتضمين المعلمات والمتغيرات لأسماء الموارد
- استخدام التعبيرات لتعيين القيم الافتراضية للمعلمات
- تحديث القالب لتضمين متغيرات وحدة SKU لكل مورد
- اختبار التوزيع للتأكد من صلاحية القالب
إضافة معلمات اسم الموقع والموارد
في ملف main.bicep الموجود في Visual Studio Code، أضف التعليمات البرمجية التالية إلى أعلى الملف:
param location string = 'westus3' param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}' param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}' var appServicePlanName = 'toy-product-launch-plan'أثناء الكتابة، تضيف أداة تحليل Bicep خطوطاً صفراء متعرجة أسفل كلٍ من أسماء المعلمات وأسماء المتغيرات للإشارة إلى أنها غير مستخدمة حالياً. سيمكنك إصلاح هذا قريباً.
لاحظ أنك تستخدم تعبيرات تتضمن استنتاج سلسلة والدالة
uniqueString()لتعريف قيم المعلمات الافتراضية. يمكن للشخص الذي يقوم بنشر هذا القالب تجاوز قيم المعلمات الافتراضية عن طريق تحديد القيم في وقت النشر، ولكن لا يمكنه تجاوز قيم المتغيرات.لاحظ أيضاً أنك تستخدم متغيراً لاسم خطة Azure App Service، ولكنك تستخدم معلمات للأسماء الأخرى. تحتاج حسابات التخزين وتطبيقات App Service إلى أسماء فريدة بشكل عام، ولكن يجب أن تكون أسماء خطة App Service فريدة فقط داخل مجموعة الموارد الخاصة بها. يعني هذا الاختلاف أنه ليس من المهم استخدام الاسم نفسه لخطة App Service عبر عمليات نشر مختلفة، طالما أن عمليات النشر تُنقل في مجموعات موارد مختلفة.
تلميح
أنت تحدد أنه يجب تعيين المعلمة
locationإلىwestus3. عادةً، يمكنك إنشاء موارد في نفس موقع مجموعة الموارد باستخدام الخاصيةresourceGroup().location. ولكن عند العمل مع بيئة الاختبار المعزولة Microsoft Learn، تحتاج إلى استخدام مناطق Azure معينة لا تتطابق مع موقع مجموعة الموارد.اعثر على الأماكن الموجودة بداخل تعريفات الموارد حيث يتم تعيين الخصائص
locationوname، وقم بتحديثها لاستخدام قيم المعلمة. بعد الانتهاء، يجب أن تظهر تعريفات الموارد الموجودة بداخل ملف Bicep كما يلي:resource storageAccount 'Microsoft.Storage/storageAccounts@2021-08-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverFarms@2021-03-01' = { name: appServicePlanName location: location sku: { name: 'F1' } } resource appServiceApp 'Microsoft.Web/sites@2021-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }احفظ التغييرات إلى الملف.
تعيين وحدات SKU تلقائياً لكل نوع من أنواع البيئات
في ملف main.bicep الموجود في Visual Studio Code، أضف المعلمة التالية لـ Bicep بأسفل المعلمات التي قمت بإنشائها في المهمة السابقة:
@allowed([ 'nonprod' 'prod' ]) param environmentType stringلاحظ أنك تقوم بتعريف معلمة بمجموعة من القيم المسموح بها، ولكنك لا تحدد قيمة افتراضية لهذه المعلمة.
أسفل السطر الذي يقوم بتعريف المتغير
appServicePlanNameقم بإضافة تعريفات المتغير التالية:var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'لاحظ أنك تقوم بتعيين قيم المتغيرات هذه باستخدام العامل الثلاثي للتعبير عن بعض العمليات المنطقية if/then/else logic.
اعثر على الأماكن الموجودة بداخل تعريفات الموارد حيث يتم تعيين خصائص
sku، وقم بتحديثها لاستخدام قيم المعلمة. بعد الانتهاء، يجب أن تبدو تعريفات الموارد في ملف Bicep لديك كما يلي:resource storageAccount 'Microsoft.Storage/storageAccounts@2021-08-01' = { name: storageAccountName location: location sku: { name: storageAccountSkuName } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverFarms@2021-03-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2021-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }لاحظ أنك لم تقم بتعيين معلمات لكل شيء. لقد قمت بتعيين بعض الخصائص في تعريفات الموارد مباشرةً، إذ إنك تعرف أن ذلك لن يتغير بين عمليات التوزيع.
احفظ التغييرات إلى الملف.
نشر قالب Bicep المحدث
قم بتشغيل أمر Azure CLI التالي في المحطة الطرفية. يشبه ذلك الأمر الذي قمت بتشغيله من قبل.
az deployment group create \
--template-file main.bicep \
--parameters environmentType=nonprod
قم بتشغيل أمر Azure PowerShell التالي في المحطة الطرفية. يشبه ذلك الأمر الذي قمت بتشغيله من قبل.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-environmentType nonprod
لاحظ أنك قمت بتحديد القيمة بوضوح للمعلمة environmentType عند تنفيذ النشر. لا تحتاج إلى تحديد جميع قيم المعلمات الأخرى لأنها تحتوي على إعدادات افتراضية ذات معنى.
التحقق من عملية نشرك
في المستعرض لديك، ارجع إلى مدخل Azure. انتقل إلى مجموعة الموارد الخاصة بك. ستظل تشاهد عملية نشر ناجحة واحدة، لأن النشر قد استخدم الاسم نفسه لعملية النشر الأولى.
حدد رابط "1 Succeeded".
حدد عملية النشر باسم "main"، ثم حدد "Deployment details" لتوسيع قائمة الموارد التي تم نشرها.
.
لاحظ أنه تم توزيع تطبيق App Service جديد وحساب تخزين بأسماء تم إنشاؤها عشوائيًا.
هل تحتاج إلى مساعدة؟ راجع دليل استكشاف الأخطاء وإصلاحها الذي نقدمه أو يمكنك توفير ملاحظات معينة عبر الإبلاغ عن مشكلة.