Azure Automation-runbookok hozzáadása helyreállítási tervekhez

Ez a cikk bemutatja, hogyan integrálhatók az Azure Automation-runbookok az Azure Site Recovery helyreállítási terveinek kiterjesztése érdekében. Megmutatjuk, hogyan automatizálhatja az olyan alapszintű feladatokat, amelyekhez egyébként manuális beavatkozásra lenne szükség, és hogyan konvertálhat egy többlépéses helyreállítást egyetlen kattintással végrehajtható műveletté.

Helyreállítási tervek

Helyreállítási terveket használhat helyszíni gépek vagy Azure-beli virtuális gépek feladatátvételekor. A helyreállítási tervek segítenek meghatározni egy szisztematikus helyreállítási folyamatot, amely meghatározza a gépek feladatátvételi módját, valamint a feladatátvétel utáni indítást és helyreállítást.

A nagy alkalmazások helyreállítása összetett lehet. A helyreállítási tervek segítenek sorrendet szabni, hogy a helyreállítás következetesen pontos, megismételhető és automatizált legyen. A helyreállítási tervben lévő feladatokat szkriptekkel és Azure Automation-runbookokkal is automatizálhatja. Tipikus példa lehet például egy Azure-beli virtuális gép beállításainak konfigurálása a feladatátvétel után, vagy egy, a virtuális gépen futó alkalmazás újrakonfigurálása.

  • További információ a helyreállítási tervekről.
  • További információ az Azure Automation-runbookokról.

Runbookok helyreállítási tervekben

Azure Automation-fiókot és runbookokat adhat hozzá egy helyreállítási tervhez. A rendszer meghívja a runbookot a helyreállítási terv futtatásakor.

  • Az Automation-fiók bármely Azure-régióban lehet, és ugyanabban az előfizetésben kell lennie, mint a Site Recovery-tároló.
  • A runbookok futtathatók helyreállítási tervben az elsődleges helyről a másodlagos helyre történő feladatátvétel során, vagy a másodlagos helyről az elsődleges helyre történő feladat-visszavétel során.
  • A helyreállítási terv runbookjai sorozatosan, egymás után futnak a megadott sorrendben.
  • Ha egy helyreállítási terv runbookjai úgy konfigurálják a virtuális gépeket, hogy különböző csoportokban induljanak el, a helyreállítási terv csak akkor folytatódik, ha az Azure az összes virtuális gépet futtatásként jelenti.
  • A helyreállítási tervek továbbra is futnak, még akkor is, ha egy szkript meghiúsul.

Helyreállítási terv környezete

Amikor egy szkript fut, egy helyreállítási terv környezetét injektálja a runbookba. A környezet a táblázatban összegzett változókat tartalmazza.

Változó neve Leírás
RecoveryPlanName Helyreállítási terv neve. A név alapján végzett műveletekben használatos.
Feladatátvételi típus Megadja, hogy tesztről vagy éles feladatátvételről van-e szó.
Feladatátvételi átirányítás Meghatározza, hogy a helyreállítás elsődleges vagy másodlagos helyre történik-e.
Csoportazonosító A helyreállítási tervben szereplő csoportszámot azonosítja a terv futtatásakor.
Vmmap A csoport összes virtuális gépének tömbje.
VMMap-kulcs Egyedi kulcs (GUID) minden virtuális géphez.
SubscriptionId Az Azure-előfizetés azonosítója, amelyben a virtuális gép létrejött.
ResourceGroupName Annak az erőforráscsoportnak a neve, amelyben a virtuális gép található.
CloudServiceName Az Azure cloud service neve, amely alatt a virtuális gép létrejött.
RoleName Az Azure-beli virtuális gép neve.
RecoveryPointId A virtuális gép helyreállításának időbélyege.

Feljegyzés

Feladatátvétel esetén a "FailoverDirection" változó értéke "PrimaryToSecondary", feladat-visszavétel esetén pedig "SecondaryToPrimary".

Az alábbi példa egy környezeti változót mutat be:

{
    "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"
        }
    }
}

Ha egy ciklusban szeretné elérni a VMMap összes virtuális gépét, a következő kódot használhatja:

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 blogja a Harvesting Cloudsban hasznos példát mutat a helyreállítási terv környezetszkriptjeire.

Előkészületek

  • Ha még nem használja az Azure Automationt, regisztrálhat és letöltheti a mintaszkripteket. További információ: Automation runbookok – ismert problémák és korlátozások.

  • Győződjön meg arról, hogy az Automation-fiók a következő modulokkal rendelkezik:

    • AzureRM.profile
    • AzureRM.Resources
    • AzureRM.Automation
    • AzureRM.Network
    • AzureRM.Compute

    Minden modulnak kompatibilis verziójúnak kell lennie. A legegyszerűbb módszer mindig az összes modul legújabb verzióinak használata.

A helyreállítási terv testreszabása

  1. A tárolóban válassza a Helyreállítási tervek (Site Recovery) lehetőséget

  2. Helyreállítási terv létrehozásához válassza a +Helyreállítási terv lehetőséget. További információ. Ha már rendelkezik helyreállítási tervvel, válassza ki a megnyitásához.

  3. A helyreállítási terv lapon válassza a Testreszabás lehetőséget.

    Select the Customize button

  4. Válassza ki a három pontot (...) az 1. csoport mellett: Bejegyzés hozzáadása művelet indítása>.

  5. A Beszúrás műveletben ellenőrizze, hogy a szkript ki van-e jelölve, és adja meg a szkript nevét ("Helló világ!" alkalmazás).

  6. Adjon meg egy automation-fiókot, és válasszon ki egy runbookot. A szkript mentéséhez válassza az OK gombot. A szkript hozzáadva az 1. csoporthoz: a lépések utáni lépésekhez.

