التشغيل السريع: إنشاء ونشر تعريف تطبيق Azure المدار

يوفر هذا التشغيل السريع مقدمة للعمل مع تطبيقات Azure المدارة. يمكنك إنشاء ونشر تعريف تطبيق مدار مخزن في كتالوج الخدمة الخاص بك ومخصصة لأعضاء مؤسستك.

لنشر تطبيق مدار إلى كتالوج الخدمة، يجب تنفيذ المهام التالية:

  • إنشاء قالب Azure Resource Manager (قالب ARM) الذي يحدد الموارد التي يتم نشرها مع التطبيق المدار.
  • تعريف عناصر واجهة المستخدم للمدخل عند نشر التطبيق المدار.
  • إنشاء حزمة .zip تحتوي على ملفات JSON المطلوبة. يحتوي ملف حزمة .zip على حد 120 ميغابايت لتعريف التطبيق المدار بواسطة كتالوج الخدمة.
  • نشر تعريف التطبيق المدار بحيث يكون متوفرا في كتالوج الخدمة.

إذا كان تعريف التطبيق المدار أكثر من 120 ميغابايت أو إذا كنت تريد استخدام حساب التخزين الخاص بك لأسباب تتعلق بتوافق مؤسستك، فانتقل إلى التشغيل السريع: إحضار التخزين الخاص بك لإنشاء تعريف تطبيق مدار من Azure ونشره.

يمكنك استخدام Bicep لتطوير تعريف تطبيق مدار ولكن يجب تحويله إلى قالب ARM JSON قبل أن تتمكن من نشر التعريف في Azure. لمزيد من المعلومات، انتقل إلى التشغيل السريع: استخدم Bicep لإنشاء تعريف تطبيق مدار من Azure ونشره.

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

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

لاستكمال هذا التشغيل السريع، ستحتاج إلى العناصر التالية:

إنشاء قالب ARM

يتضمن كل تعريف تطبيق مدار ملفا يسمى mainTemplate.json. يحدد القالب موارد Azure المراد نشرها ولا يختلف عن قالب ARM العادي.

افتح Visual Studio Code، وأنشئ ملفا يحمل الاسم الحساس لحالة الأحرف mainTemplate.json واحفظه.

إضافة JSON التالي وحفظ الملف. وهو يحدد الموارد لنشر App Service وخطة App Service. يستخدم القالب خطة App Service Basic (B1) التي تحتوي على تكاليف الدفع أولا بأول. لمزيد من المعلومات، راجع Azure App Service على أسعار Linux.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "maxLength": 40,
      "metadata": {
        "description": "App Service plan name."
      }
    },
    "appServiceNamePrefix": {
      "type": "string",
      "maxLength": 47,
      "metadata": {
        "description": "App Service name prefix."
      }
    }
  },
  "variables": {
    "appServicePlanSku": "B1",
    "appServicePlanCapacity": 1,
    "appServiceName": "[format('{0}{1}', parameters('appServiceNamePrefix'), uniqueString(resourceGroup().id))]",
    "linuxFxVersion": "DOTNETCORE|8.0"
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2023-01-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[variables('appServicePlanSku')]",
        "capacity": "[variables('appServicePlanCapacity')]"
      },
      "kind": "linux",
      "properties": {
        "zoneRedundant": false,
        "reserved": true
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2023-01-01",
      "name": "[variables('appServiceName')]",
      "location": "[parameters('location')]",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "httpsOnly": true,
        "redundancyMode": "None",
        "siteConfig": {
          "linuxFxVersion": "[variables('linuxFxVersion')]",
          "minTlsVersion": "1.2",
          "ftpsState": "Disabled"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]"
      ]
    }
  ],
  "outputs": {
    "appServicePlan": {
      "type": "string",
      "value": "[parameters('appServicePlanName')]"
    },
    "appServiceApp": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.Web/sites', variables('appServiceName')), '2023-01-01').defaultHostName]"
    }
  }
}

تحديد تجربة المدخل

بصفتك ناشرا، يمكنك تحديد تجربة المدخل لإنشاء التطبيق المدار. ينشئ ملف createUiDefinition.json واجهة مستخدم المدخل. يمكنك تحديد كيفية توفير المستخدمين الإدخال لكل معلمة باستخدام عناصر التحكم مثل القوائم المنسدلة ومربعات النص.

في هذا المثال، تطالبك واجهة المستخدم بإدخال بادئة اسم App Service واسم خطة App Service. أثناء نشر mainTemplate.json appServiceName تستخدم المتغيرات الدالة uniqueString لإلحاق سلسلة مكونة من 13 حرفا ببادئة الاسم بحيث يكون الاسم فريدا عالميا عبر Azure.

افتح Visual Studio Code، وأنشئ ملفا يحمل الاسم الحساس لحالة الأحرف createUiDefinition.json واحفظه.

