إعلان بالربط عن المورد في قوالب ARM

لتوزيع مورد من خلال قالب Azure Resource Manager (قالب ARM)، يمكنك إضافة إعلان بالربط عن مورد. استخدم الصفيف resources في قالب JSON.

يقوم languageVersion 2.0 بعمل قائمة بالتحسينات على قوالب ARM JSON، مثل تغيير إعلان الموارد من صفيف إلى كائن. لا تزال معظم العينات الموضحة في هذه المقالة تستخدم resources الصفيف. للحصول على معلومات محددة حول languageVersion 2.0، راجع استخدام اسم رمزي.

إشعار

لا يتعرف الإصدار الحالي من ملحق Azure Resource Manager Tools ل Visual Studio Code على التحسينات التي تم إجراؤها في languageVersion 2.0.

تلميح

نوصي باستخدام Bicep لأنها تقدم نفس الإمكانات التي توفرها نماذج ARM ولأن البنية أسهل في الاستخدام. لمعرفة المزيد، راجع إعلان بالربط الخاص بالمورد.

أنت مقيد ب 800 مورد في قالب. لمزيد من المعلومات، راجع حدود القالب.

ضبط نوع المورد وإصداره

عند إضافة مورد إلى القالب، ابدأ بإعداد نوع المورد وإصدار واجهة برمجة التطبيقات. تحدد هذه القيم الخصائص الأخرى المتوفرة للمورد.

يوضح المثال التالي كيفية ضبط نوع المورد وإصدار واجهة برمجة التطبيقات لحساب تخزين. لا يعرض المثال الإعلان بالربط عن المورد بالكامل.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-06-01",
    ...
  }
]

ضبط اسم المورد

لكل مورد اسم. عند تعيين اسم المورد، انتبه إلى القواعد والقيود الخاصة بأسماء الموارد.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  }
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-06-01",
    "name": "[parameters('storageAccountName')]",
    ...
  }
]

تعيين الموقع

تتطلب العديد من الموارد اختيار موقعًا. يمكنك تحديد مدى حاجة المورد إلى موقع إما من خلال intellisense أو مرجع القالب. يضيف المثال التالي معلمة الموقع المستخدمة لحساب التخزين.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  },
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-06-01",
    "name": "[parameters('storageAccountName')]",
    "location": "[parameters('location')]",
    ...
  }
]

للحصول على مزيدٍ من المعلومات، راجع ضبط موقع المورد في قالب ARM.

تعيين العلامات

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

ضبط خصائص خاصة بالموارد

تُعمم الخصائص السابقة على معظم أنواع الموارد. بعد تعيين هذه القيم، تحتاج إلى تعيين الخصائص الخاصة بنوع المورد الذي تقوم بتوزيعه.

استخدم intellisense أو مرجع القالب لتحديد الخصائص المتوفرة والخصائص المطلوبة. يحدد المثال التالي الخصائص المتبقية لحساب تخزين.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "kind": "StorageV2",
      "properties": {
        "accessTier": "Hot"
      }
    }
  ]
}

استخدام اسم رمزي

في Bicep، يحتوي كل تعريف مورد على اسم رمزي. يتم استخدام الاسم الرمزي للإشارة إلى المورد من الأجزاء الأخرى من ملف Bicep. لدعم الاسم الرمزي في قوالب ARM JSON، أضف languageVersion مع الإصدار 2.0، وغير تعريف المورد من صفيف إلى كائن. عند languageVersion تحديد قالب، يجب تحديد اسم رمزي لموارد مستوى الجذر. على سبيل المثال:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.ContainerService/managedClusters",
      ...
    }
  ]
}

يمكن كتابة JSON السابق في JSON التالي:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "resources": {
    "aks": {
      "type": "Microsoft.ContainerService/managedClusters",
      ...
    }
  }
}

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

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": {
    "myStorage": {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": {}
    }
  },
  "outputs": {
    "myStorage":{
      "type": "object",
      "value": "[reference('myStorage')]"
    }
  }
}

يمكن للدالة المرجعية استخدام الاسم الرمزي للمورد، كما هو موضح في المثال السابق. لم يعد بإمكان الدالة المرجعية استخدام اسم مورد، على سبيل المثال، reference(parameters('storageAccountName')) غير مسموح به.

إذا تم استخدام مورد عمليات النشر في نشر اسم رمزي، فاستخدم apiVersion 2020-09-01 أو أحدث.

الإعلان عن الموارد الموجودة

باستخدام languageVersion 2.0 الاسم الرمزي لإعلان المورد واستخدامه، يمكنك الإعلان عن الموارد الموجودة. تتسبب خاصية مورد المستوى الأعلى في "existing": true قراءة ARM بدلا من نشر مورد كما هو موضح في المثال التالي:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "languageVersion": "2.0",

  "resources": {
    "storageAccount": {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "storageacct",
      "existing": true
    }
  },
  "outputs": {
    "saBlocksPlaintext": {
      "type": "bool",
      "value": "[ reference('storageAccount').supportsHttpsTrafficOnly]"
    }
  }
}

لا تحتاج الموارد الموجودة إلى تعريف أي خصائص أخرى غير typeو apiVersionو.name

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