إضافة مصنفات Azure Automation إلى خطط الاسترداد

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

خطط الاسترداد

يمكنك استخدام خطط الاسترداد عند تجاوز الفشل عبر الأجهزة المحلية أو Azure VMs. تساعدك خطط الاسترداد على تحديد عملية الاسترداد المنهجية التي تحدد كيفية تجاوز فشل الآلات، وكيف تبدأ وتتعافى بعد تجاوز الفشل.

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

دفاتر التشغيل في خطط الاسترداد

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

  • يمكن أن يكون حساب التشغيل التلقائي في أي منطقة Azure، ويجب أن يكون في نفس الاشتراك مثل مخزن استرداد الموقع.
  • يمكن تشغيل كتيب التشغيل في خطة الاستعادة أثناء تجاوز الفشل من موقع رئيسي إلى ثانوي، أو أثناء إعادة الفشل من الموقع الثانوي إلى الرئيسي.
  • يتم تشغيل الدفاتر في خطة الاسترداد بشكل تسلسلي، واحدًا تلو الآخر، بالترتيب المحدد.
  • إذا قامت الدفاتر في خطة الاستعادة بتكوين نظام VMS للبدء في مجموعات مختلفة، فستستمر خطة الاسترداد فقط عندما يبلغ Azure عن تشغيل جميع نظام VMS.
  • تستمر خطط الاسترداد في العمل، حتى لو فشل السيناريو.

سياق خطة الاسترداد

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

اسم المتغير الوصف
RecoveryPlanName اسم خطة الاسترداد. تُستخدم في الإجراءات القائمة على الاسم.
نوع تجاوز الفشل يحدد ما إذا كان اختبارًا أو تجاوز فشل في الإنتاج.
اتجاه تجاوز الفشل يحدد ما إذا كان الاستعادة إلى موقع رئيسي أو ثانوي.
GroupID يحدد رقم المجموعة في خطة الاسترداد عند تشغيل الخطة.
VmMap مجموعة من جميع VMS في المجموعة.
مفتاح VMMap مفتاح فريد (GUID) لكل VM.
SubscriptionId. معرف اشتراك Azure الذي تم فيه إنشاء VM.
ResourceGroupName اسم مجموعة الموارد التي يوجد فيها VM.
CloudServiceName اسم الخدمة السحابية Azure الذي تم إنشاء VM بموجبه.
اسم الدور اسم Azure VM.
RecoveryPointId الطابع الزمني لاسترداد VM.

إشعار

ستكون قيمة المتغير "FailoverDirection" هي "PrimaryToSecondary" في حالة تجاوز الفشل و"SecondaryToPrimary" في حالة إعادة الفشل.

يوضح المثال التالي متغير سياق:

{
    "RecoveryPlanName": "hrweb-recovery",
    "FailoverType": "Test",
    "FailoverDirection": "PrimaryToSecondary",
    "GroupId": "1",
    "VmMap": {
        "7a1069c6-c1d6-49c5-8c5d-33bfce8dd183": {
            "SubscriptionId": "7a1111111-c1d6-49c5-8c5d-111ce8dd183",
            "ResourceGroupName": "ContosoRG",
            "CloudServiceName": "pod02hrweb-Chicago-test",
            "RoleName": "Fabrikam-Hrweb-frontend-test",
            "RecoveryPointId": "TimeStamp"
        }
    }
}

إذا كنت ترغب في الوصول إلى جميع أجهزة VMs في VMMap في حلقة، فيمكنك استخدام الرمز التالي:

param (
    [parameter(Mandatory=$false)]
    [Object]$RecoveryPlanContext
)

$VMinfo = $RecoveryPlanContext.VmMap | Get-Member | Where-Object MemberType -EQ NoteProperty | select -ExpandProperty Name
$vmMap = $RecoveryPlanContext.VmMap
    foreach($VMID in $VMinfo)
    {
        $VM = $vmMap.$VMID                
            if( !(($VM -eq $Null) -Or ($VM.ResourceGroupName -eq $Null) -Or ($VM.RoleName -eq $Null))) {
            #this check is to ensure that we skip when some data is not available else it will fail
    Write-output "Resource group name ", $VM.ResourceGroupName
    Write-output "Rolename " = $VM.RoleName
            }
        }

