استكشاف بنية قالب Azure Resource Manager

مكتمل

في هذه الوحدة، ستتعرف على استخدام قوالب Azure Resource Manager (قوالب ARM) لتنفيذ البنية الأساسية كتعلم برمجي. ستمسح أقسام قالب ARM، وتتعرف على كيفية نشر قالب ARM إلى Azure، وتتعمق في التفاصيل حول قسم الموارد في قالب ARM.

ما هي البنية الأساسية كتعليمة برمجية؟

تسمح لك البنية الأساسية كتعليق برمجي بوصف البنية الأساسية التي تحتاجها لتطبيقك من خلال التعليمات البرمجية.

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

  • تكوينات متناسقة
  • قابلية التحجيم المحسنة
  • عمليات نشر أسرع
  • إمكانية تتبع أفضل

يشرح هذا الفيديو البنية الأساسية كتعلم برمجي:

ما هو قالب ARM؟

قوالب ARM هي ملفات من نوع JavaScript Object Notation (JSON) التي تحدد البنية الأساسية والتكوين الخاص بالنشر. يستخدم القالب بناء جملة تصريحي. بناء الجملة التعريفي هو طريقة لبناء البنية والعناصر التي تحدد ما ستبدو عليه الموارد دون وصف تدفق التحكم. يختلف بناء الجملة التصريحي عن بناء الجملة الإلزامي، الذي يستخدم أوامر للكمبيوتر لتنفيذها. تركز البرمجة النصية الإلزامية على تحديد كل خطوة في نشر الموارد.

تسمح لك قوالب ARM بالتصريح عما تنوي نشره دون الحاجة إلى كتابة تسلسل أوامر البرمجة لإنشائه. في قالب ARM، يمكنك تحديد الموارد والخصائص الخاصة بهذه الموارد. ثم يستخدم Azure Resource Manager هذه المعلومات لنشر الموارد بطريقة منظمة ومتسقة.

فوائد استخدام قوالب ARM

تسمح لك قوالب ARM بأتمتة عمليات النشر واستخدام ممارسة البنية الأساسية كتعليمة برمجية (IaC). تصبح تعليمة برمجية القالب جزءًا من البنية الأساسية ومشاريع التطوير. تمامًا مثل تعليمة برمجية التطبيق، يمكنك تخزين ملفات IaC في مستودع المصدر والإصدار.

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

ينسق Resource Manager نشر الموارد بحيث يتم إنشاؤها بالترتيب الصحيح. عندما يكون ذلك ممكنًا، سيتم أيضًا إنشاء الموارد في نفس الوقت، حتى يتم إنهاء عمليات نشر قالب ARM بشكل أسرع من عمليات النشر النصية.

Diagram showing a mapping of the template processing procedure. There's only one call to process a template as opposed to several calls to process scripts.

لدى Resource Manager أيضًا إمكانية التحقق من الصحة المضمنة. يتحقق من القالب قبل بدء النشر للتأكد من نجاح النشر.

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

في بوابة Azure، يمكنك مراجعة محفوظات النشر الخاصة بك والحصول على معلومات حول حالة النشر. تعرض البوابة قيمًا لكافة المعلمات والمخرجات.

يمكنك أيضًا دمج قوالب ARM الخاصة بك في أدوات التكامل المستمر والنشر المستمر (CI/CD) مثل Azure Pipelines، والتي يمكنها أتمتة البنى الأساسية للإصدار الخاصة بك لتحديثات التطبيقات والبنية الأساسية السريعة والموثوق بها. باستخدام Azure DevOps ومهام قالب ARM، يمكنك إنشاء المشاريع الخاصة بك ونشرها بشكل مستمر.

بنية ملف قالب ARM

عند كتابة قالب ARM، تحتاج إلى فهم جميع الأجزاء التي تشكل القالب وما يفعلونه. تتكون ملفات قالِب ARM من العناصر التالية:

العنصر الوصف
Schema هو مقطع مطلوب يحدد موقع ملف مخطط JSON الذي يصف بنية بيانات JSON. يعتمد رقم الإصدار الذي تستخدمه على نطاق النشر ومحرر JSON.
إصدار المحتوى هو مقطع مطلوب يعرف إصدار القالب (مثل 1.0.0.0). يمكنك استخدام هذه القيمة لتوثيق التغييرات الهامة في القالب الخاص بك للتأكد من نشر القالب الصحيح.
apiProfile مقطع اختياري يعرف مجموعة من إصدارات API لأنواع الموارد. يمكنك استخدام هذه القيمة لتجنب الحاجة إلى تحديد إصدارات API لكل مصدر في القالب.
معلمات مقطع اختياري تُعرَّف فيه القيم التي يتم توفيرها أثناء النشر. يمكن توفير هذه القيم بواسطة ملف معلمة أو بواسطة معلمات سطر الأوامر أو في بوابة Azure.
المتغيرات مقطع اختياري حيث تقوم بتعريف القيم التي تستخدمها لتبسيط تعبيرات لغة القالب.
وظائف مقطع اختياري حيث يمكنك تعريف الدالات المعرَّفة من قبل المستخدم والمتاحة داخل القالب. يمكن للوظائف المحددة من قبل المستخدم تبسيط القالب الخاص بك عند استخدام التعبيرات المعقدة بشكل متكرر في القالب الخاص بك.
الموارد مقطع مطلوب يعرف العناصر الفعلية التي تريد نشرها أو تحديثها في مجموعة موارد أو اشتراك.
الإخراج مقطع اختياري حيث تحدد القيم التي سيتم إرجاعها في نهاية النشر.