أضف التعليمة البرمجية JSON التالية إلى الملف واحفظه.

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {}
    ],
    "steps": [
      {
        "name": "webAppSettings",
        "label": "Web App settings",
        "subLabel": {
          "preValidation": "Configure the web app settings",
          "postValidation": "Completed"
        },
        "elements": [
          {
            "name": "appServicePlanName",
            "type": "Microsoft.Common.TextBox",
            "label": "App Service plan name",
            "placeholder": "App Service plan name",
            "defaultValue": "",
            "toolTip": "Use alphanumeric characters or hyphens with a maximum of 40 characters.",
            "constraints": {
              "required": true,
              "regex": "^[a-z0-9A-Z-]{1,40}$",
              "validationMessage": "Only alphanumeric characters or hyphens are allowed, with a maximum of 40 characters."
            },
            "visible": true
          },
          {
            "name": "appServiceName",
            "type": "Microsoft.Common.TextBox",
            "label": "App Service name prefix",
            "placeholder": "App Service name prefix",
            "defaultValue": "",
            "toolTip": "Use alphanumeric characters or hyphens with minimum of 2 characters and maximum of 47 characters.",
            "constraints": {
              "required": true,
              "regex": "^[a-z0-9A-Z-]{2,47}$",
              "validationMessage": "Only alphanumeric characters or hyphens are allowed, with a minimum of 2 characters and maximum of 47 characters."
            },
            "visible": true
          }
        ]
      }
    ],
    "outputs": {
      "location": "[location()]",
      "appServicePlanName": "[steps('webAppSettings').appServicePlanName]",
      "appServiceNamePrefix": "[steps('webAppSettings').appServiceName]"
    }
  }
}

لمعرفة المزيد، راجع بدء استخدام CreateUiDefinition.

حزم الملفات

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

قم بتحميل app.zip إلى حساب تخزين Azure حتى تتمكن من استخدامه عند نشر تعريف التطبيق المدار. يجب أن يكون اسم حساب التخزين فريدا عموميا عبر Azure ويجب أن يكون الطول من 3 إلى 24 حرفا بأحرف صغيرة وأرقام فقط. في الأمر ، استبدل العنصر النائب <pkgstorageaccountname> بما في ذلك أقواس الزاوية (<>)، باسم حساب التخزين الفريد الخاص بك.

في Visual Studio Code، افتح محطة PowerShell طرفية جديدة وسجل الدخول إلى اشتراك Azure الخاص بك.

Connect-AzAccount

يفتح الأمر المستعرض الافتراضي ويطالبك بتسجيل الدخول إلى Azure. لمزيد من المعلومات، انتقل إلى تسجيل الدخول باستخدام Azure PowerShell.

New-AzResourceGroup -Name packageStorageGroup -Location westus

$pkgstorageparms = @{
  ResourceGroupName = "packageStorageGroup"
  Name = "<pkgstorageaccountname>"
  Location = "westus"
  SkuName = "Standard_LRS"
  Kind = "StorageV2"
  MinimumTlsVersion = "TLS1_2"
  AllowBlobPublicAccess = $true
  AllowSharedKeyAccess = $false
}

$pkgstorageaccount = New-AzStorageAccount @pkgstorageparms

$pkgstorageparms يستخدم المتغير تجميل PowerShell لتحسين قابلية القراءة لقيم المعلمات المستخدمة في الأمر لإنشاء حساب التخزين الجديد. يتم استخدام Splatting في أوامر PowerShell الأخرى التي تستخدم قيم معلمات متعددة.

بعد إنشاء حساب التخزين، أضف تعيين الدور Storage Blob Data Contributor إلى نطاق حساب التخزين. تعيين الوصول إلى حساب مستخدم Microsoft Entra الخاص بك. اعتمادا على مستوى الوصول في Azure، قد تحتاج إلى أذونات أخرى يعينها المسؤول. لمزيد من المعلومات، راجع تعيين دور Azure للوصول إلى بيانات الكائن الثنائي كبير الحجم وتعيين أدوار Azure باستخدام مدخل Microsoft Azure.

بعد إضافة الدور إلى حساب التخزين، يستغرق الأمر بضع دقائق لتصبح نشطا في Azure. يمكنك بعد ذلك إنشاء السياق المطلوب لإنشاء الحاوية وتحميل الملف.

$pkgstoragecontext = New-AzStorageContext -StorageAccountName $pkgstorageaccount.StorageAccountName -UseConnectedAccount

New-AzStorageContainer -Name appcontainer -Context $pkgstoragecontext -Permission blob

$blobparms = @{
  File = "app.zip"
  Container = "appcontainer"
  Blob = "app.zip"
  Context = $pkgstoragecontext
}

Set-AzStorageBlobContent @blobparms

إنشاء تعريف تطبيق مدار.