تحتوي مدونة Aman Sharma في Harvesting Clouds على مثال مفيد على برنامج نصي لسياق خطة الاسترداد.

قبل أن تبدأ

تخصيص خطة الاسترداد

  1. في الخزنة، حدد خطط الاسترداد (استعادة الموقع)

  2. لإنشاء خطة استرداد، حدد +Recovery Plan. اعرف المزيد. إذا كانت لديك خطة استعادة بالفعل، فحدد لفتحها.

  3. في صفحة خطة الاسترداد، حدد تخصيص.

    Select the Customize button

  4. حدد علامات الحذف (...) بجوار المجموعة 1: بدء>إجراء إضافة منشور.

  5. في الإجراء إدراج، تحقق من تحديد البرنامج النصي، وحدد اسماً للبرنامج النصي (مرحبًا بالعالم).

  6. حدد حساب التشغيل التلقائي وحدد دفتر تشغيل. لحفظ البرنامج النصي، حدد موافق. تتم إضافة البرنامج النصي إلى المجموعة 1: الخطوات اللاحقة.

إعادة استخدام البرنامج النصي لدفتر التشغيل

يمكنك استخدام برنامج نصي واحد لدليل التشغيل في خطط استرداد متعددة، باستخدام متغيرات خارجية.

  • يمكنك استخدام متغيرات Azure Automationلتخزين المعلمات لتشغيل خطة الاستعادة.
  • بإضافة اسم خطة الاسترداد كبادئة للمتغير، يمكنك إنشاء متغيرات فردية لكل خطة استرداد. ثم استخدم المتغيرات كمعلمات.
  • يمكنك تغيير معلمة دون تغيير البرنامج النصي، ولكن مع الاستمرار في تغيير طريقة عمل البرنامج النصي.

استخدم متغير سلسلة بسيط في برنامج نصي قيد التشغيل

في هذا المثال، يأخذ البرنامج النصي مدخلات مجموعة أمان الشبكة (NSG) ويطبقها على نظام VMS في خطة الاسترداد.

  1. حتى يتمكن البرنامج النصي من اكتشاف خطة الاسترداد التي يتم تشغيلها، استخدم سياق خطة الاسترداد هذه:

    workflow AddPublicIPAndNSG {
        param (
              [parameter(Mandatory=$false)]
              [Object]$RecoveryPlanContext
        )
    
        $RPName = $RecoveryPlanContext.RecoveryPlanName
    }
    
  2. لاحظ اسم NSG ومجموعة الموارد. يمكنك استخدام هذه المتغيرات كمدخلات لنصوص خطة الاستعادة.

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

    Create an NSG name variable

  4. إنشاء متغير لتخزين اسم مجموعة الموارد لمورد NSG. أضف بادئة إلى اسم المتغير باسم خطة الاسترداد.

    Create an NSG resource group name

  5. في البرنامج النصي، استخدم هذا الرمز المرجعي للحصول على القيم المتغيرة:

    Create an NSG resource group name

  6. في البرنامج النصي، استخدم هذا الرمز المرجعي للحصول على القيم المتغيرة:

    $NSGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSG"
    $NSGRGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSGRG"
    
    $NSGnameVar = Get-AutomationVariable -Name $NSGValue
    $RGnameVar = Get-AutomationVariable -Name $NSGRGValue
    
  7. استخدم المتغيرات الموجودة في دليل التشغيل لتطبيق NSG على واجهة الشبكة الخاصة بـVM الفاشلة:

    InlineScript {
    if (($Using:NSGname -ne $Null) -And ($Using:NSGRGname -ne $Null)) {
            $NSG = Get-AzureRmNetworkSecurityGroup -Name $Using:NSGname -ResourceGroupName $Using:NSGRGname
            Write-output $NSG.Id
            #Apply the NSG to a network interface
            #$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName TestRG -Name TestVNet
            #Set-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name FrontEnd `
            #  -AddressPrefix 192.168.1.0/24 -NetworkSecurityGroup $NSG
        }
    }
    

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