Runbook-szkript újbóli használata

Egy runbook-szkriptet több helyreállítási tervben is használhat külső változók használatával.

  • Azure Automation-változókkal tárolhat paramétereket egy helyreállítási terv futtatásához.
  • Ha a helyreállítási terv nevét előtagként adja hozzá a változóhoz, minden helyreállítási tervhez létrehozhat egyéni változókat. Ezután használja a változókat paraméterekként.
  • A paramétereket a szkript módosítása nélkül is módosíthatja, de továbbra is módosíthatja a szkript működését.

Egyszerű sztringváltozó használata runbook-szkriptben

Ebben a példában egy szkript egy hálózati biztonsági csoport (NSG) bemenetét használja a helyreállítási tervben lévő virtuális gépekre.

  1. Annak érdekében, hogy a szkript észlelhesse, melyik helyreállítási terv fut, használja ezt a helyreállítási terv kontextusát:

    workflow AddPublicIPAndNSG {
        param (
              [parameter(Mandatory=$false)]
              [Object]$RecoveryPlanContext
        )
    
        $RPName = $RecoveryPlanContext.RecoveryPlanName
    }
    
  2. Jegyezze fel az NSG nevét és erőforráscsoportját. Ezeket a változókat használhatja a helyreállítási terv szkriptjeinek bemeneteként.

  3. Az Automation-fiók eszközeiben. hozzon létre egy változót az NSG-név tárolásához. Adjon hozzá egy előtagot a változó nevéhez a helyreállítási terv nevével.

    Create an NSG name variable

  4. Hozzon létre egy változót az NSG-erőforrás erőforráscsoport-nevének tárolásához. Adjon hozzá egy előtagot a változó nevéhez a helyreállítási terv nevével.

    Create an NSG resource group name

  5. A szkriptben használja ezt a referenciakódot a változóértékek lekéréséhez:

    Create an NSG resource group name

  6. A szkriptben használja ezt a referenciakódot a változóértékek lekéréséhez:

    $NSGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSG"
    $NSGRGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSGRG"
    
    $NSGnameVar = Get-AutomationVariable -Name $NSGValue
    $RGnameVar = Get-AutomationVariable -Name $NSGRGValue
    
  7. A runbook változóival alkalmazza az NSG-t a meghibásodott virtuális gép hálózati adapterére:

    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
        }
    }
    

Minden helyreállítási tervhez hozzon létre független változókat, hogy újra felhasználhassa a szkriptet. Adjon hozzá egy előtagot a helyreállítási terv nevével.

Összetett változó használata további információk tárolásához

Bizonyos esetekben előfordulhat, hogy nem tud külön változókat létrehozni az egyes helyreállítási tervekhez. Fontolja meg azt a forgatókönyvet, amelyben azt szeretné, hogy egy szkript nyilvános IP-címet rendeljen hozzá adott virtuális gépekhez. Egy másik forgatókönyvben érdemes lehet különböző NSG-ket alkalmazni a különböző virtuális gépeken (nem minden virtuális gépen). Vegye figyelembe:

  • Létrehozhat egy olyan szkriptet, amely bármely helyreállítási tervhez újra felhasználható.
  • Minden helyreállítási terv változó számú virtuális géppel rendelkezhet.
  • A SharePoint-helyreállításnak például két előtere van. Egy alapszintű üzletági (LOB) alkalmazás csak egy előtérrel rendelkezik.
  • Ebben a forgatókönyvben nem hozhat létre külön változókat az egyes helyreállítási tervekhez.

Az alábbi példában egy összetett változót hozunk létre az Azure Automation-fiókban.

Ezt több érték megadásával tesszük meg az Azure PowerShell használatával.

  1. A PowerShellben jelentkezzen be az Azure-előfizetésbe:

    Connect-AzureRmAccount
    $sub = Get-AzureRmSubscription -Name <SubscriptionName>
    $sub | Select-AzureRmSubscription
    
  2. A paraméterek tárolásához hozza létre az összetett változót a helyreállítási terv nevével:

    $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. Ebben az összetett változóban a VMDetails a védett virtuális gép virtuálisgép-azonosítója. A virtuális gép azonosítójának lekéréséhez az Azure Portalon tekintse meg a virtuális gép tulajdonságait. Az alábbi képernyőképen egy változó látható, amely két virtuális gép adatait tárolja:

    Use the VM ID as the GUID

  4. Használja ezt a változót a runbookban. Ha a megadott virtuálisgép-GUID megtalálható a helyreállítási terv kontextusában, alkalmazza az NSG-t a virtuális gépen:

    $VMDetailsObj = (Get-AutomationVariable -Name $RecoveryPlanContext.RecoveryPlanName).ToObject([hashtable])
    
  5. A runbookban futtassa végig a helyreállítási terv környezetének virtuális gépeit. Ellenőrizze, hogy a virtuális gép létezik-e a $VMDetailsObj. Ha létezik, a változó tulajdonságaihoz férhet hozzá az NSG alkalmazásához:

        $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
            }
        }
    

Ugyanazt a szkriptet használhatja a különböző helyreállítási tervekhez. Adjon meg különböző paramétereket a helyreállítási tervnek megfelelő érték különböző változókban való tárolásával.

Mintaszkriptek

Ha mintaszkripteket szeretne üzembe helyezni az Automation-fiókban, válassza az Üzembe helyezés az Azure-ban gombot.

Deploy to Azure

Következő lépések