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

تعرف على كيفية توزيع مواصفات نموذج موجودة باستخدام توزيع مرتبط. يمكنك استخدام مواصفات النموذج لمشاركة قوالب ARM مع مستخدمين آخرين في مؤسستك. بعد إنشاء مواصفات قالب، يمكنك توزيع مواصفات القالب باستخدام Azure PowerShell أو Azure CLI. يمكنك أيضاً توزيع مواصفات القالب كجزء من الحل الخاص بك باستخدام قالب مرتبط.

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

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

ملاحظة

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

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

اتبع Quickstart: إنشاء وتوزيع مواصفات القالب لإنشاء مواصفات نموذج لتوزيع حساب تخزين. أنت بحاجة إلى اسم مجموعة الموارد لمواصفات النموذج، واسم مواصفات القالب، وإصدار مواصفات القالب في القسم التالي.

إنشاء القالب الرئيسي

لتوزيع مواصفات قالب في قالب ARM، أضف مورد عمليات التوزيع إلى النموذج الرئيسي. في الخاصية templateLink، حدد معرف المورد لمواصفات القالب. أنشئ نموذجاً باستخدام JSON التالي يسمى azuredeploy.json. يفترض هذا البرنامج التعليمي أنك قمت بحفظ المسار c:\Templates\deployTS\azuredeploy.json ولكن يمكنك استخدام أي مسار.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "tsResourceGroup":{
      "type": "string",
      "metadata": {
        "Description": "Specifies the resource group name of the template spec."
      }
    },
    "tsName": {
      "type": "string",
      "metadata": {
        "Description": "Specifies the name of the template spec."
      }
    },
    "tsVersion": {
      "type": "string",
      "defaultValue": "1.0.0.0",
      "metadata": {
        "Description": "Specifies the version the template spec."
      }
    },
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "metadata": {
        "Description": "Specifies the storage account type required by the template spec."
      }
    }
  },
  "variables": {
    "appServicePlanName": "[concat('plan', uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2016-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": "2020-10-01",
      "name": "createStorage",
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "id": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
        },
        "parameters": {
          "storageAccountType": {
            "value": "[parameters('storageAccountType')]"
          }
        }
      }
    }
  ],
  "outputs": {
    "templateSpecId": {
      "type": "string",
      "value": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
    }
  }
}

يتم إنشاء معرّف مواصفات النموذج باستخدام الوظيفة resourceID(). تعتبر وسيطة مجموعة الموارد في دالة ResourceID() اختيارية إذا كان templateSpec في نفس مجموعة الموارد للتوزيع الحالي. يمكنك أيضاً تمرير معرّف المورد مباشرةً كمعامل. للحصول على المعرف، استخدم:

$id = (Get-AzTemplateSpec -ResourceGroupName $resourceGroupName -Name $templateSpecName -Version $templateSpecVersion).Versions.Id

صيغة تمرير المعلمات إلى مواصفات القالب هي:

"parameters": {
  "storageAccountType": {
    "value": "[parameters('storageAccountType')]"
  }
}

ملاحظة

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

نشر القالب

عند توزيع القالب المرتبط، فإنه يوزع كلاً من تطبيق الويب وحساب التخزين. التوزيع هو نفسه توزيع قوالب ARM الأخرى.

New-AzResourceGroup `
  -Name webRG `
  -Location westus2

New-AzResourceGroupDeployment `
  -ResourceGroupName webRG `
  -TemplateFile "c:\Templates\deployTS\azuredeploy.json" `
  -tsResourceGroup templateSpecRg `
  -tsName storageSpec `
  -tsVersion 1.0

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

للتعرف على كيفية إنشاء مواصفات قالب تتضمن قوالب مرتبطة، راجع إنشاء مواصفات قالب لقالب مرتبط.