البرنامج التعليمي: إنشاء مواصفات قالب باستخدام القوالب المرتبطة

تعرف على كيفية إنشاء مواصفات نموذج باستخدام نموذج رئيسي ونموذج مرتبط. يمكنك استخدام مواصفات النموذج لمشاركة قوالب ARM مع مستخدمين آخرين في مؤسستك. توضح لك هذه المقالة كيفية إنشاء مواصفات قالب لحزم قالب رئيسي وقوالبه المرتبطة باستخدام relativePath خاصية مورد التوزيع.

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

حساب Azure باشتراك نشط. إنشاء حساب مجاناً.

ملاحظة

لاستخدام مواصفات القالب مع Azure PowerShell، يجب عليك تثبيت الإصدار 5.0.0 أو أحدث. لاستخدامه مع Azure CLI، استخدم الإصدار 2.14.2 أو إصدار أحدث.

إنشاء قوالب مرتبطة

قم بإنشاء القالب الرئيسي والقالب المرتبط.

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

يسمى القالب المرتبط linkedTemplate.json، ويتم تخزينه في مجلد فرعي يسمى artifacts في المسار حيث يتم تخزين القالب الرئيسي. يمكنك استخدام إحدى القيم التالية للمسار النسبي:

  • ./artifacts/linkedTemplate.json
  • /artifacts/linkedTemplate.json
  • artifacts/linkedTemplate.json

تكون الخاصية relativePath دائماً مرتبطة بملف القالب حيث تم التصريح عن relativePath، لذلك إذا كان هناك رابط آخر تم استدعاؤه من linkedTemplate2.json وlinkedTemplate2.json يتم تخزينه في نفس المجلد الفرعي artifacts، يتم تخزين المسار النسبي المحدد في linkTemplate.json فقط linkedTemplate2.json.

  1. أنشئ القالب الرئيسي باستخدام JSON التالي. احفظ القالب الرئيسي باسم azuredeploy.json على جهاز الكمبيوتر المحلي لديك. يفترض هذا البرنامج التعليمي أنك قمت بحفظ المسار c: \ Templates \ linkedTS \ azuredeploy.json ولكن يمكنك استخدام أي مسار.

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "location": {
          "type": "string",
          "defaultValue": "westus2",
          "metadata":{
            "description": "Specify the location for the resources."
          }
        },
        "storageAccountType": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "metadata":{
            "description": "Specify the storage account type."
          }
        }
      },
      "variables": {
        "appServicePlanName": "[format('plan{0}', uniquestring(resourceGroup().id))]"
      },
      "resources": [
        {
          "type": "Microsoft.Web/serverfarms",
          "apiVersion": "2022-09-01",
          "name": "[variables('appServicePlanName')]",
          "location": "[parameters('location')]",
          "sku": {
            "name": "B1",
            "tier": "Basic",
            "size": "B1",
            "family": "B",
            "capacity": 1
          },
          "kind": "linux",
          "properties": {
            "perSiteScaling": false,
            "reserved": true,
            "targetWorkerCount": 0,
            "targetWorkerSizeId": 0
          }
        },
        {
          "type": "Microsoft.Resources/deployments",
          "apiVersion": "2022-09-01",
          "name": "createStorage",
          "properties": {
            "mode": "Incremental",
            "templateLink": {
              "relativePath": "artifacts/linkedTemplate.json"
            },
            "parameters": {
              "storageAccountType": {
                "value": "[parameters('storageAccountType')]"
              }
            }
          }
        }
      ]
    }
    

    ملاحظة

    يجب أن تكون نسخة apiVersion لـ Microsoft.Resources/deployments 2020-06-01 أو أحدث.

  2. قم بإنشاء دليل يسمى البيانات الاصطناعية في المجلد حيث تم حفظ القالب الرئيسي.

  3. أنشئ القالب المرتبط باستخدام JSON التالي:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageAccountType": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "allowedValues": [
            "Standard_LRS",
            "Standard_GRS",
            "Standard_ZRS",
            "Premium_LRS"
          ],
          "metadata": {
            "description": "Storage Account type"
          }
        },
        "location": {
          "type": "string",
          "defaultValue": "[resourceGroup().location]",
          "metadata": {
            "description": "Location for all resources."
          }
        }
      },
      "variables": {
        "storageAccountName": "[format('store{0}', uniquestring(resourceGroup().id))]"
      },
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2022-09-01",
          "name": "[variables('storageAccountName')]",
          "location": "[parameters('location')]",
          "sku": {
            "name": "[parameters('storageAccountType')]"
          },
          "kind": "StorageV2",
          "properties": {}
        }
      ],
      "outputs": {
        "storageAccountName": {
          "type": "string",
          "value": "[variables('storageAccountName')]"
        }
      }
    }
    
  4. احفظ النموذج باسم linkedTemplate.json في المجلد artifacts.

إنشاء مواصفات القالب

يتم تخزين مواصفات القوالب في مجموعات الموارد. قم بإنشاء مجموعة موارد، ثم قم بإنشاء مواصفات قالب باستخدام البرنامج النصي التالي. اسم مواصفات النموذج هو webSpec.

New-AzResourceGroup `
  -Name templateSpecRG `
  -Location westus2

New-AzTemplateSpec `
  -Name webSpec `
  -Version "1.0.0.0" `
  -ResourceGroupName templateSpecRG `
  -Location westus2 `
  -TemplateFile "c:\Templates\linkedTS\azuredeploy.json"

عند الانتهاء، يمكنك عرض مواصفات القالب من مدخل Microsoft Azure أو باستخدام الأمر cmdlet التالي:

Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec

مواصفات قالب التوزيع

يمكنك الآن توزيع مواصفات القالب. يشبه توزيع مواصفات القالب تماماً توزيع القالب الذي يحتوي عليه، باستثناء أنك تقوم بتمرير معرف المورد لمواصفات القالب. يمكنك استخدام نفس أوامر التوزيع، وإذا لزم الأمر، فقم بتمرير قيم المعلمات لمواصفات القالب.

New-AzResourceGroup `
  -Name webRG `
  -Location westus2

$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name webSpec -Version "1.0.0.0").Versions.Id

New-AzResourceGroupDeployment `
  -TemplateSpecId $id `
  -ResourceGroupName webRG

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

لمعرفة المزيد عن توزيع مواصفات قالب كقالب مرتبط، راجع البرنامج التعليمي: توزيع مواصفات القالب كقالب مرتبط.