في هذا القسم، يمكنك الحصول على معلومات الهوية من معرف Microsoft Entra، وإنشاء مجموعة موارد، ونشر تعريف التطبيق المدار.

الحصول على معرف المجموعة ومعرف تعريف الدور

الخطوة التالية هي تحديد مستخدم أو مجموعة أمان أو تطبيق لإدارة الموارد للعميل. هذه الهوية لديها أذونات على مجموعة الموارد المدارة وفقا للدور المعين. يمكن أن يكون الدور أي دور مدمج في Azure كالمالك أو المساهم.

يستخدم هذا المثال مجموعة أمان، ويجب أن يكون حساب Microsoft Entra الخاص بك عضوا في المجموعة. للحصول على معرف عنصر المجموعة، استبدل العنصر النائب <managedAppDemo> بما في ذلك أقواس الزاوية (<>)، باسم مجموعتك. يمكنك استخدام قيمة هذا المتغير عند نشر تعريف التطبيق المدار.

لإنشاء مجموعة Microsoft Entra جديدة، انتقل إلى إدارة مجموعات Microsoft Entra وعضوية المجموعة.

$principalid=(Get-AzADGroup -DisplayName <managedAppDemo>).Id

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

$roleid=(Get-AzRoleDefinition -Name Owner).Id

نشر تعريف التطبيق المدار

إنشاء مجموعة موارد لتعريف التطبيق المدار.

New-AzResourceGroup -Name appDefinitionGroup -Location westus

blob ينشئ الأمر متغيرا لتخزين عنوان URL لملف .zip الحزمة. يتم استخدام هذا المتغير في الأمر الذي ينشئ تعريف التطبيق المدار.

$blob = Get-AzStorageBlob -Container appcontainer -Blob app.zip -Context $pkgstoragecontext

$publishparms = @{
  Name = "sampleManagedApplication"
  Location = "westus"
  ResourceGroupName = "appDefinitionGroup"
  LockLevel = "ReadOnly"
  DisplayName = "Sample managed application"
  Description = "Sample managed application that deploys web resources"
  Authorization = "${principalid}:$roleid"
  PackageFileUri = $blob.ICloudBlob.StorageUri.PrimaryUri.AbsoluteUri
}

New-AzManagedApplicationDefinition @publishparms

عند الانتهاء من الأمر، يكون لديك تعريف تطبيق مدار في مجموعة مواردك.

بعض المعلمات المستخدمة في المثال السابق هي:

  • ResourceGroupName: اسم مجموعة الموارد حيث يتم إنشاء تعريف التطبيق المدار.
  • LockLevellockLevel: في مجموعة الموارد المدارة يمنع العميل من تنفيذ عمليات غير مرغوب فيها على مجموعة الموارد هذه. يُمثل ReadOnly حاليا مستوى القفل المدعوم. ReadOnly يحدد أن العميل يمكنه قراءة الموارد الموجودة في مجموعة الموارد المدارة فقط. يتم إعفاء هويات الناشر التي تم منحها حق الوصول إلى مجموعة الموارد المدارة من مستوى التأمين.
  • Authorization: يصف المعرف الأساسي ومعرف تعريف الدور المستخدم لمنح الإذن لمجموعة الموارد المدارة.
    • "${principalid}:$roleid" أو يمكنك استخدام أقواس متعرجة لكل متغير "${principalid}:${roleid}".
    • استخدم فاصلة لفصل قيم متعددة: "${principalid1}:$roleid1", "${principalid2}:$roleid2".
  • PackageFileUri: موقع ملف حزمة .zip يحتوي على الملفات المطلوبة.

تأكد من رؤية المستخدمين لتعريفك

لديك حق الوصول إلى تعريف التطبيق المدار، ولكن عليك التأكد من أن وصول المستخدمين الآخرين في مؤسستك إليه. امنحهم على الأقل دور القارئ في التعريف. ربما ورثوا هذا المستوى من الوصول من الاشتراك أو مجموعة الموارد. للتحقق من من لديه حق الوصول إلى التعريف وإضافة مستخدمين أو مجموعات، راجع تعيين أدوار Azure باستخدام مدخل Microsoft Azure.

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

إذا كنت تريد نشر التعريف، فتابع مع قسم الخطوات التالية الذي يرتبط بالمقالة لنشر التعريف.

إذا انتهيت من تعريف التطبيق المدار، يمكنك حذف مجموعات الموارد التي أنشأتها باسم packageStorageGroup وappDefinitionGroup.

يطالبك الأمر بتأكيد رغبتك في إزالة مجموعة الموارد.

Remove-AzResourceGroup -Name packageStorageGroup

Remove-AzResourceGroup -Name appDefinitionGroup

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

لقد نشرت تعريف التطبيق المدار. الخطوة التالية هي معرفة كيفية نشر مثيل لهذا التعريف.