البرنامج التعليمي: نشر قالب ARM محلي

التعرف على كيفية نشر قالب إدارة موارد Azure (قالب ARM) من الجهاز المحلي. تستغرق هذه الخطوة حوالي 8 دقائق لإكمالها.

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

الحصول على الأدوات

لنبدأ بالتأكد من أن لديك الأدوات التي تحتاجها لنشر القوالب.

نشر سطر الأوامر

تحتاج إلى Azure PowerShell أو Azure CLI لتوزيع القالب. للحصول على إرشادات التثبيت، راجع:

بعد تثبيت إما Azure PowerShell أو Azure CLI، تأكد من تسجيل الدخول للمرة الأولى. للحصول على مساعدة، راجع تسجيل الدخول - PowerShell أو تسجيل الدخول - Azure CLI.

محرر (اختياري)

القوالب هي ملفات JSON. لمراجعة/ تحرير القوالب، تحتاج إلى محرر JSON جيد. نوصي باستخدام Visual Studio مع ملحق Resource Manager Tools. إذا كنت بحاجة إلى تثبيت هذه الأدوات، راجع التشغيل السريع: إنشاء قوالب ARM باستخدام Visual Studio Code.

راجع القالب

يقوم القالب بنشر حساب تخزين وخطة خدمة تطبيق وتطبيق ويب. إذا كنت مهتماً بإنشاء القالب، فيمكنك الانتقال عبر البرنامج التعليمي عن قوالب Quickstart. ومع ذلك فإنه ليس مطلوباً لاستكمال هذا البرنامج التعليمي.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "projectName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11,
      "metadata": {
        "description": "Specify a project name that is used to generate resource names."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specify a location for the resources."
      }
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ],
      "metadata": {
        "description": "Specify the storage account type."
      }
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "Specify the Runtime stack of current web app"
      }
    }
  },
  "variables": {
    "storageAccountName": "[format('{0}{1}', parameters('projectName'), uniqueString(resourceGroup().id))]",
    "webAppName": "[format('{0}WebApp', parameters('projectName'))]",
    "appServicePlanName": "[format('{0}Plan', parameters('projectName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2023-01-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "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.Web/sites",
      "apiVersion": "2022-09-01",
      "name": "[variables('webAppName')]",
      "location": "[parameters('location')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
      ]
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').primaryEndpoints]"
    }
  }
}

هام

يجب أن تكون أسماء حسابات التخزين فريدة، ويتراوح طولها بين 3 و24 حرفاً، وأن تستخدم أرقاماً وأحرفاً إنجليزية صغيرة فقط. يجمع متغير النموذج storageAccountName بين 11 حرفاً كحد أقصى للمعلمة projectName وقيمة uniqueString من 13 حرفاً.

احفظ نسخة من القالب إلى الكمبيوتر المحلي مع ملحق .json، على سبيل المثال، azuredeploy.json. نشر هذا القالب لاحقاً في البرنامج التعليمي.

تسجيل الدخول إلى Azure

لبدء العمل مع Azure PowerShell/Azure CLI لنشر قالب، قم بتسجيل الدخول باستخدام بيانات اعتماد Azure.

Connect-AzAccount

إذا كان لديك العديد من اشتراكات Azure، فحدد الاشتراك الذي تريد استخدامه. استبدال [SubscriptionID/SubscriptionName] والأقواس المربعة[] بمعلومات الاشتراك الخاص بك:

Set-AzContext [SubscriptionID/SubscriptionName]

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

عندما تقوم بنشر أحد القوالب، فإنك تحدد مجموعة موارد تحتوي على الموارد. قبل تشغيل أمر النشر، أنشئ مجموعة الموارد باستخدام Azure CLI أو Azure PowerShell. حدد علامات التبويب في مقاطع التعليمات البرمجية التالية للاختيار بين Azure PowerShell وAzure CLI. تمت كتابة أمثلة CLI في هذه المقالة لـ Bash shell.

$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource and resource group names"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroup `
  -Name $resourceGroupName `
  -Location "Central US"

نشر القالب

استخدم أحد خيارات النشر أو كليهما لنشر القالب.

$projectName = Read-Host -Prompt "Enter the same project name"
$templateFile = Read-Host -Prompt "Enter the template file path and file name"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroupDeployment `
  -Name DeployLocalTemplate `
  -ResourceGroupName $resourceGroupName `
  -TemplateFile $templateFile `
  -projectName $projectName `
  -verbose

لمعرفة المزيد حول نشر القالب باستخدام Azure PowerShell، راجع نشر الموارد باستخدام قوالب ARM وAzure PowerShell.

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

قم بتنظيف الموارد التي قمت بنشرها عن طريق حذف مجموعة الموارد.

  1. من مدخل Azure، حدد مجموعة الموارد من القائمة اليمنى.
  2. أدخل اسم مجموعة الموارد في الحقل Filter by name.
  3. حدد اسم مجموعة الموارد.
  4. حدد Delete resource group من القائمة.

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

تعلمت كيفية توزيع قالب مرتبط. في البرنامج التعليمي التالي، يمكنك فصل القالب إلى قالب رئيسي وقالب مرتبط، وتعلم كيفية تخزين وتأمين القالب المرتبط.