نشر قالب ARM إلى Azure

يمكنك نشر قالب ARM إلى Azure بإحدى الطرق التالية:

  • نشر قالب محلي
  • نشر قالب مرتبط
  • التوزيع في مسار توزيع مستمر

تركز هذه الوحدة على نشر قالب ARM محلي. في المستقبل فيما يتعلق بتعلم الوحدات النمطية، سوف تتعلم كيفية نشر بنية أساسية أكثر تعقيدًا وكيفية الاندماج مع Azure Pipelines.

لنشر قالب محلي، يجب أن يكون Azure PowerShell أو CLI Azure مثبتة محليًا.

أولاً، تسجيل الدخول إلى Azure باستخدام Azure CLI أو Azure PowerShell.

az login

بعد ذلك، عرِّف مجموعة الموارد الخاصة بك. يمكنك استخدام مجموعة موارد معرفة مسبقا أو إنشاء مجموعة جديدة باستخدام الأمر التالي. بإمكانك الحصول على قيم الموقع المتوفرة من: az account list-locations (CLI) أو Get-AzLocation (PowerShell). يمكنك تكوين الموقع الافتراضي باستخدام az configure --defaults location=<location>.

az group create \
  --name {name of your resource group} \
  --location "{location}"

لبدء نشر قالب في مجموعة الموارد، استخدم إما الأمر Azure CLI az deployment group the Azure الأمر PowerShell جديد-AzResourceGroupDeployment.

تلميح

الفرق بين az deployment group create و هو أن az group deployment create أمر قديم سيتم إهماله وسيتم استبداله ب az deployment group createaz group deployment create . لذلك، نوصي باستخدام az deployment group create لنشر الموارد ضمن نطاق مجموعة الموارد.

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

لتشغيل أمر النشر هذا، يجب أن يكون لديك أحدث إصدار من CLI Azure.

templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
  --name blanktemplate \
  --resource-group myResourceGroup \
  --template-file $templateFile

استخدم القوالب المرتبطة لنشر الحلول المعقدة. يمكنك تقسيم قالب إلى العديد من القوالب ونشر هذه القوالب من خلال قالب رئيسي. عند نشر القالب الرئيسي، فإنه يؤدي إلى نشر القالب المرتبط. يمكنك تخزين القالب المرتبط وتأمينه باستخدام رمز SAS المميز.

تقوم بينة CI/CD الأساسية بأتمتة إنشاء ونشر مشاريع التطوير، والتي تتضمن مشاريع قالب ARM. البنيتان الأساسيتان الأكثر شيوعًا المستخدمان لنشر قالب هما Azure Pipelines أو GitHub Actions.

يتم تغطية مزيد من المعلومات حول هذين النوعين من النشر في وحدات نمطية أخرى.

إضافة موارد إلى القالب

لإضافة مصدر إلى القالب، ستحتاج إلى معرفة مورّد المصادر وأنواع الموارد الخاصة به. يكون بناء الجملة لهذه المجموعة في شكل {موفر المصدر}/{نوع المصدر}. على سبيل المثال، لإضافة مصدر حساب تخزين إلى القالب الخاص بك، ستحتاج إلى موفر موارد Microsoft.Storage. أحد أنواع هذا الموفر هو storageAccount. لذلك سيتم عرض نوع المصدر الخاص بك كـ Microsoft.Storage/storageAccounts. يمكنك استخدام قائمة موفري الموارد لخدمات Azure للعثور على الموفرين الذين تحتاج إليهم.

بعد أن قمت بتحديد الموفر ونوع المصدر، تحتاج إلى فهم خصائص كل نوع مصدر تريد استخدامه. للحصول على التفاصيل، راجع تحديد الموارد في قوالب Azure Resource Manager. عرض القائمة في العمود الأيمن للبحث عن المصدر. لاحظ أنه يتم فرز الخصائص حسب إصدار API.

Screenshot of a Microsoft documentation page showing the storage account documentation selected.

فيما يلي مثال لبعض الخصائص المدرجة من صفحة "حسابات التخزين":

Screenshot of a Microsoft documentation page showing some of the storage account properties.

بالنسبة لمثال التخزين لدينا، قد يبدو القالب الخاص بك كما يلي:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.1",
  "apiProfile": "",
  "parameters": {},
  "variables": {},
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "learntemplatestorage123",
      "location": "westus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ],
  "outputs": {}
}