نسخ تطبيق Azure App Service باستخدام PowerShell

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

مع إصدار Microsoft Azure PowerShell الإصدار 1.1.0، تمت إضافة خيار جديد إلى New-AzWebApp يتيح لك نسخ تطبيق خدمة التطبيقات الحالي إلى تطبيق تم إنشاؤه حديثاً في منطقة مختلفة أو في نفس المنطقة. يتيح هذا الخيار للعملاء توزيع عدد من التطبيقات عبر مناطق مختلفة بسرعة وسهولة.

يتم دعم نسخ التطبيقات لخطط خدمة التطبيقات Standard وPremium وPremium V2 وIsolated. تستخدم الميزة الجديدة نفس القيود التي تستخدمها ميزة App Service Backup، راجع نسخ تطبيق احتياطياً في Azure App Service.

نسخ تطبيق موجود

السيناريو: تطبيق موجود في منطقة جنوب وسط الولايات المتحدة، وتريد نسخ المحتويات إلى تطبيق جديد في منطقة شمال وسط الولايات المتحدة. يمكن تحقيق ذلك باستخدام إصدار Azure Resource Manager من PowerShell cmdlet لإنشاء تطبيق جديد باستخدام الخيار -SourceWebApp.

بمعرفة اسم مجموعة الموارد التي تحتوي على التطبيق المصدر، يمكنك استخدام أمر PowerShell التالي للحصول على معلومات التطبيق المصدر (في هذه الحالة باسم source-webapp):

$srcapp = Get-AzWebApp -ResourceGroupName SourceAzureResourceGroup -Name source-webapp

لإنشاء خطة خدمة تطبيق جديدة، يمكنك استخدام الأمر New-AzAppServicePlan كما في المثال التالي

New-AzAppServicePlan -Location "North Central US" -ResourceGroupName DestinationAzureResourceGroup -Name DestinationAppServicePlan -Tier Standard

باستخدام الأمر New-AzWebApp، يمكنك إنشاء التطبيق الجديد في منطقة شمال وسط الولايات المتحدة، وربطه بخطة خدمة التطبيق الحالية. علاوة على ذلك، يمكنك استخدام نفس مجموعة الموارد مثل التطبيق المصدر، أو تحديد مجموعة موارد جديدة، كما هو موضح في الأمر التالي:

$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "North Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp

لنسخ تطبيق موجود بما في ذلك جميع فتحات التوزيع المرتبطة، تحتاج إلى استخدام المعلمة IncludeSourceWebAppSlots. لاحظ أن المعلمة IncludeSourceWebAppSlots مدعومة فقط لنسخ تطبيق كامل بما في ذلك جميع فتحاته. يوضح أمر PowerShell التالي استخدام هذه المعلمة مع الأمر New-AzWebApp:

$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "North Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp -IncludeSourceWebAppSlots

لنسخ تطبيق موجود داخل نفس المنطقة، تحتاج إلى إنشاء مجموعة موارد جديدة وخطة خدمة تطبيق جديدة في نفس المنطقة، ثم استخدام أمر PowerShell التالي لنسخ التطبيق:

$destapp = New-AzWebApp -ResourceGroupName NewAzureResourceGroup -Name dest-webapp -Location "South Central US" -AppServicePlan NewAppServicePlan -SourceWebApp $srcapp

نسخ تطبيق موجود في App Service Environment

السيناريو: تطبيق موجود في منطقة جنوب وسط الولايات المتحدة، وتريد نسخ المحتويات إلى تطبيق جديد إلى App Service Environment الحالية (ASE).

بمعرفة اسم مجموعة الموارد التي تحتوي على التطبيق المصدر، يمكنك استخدام أمر PowerShell التالي للحصول على معلومات التطبيق المصدر (في هذه الحالة باسم source-webapp):

$srcapp = Get-AzWebApp -ResourceGroupName SourceAzureResourceGroup -Name source-webapp

بمعرفة اسم ASE، واسم مجموعة الموارد التي تنتمي إليها ASE، يمكنك إنشاء التطبيق الجديد في ASE الحالي، كما هو موضح في الأمر التالي:

$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "North Central US" -AppServicePlan DestinationAppServicePlan -ASEName DestinationASE -ASEResourceGroupName DestinationASEResourceGroupName -SourceWebApp $srcapp

المعلمة Location مطلوبة لسبب قديم، ولكن يتم تجاهلها عند إنشاء التطبيق في ASE.

نسخ تطبيق Slot موجود

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

بمعرفة اسم مجموعة الموارد التي تحتوي على التطبيق المصدر، يمكنك استخدام أمر PowerShell التالي للحصول على معلومات فتحة التطبيق المصدر (المسماة في هذه الحالة source-appslot) مرتبطة بـ source-app:

$srcappslot = Get-AzWebAppSlot -ResourceGroupName SourceAzureResourceGroup -Name source-app -Slot source-appslot

يوضح الأمر التالي إنشاء نسخة من التطبيق المصدر إلى تطبيق جديد:

$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-app -Location "North Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcappslot

تكوين Traffic Manager أثناء نسخ التطبيق

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

إنشاء ملف تعريف Traffic Manager الجديد أثناء نسخ أحد التطبيقات

السيناريو: تريد نسخ تطبيق إلى منطقة أخرى، أثناء تكوين ملف تعريف إدارة مرور Azure Resource Manager الذي يتضمن كلا التطبيقين. يوضح الأمر التالي إنشاء نسخة من التطبيق المصدر إلى تطبيق جديد أثناء تكوين ملف تعريف Traffic Manager الجديد:

$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "South Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp -TrafficManagerProfileName newTrafficManagerProfile

إضافة تطبيق مستنسخ جديد إلى ملف تعريف Traffic Manager الحالي

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

$TMProfileID = "/subscriptions/<Your subscription ID goes here>/resourceGroups/<Your resource group name goes here>/providers/Microsoft.TrafficManagerProfiles/ExistingTrafficManagerProfileName"

بعد الحصول على معرف مدير نسبة استخدام الشبكة، يوضح الأمر التالي إنشاء نسخة من التطبيق المصدر إلى تطبيق جديد أثناء إضافتها إلى ملف تعريف Traffic Manager الحالي:

$destapp = New-AzWebApp -ResourceGroupName <Resource group name> -Name dest-webapp -Location "South Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp -TrafficManagerProfileId $TMProfileID

إشعار

إذا كنت تتلقى خطأ ينص على "فشل التحقق من SSL على اسم مضيف مدير نسبة استخدام الشبكة"، فنحن نقترح عليك استخدام السمة -IgnoreCustomHostNames في الأمر powershell أثناء إجراء عملية النسخ أو استخدام المدخل.

القيود الحالية

فيما يلي القيود المعروفة لنسخ التطبيق:

  • لا يتم نسخ إعدادات المقياس التلقائي
  • لا يتم نسخ إعدادات جدول النسخ الاحتياطي
  • لا يتم نسخ إعدادات VNET
  • لا يتم إعداد App Insights تلقائياً في التطبيق الوجهة
  • لا يتم نسخ إعدادات المصادقة السهلة
  • لم يتم نسخ ملحق Kudu
  • لا يتم نسخ قواعد TiP
  • لم يتم نسخ محتوى قاعدة البيانات
  • تتغير عناوين IP الصادرة في حال النسخ إلى وحدة قياس مختلفة
  • غير متاح لتطبيقات Linux
  • لا يتم نسخ الهويات المدارة
  • غير متاح لتطبيقات الوظائف

المراجع