برنامج تعليمي: استخدم قوالب Azure Quickstart

قوالب Azure Quickstart عبارة عن مستودع للقوالب التي يساهم بها المجتمع. يمكنك استخدام نماذج القوالب في تطوير قوالبك. في هذا البرنامج التعليمي، يمكنك العثور على تعريف لمورد موقع الويب وإضافته إلى القالب الخاص بك. تستغرق هذه التعليمات 12 دقيقة حتى تكتمل.

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

نوصي بإكمال البرنامج التعليمي عن القوالب المُصدرة، ولكنه ليس مطلوبًا.

يجب أن يكون لديك Visual Studio Code مع ملحق أدوات إدارة الموارد، وإما Azure PowerShell أو واجهة سطر أوامر Azure (CLI). لمزيد من المعلومات، راجع ⁧⁩أدوات القالب⁧⁩.

راجع القالب

في نهاية البرنامج التعليمي السابق، كان لقالبك ملف JSON التالي:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-03-01",
      "name": "[parameters('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
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

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

إضافة قالب

  1. فتح قوالب التشغيل السريع من Azure

  2. حدد المربع الذي يحمل العنوان ⁧⁩Deploy a basic Linux web app⁧⁩. إذا كنت تواجه مشكلة في العثور عليه، فإليك ⁧⁩الرابط المباشر⁧⁩.

  3. حدد ⁧⁩Browse on GitHub⁧⁩.

  4. حدد azuredeploy.json.

  5. راجع القالب. البحث عن Microsoft.Web/sites المورد.

    موقع ويب التشغيل السريع لقالب Resource Manager

مراجعة القالب الحالي

دمج قالب التشغيل السريع مع القالب الموجود:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-03-01",
      "name": "[parameters('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.Web/sites",
      "apiVersion": "2021-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]"
      ],
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

يجب أن يكون اسم تطبيق الويب فريداً عبر Azure. لمنع تكرار الأسماء، يتم تحديث المتغير webAppPortalName من "webAppPortalName": "[concat(parameters('webAppName'), '-webapp')]" إلى "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]".

إضافة فاصلة في نهاية التعريف Microsoft.Web/serverfarms لفصل تعريف المورد عن التعريف Microsoft.Web/sites.

هناك بعض الميزات الهامة التي يجب ملاحظتها في هذا المورد الجديد.

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

الخاصية serverFarmId تستخدم الدالة resourceId. تحصل هذه الدالة على المعرف الفريد لمورد. في هذه الحالة، تحصل على المعرف الفريد لخطة خدمة التطبيق. يرتبط تطبيق الويب بخطة خدمة تطبيق معينة.

نشر القالب

استخدم إما Azure CLI أو Azure PowerShell لنشر القالب.

إذا لم تكن قد أنشأت مجموعة الموارد، فراجع إنشاء مجموعة موارد. يفترض المثال أنك عينت المتغير templateFileإلى المسار إلى ملف القالب، على النحو المُوضح في البرنامج التعليمي الأول.

New-AzResourceGroupDeployment `
  -Name addwebapp `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storagePrefix "store" `
  -storageSKU Standard_LRS `
  -webAppName demoapp

ملاحظة

إذا فشل التوزيع، فاستخدمverbose رمز التبديل للحصول على معلومات حول الموارد التي تقوم بإنشائها. استخدم مفتاح ⁧debug⁩ للحصول على مزيد من المعلومات لتصحيح الأخطاء.

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

إذا كنت تنتقل إلى البرنامج التعليمي التالي، فلن تحتاج إلى حذف مجموعة الموارد.

إذا كنت تتوقف الآن، فقد ترغب في حذف مجموعة الموارد.

  1. من مدخل Azure، حدد ⁧⁩ResourceGroup⁧⁩ من القائمة اليسرى.
  2. اكتب اسم مجموعة الموارد في عامل التصفية لأي حقل....
  3. حدد المربع بجوار myResourceGroup وحدد myResourceGroup أو اسم مجموعة الموارد الذي اخترته.
  4. حدد Delete resource group من القائمة.

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

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