استخدام متغير معقد لتخزين المزيد من المعلومات

في بعض السيناريوهات، قد لا تتمكن من إنشاء متغيرات منفصلة لكل خطة استرداد. ضع في اعتبارك سيناريو تريد فيه نصًا واحدًا لتعيين عنوان IP عام على VMS محدد. في سيناريو آخر، قد ترغب في تطبيق NSGs مختلفة على VMS مختلفة (وليس على جميع VMS). لاحظ ما يلي:

  • يمكنك إنشاء برنامج نصي يمكن إعادة استخدامه لأي خطة استرداد.
  • يمكن أن تحتوي كل خطة استرداد على عدد متغير من أجهزة VMS.
  • على سبيل المثال، يحتوي استرداد SharePoint على نهايتين أماميتين. يحتوي تطبيق خط العمل الأساسي (LOB) على واجهة أمامية واحدة فقط.
  • في هذا السيناريو، لا يمكنك إنشاء متغيرات منفصلة لكل خطة استرداد.

في المثال التالي، نقوم بإنشاء متغير معقد في حساب Azure Automation.

نقوم بذلك عن طريق تحديد قيم متعددة، باستخدام Azure PowerShell.

  1. في PowerShell، قم بتسجيل الدخول إلى اشتراك Azure:

    Connect-AzureRmAccount
    $sub = Get-AzureRmSubscription -Name <SubscriptionName>
    $sub | Select-AzureRmSubscription
    
  2. لتخزين المعلمات، قم بإنشاء المتغير المعقد باستخدام اسم خطة الاسترداد:

    $VMDetails = @{"VMGUID"=@{"ResourceGroupName"="RGNameOfNSG";"NSGName"="NameOfNSG"};"VMGUID2"=@{"ResourceGroupName"="RGNameOfNSG";"NSGName"="NameOfNSG"}}
        New-AzureRmAutomationVariable -ResourceGroupName <RG of Automation Account> -AutomationAccountName <AA Name> -Name <RecoveryPlanName> -Value $VMDetails -Encrypted $false
    
  3. في هذا المتغير المعقد، VMDetails هو معرف VM للجهاز الظاهري المحمي. للحصول على معرف VM، في مدخل Microsoft Azure، اعرض خصائص VM. تعرض لقطة الشاشة التالية متغيرًا يخزن تفاصيل نظامي VMS:

    Use the VM ID as the GUID

  4. استخدم هذا المتغير في دفتر التشغيل خاصتك. إذا تم العثور على VM GUID المشار إليه في سياق خطة الاسترداد، فقم بتطبيق NSG على VM:

    $VMDetailsObj = (Get-AutomationVariable -Name $RecoveryPlanContext.RecoveryPlanName).ToObject([hashtable])
    
  5. في دفتر التشغيل خاصتك، قم بتكرار عبر VMs لسياق خطة الاسترداد. تحقق مما إذا كان VM موجودًا في $VMDetailsObj . إذا كان موجودًا، قم بالوصول إلى خصائص المتغير لتطبيق NSG:

        $VMinfo = $RecoveryPlanContext.VmMap | Get-Member | Where-Object MemberType -EQ NoteProperty | select -ExpandProperty Name
        $vmMap = $RecoveryPlanContext.VmMap
    
        foreach ($VMID in $VMinfo) {
            $VMDetails = $VMDetailsObj[$VMID].ToObject([hashtable]);
            Write-output $VMDetails
            if ($VMDetails -ne $Null) { #If the VM exists in the context, this will not be Null
                $VM = $vmMap.$VMID
                # Access the properties of the variable
                $NSGname = $VMDetails.NSGName
                $NSGRGname = $VMDetails.NSGResourceGroupName
    
                # Add code to apply the NSG properties to the VM
            }
        }
    

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

نماذج البرامج النصية

لنشر نماذج البرامج النصية إلى حساب Automation الخاص بك، حدد الزر Deploy to Azure .

Deploy to Azure

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