التشغيل السريع: استكشاف أخطاء نشر ملفات Bicep وإصلاحها

يستعرض هذا التشغيل السريع كيفية استكشاف أخطاء نشر ملف Bicep وإصلاحها. ستنشئ ملف به أخطاء وتتعلم كيفية إصلاح هذه الأخطاء.

هناك ثلاثة أنواع من الأخطاء المرتبطة بالنشر:

  • تظهر أخطاء التحقق من صحة البيانات قبل بدء عملية النشر وهي ناتجة عن أخطاء بناء الجملة في الملف. يمكن لمحرر التعليمات البرمجية مثل Visual Studio Code تحديد هذه الأخطاء.
  • تحدث أخطاء التحقق من صحة الاختبار المبدئي عند تشغيل أمر التوزيع دون توزيع الموارد. يتم العثور على هذه الأخطاء قبل بدء النشر. على سبيل المثال، إذا كانت قيمة معلمة غير صحيحة، يستطيع الاختبار المبدئي العثور على الخطأ.
  • أخطاء التوزيع تظهر أثناء عملية التوزيع ولا يمكن العثور عليها إلا بتقييم سير عملية التوزيع في بيئة Azure.

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

المتطلبات الأساسية

لاستكمال هذا التشغيل السريع، ستحتاج إلى العناصر التالية:

أنشئ ملف Bicep مع أخطاء

انسخ الملف Bicep التالي وحفظه محليا. ستستخدم هذا الملف لاستكشاف أخطاء التحقق من صحة البيانات أخطاء الاختبار المبدئي وخطأ النشر. يفترض هذا التشغيل السريع أنك قدم سميتtroubleshoot.bicep ولكن يمكنك إعطائه أي اسم أخر.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

resource existingVNet 'Microsoft.Network/virtualNetworks@2021-03-01' existing = {
  name: 'doesnotexist'
}

output storageAccountName string = storageAccountName
output vnetResult object = existingVNet

إصلاح خطأ التحقق من الصحة

افتح الملف في Visual Studio Code. ستلاحظ أن كود Visual Studio يتعرف على الخطأ في بناء الجملة. توضع علامة تعريف المعلمة الأولى مع متعرجات حمراء للإشارة إلى خطأ.

لقطة شاشة ل Visual Studio Code مع متعرجات حمراء تبرز خطأ في بناء الجملة في ملف Bicep.

الخطوط التي وضع عليها خط هي:

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

عند تمرير الماوس فوق هذه الخطوط parameter، تظهر رسالة خطأ.

لقطة شاشة لرسالة خطأ مفصلة معروضة في Visual Studio Code عند التمرير فوق خطأ في بناء الجملة في ملف Bicep.

تنص رسالة الخطأ على: لا يُعترف بنوع الإعلان هذا. حدد إعلان معلمة أو متغير أو مورد أو إخراج. إذا حاولت توزيع هذا الملف، فستحصل على نفس رسالة الخطأ من أمر التوزيع.

إذا نظرت في وثائق تعريف المعلمة، فسترى أن الكلمة الأساسيةparam. وعند تغيير بناء الجملة، يختفي خطأ التحقق من الصحة. @allowedتوضع أيضاً علامة على المصمم كعلامة على الخطأ ولكن يتم حل هذا الخطأ أيضا عن طريق تغيير تعريف المعلمة. توضع علامة على المصمم في إشارة إلى وجود خطأ لأنه يتوقع إعلان معلمة بعد المصمم. لم يكن هذا الشرط صحيحا عندما كان الإعلان خاطئ.

الخط الثابت هو:

param storageAccountType string = 'Standard_LRS'

إصلاح خطأ في الاختبار المبدئي

والآن بعد أن أصلحت خطأ التحقق من الصحة، حان الوقت لنشر الملف. ولكن، سوف تدخل قيمة معلمة سيئة لرؤية خطأ الاختبار المبدئي.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=longNamewith!!Charactersthatarenotallowed

تقرر Azure Resource Manager أن اسم حساب التخزين يحتوي على رموز يمنع استخدامها. لا يحاول النشر.

تظهر رسالة خطأ تشير إلى فشل التحقق من صحة الاختبار المبدئي. يمكنك أيضاً الحصول على رسالة تقول أن اسم حساب التخزين يجب أن يكون بين 3 و 24 حرفا في الطول واستخدم الأرقام والحروف الصغيرة فقط. لم تكن البادئة التي قدمتها على مستوى هذا الشرط. لمزيد من المعلومات حول رمز الخطأ هذا، راجع حل أخطاء أسماء حسابات التخزين.

بما أن الخطأ قد تم اكتشافه في الاختبار المبدئي، فلا يوجد نشر مسجل في التاريخ.

لقطة شاشة لقسم محفوظات النشر في مدخل Microsoft Azure لا تظهر أي عمليات نشر لملف Bicep.

ولكن، فشل النشر مسجل في سجل النشاط.

لقطة شاشة لسجل نشاط مدخل Microsoft Azure يعرض خطأ التحقق من الصحة المسبق لتوزيع ملف Bicep.

يمكنك فتح معلومات الدخول على السجل لمشاهدة رسالة الخطأ.

إصلاح خطأ النشر

ستنشر الملف مرة أخرى وتضع قيمة مسموح بها لمعلمة بادئة الاسم.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=stg

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

لاحظ ظهور النشر في التاريخ على المدخل.

لقطة شاشة لقسم محفوظات النشر في مدخل Microsoft Azure تعرض عملية توزيع فاشلة لملف Bicep.

يمكنك فتح الإدخال في تاريخ النشر للاطلاع على تفاصيل الخطأ. الخطأ موجود أيضا في سجل النشاط.

يحاول الملف Bicep الإشارة إلى شبكة ظاهرية غير موجودة في مجموعة مواردك. احذف المرجع إلى شبكة الاتصال الظاهرية الموجودة لإصلاح الخطأ.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountName string = storageAccountName

يمكنك نشر ملف Bicep هذا دون أي أخطاء.

تنظيف الموارد

عندما لا يكون هناك حاجة لموارد Azure، احذف مجموعة الموارد. يمكنك حذف مجموعة الموارد من Cloud Shell أو البوابة.

az group delete --name troubleshootRG

لحذف مجموعة الموارد من المدخل، اتبع الخطوات التالية:

  1. في مربع البحث أعلى Azure portal أدخل Resource group.
  2. ادخل اسم مجموعتك في حقلالتصفية حسب الاسم.
  3. حدد اسم مجموعة الموارد.
  4. حدد Delete resource group.
  5. لتأكيد الحذف، أدخل اسم مجموعة الموارد وحدد "Delete" .

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

من خلال هذا التشغيل السريع، تعلمت كيفية استكشاف أخطاء نشر ملف Bicep وإصلاح هذه الأخطاء.