Přidání runbooků Azure Automation do plánů obnovení

Tento článek popisuje, jak integrovat Azure Automation runbooky a rozšířit tak Azure Site Recovery obnovení. Ukážeme si, jak automatizovat základní úlohy, které by jinak potřebovaly ruční zásah, a jak převést vícekrokové obnovení na akci jedním kliknutím.

Plány obnovení

Plány obnovení můžete použít při převzetí služeb při selhání místních počítačů nebo virtuálních počítačů Azure. Plány obnovení pomáhají definovat systematický proces obnovení, který definuje způsob převzetí služeb při selhání počítačů a způsob jejich spuštění a obnovení po převzetí služeb při selhání.

Obnovení velkých aplikací může být složité. Plány obnovení pomáhají stanovit pořadí, aby bylo obnovení konzistentně přesné, opakovatelné a automatizované. Úlohy v rámci plánu obnovení můžete automatizovat pomocí skriptů a také pomocí Azure Automation runbooků. Typickými příklady může být konfigurace nastavení na virtuálním počítači Azure po převzetí služeb při selhání nebo změna konfigurace aplikace spuštěné na virtuálním počítači.

Runbooky v plánech obnovení

Do plánu obnovení Azure Automation účet úložiště a runbooky. Runbook se vyvolá při spuštění plánu obnovení.

  • Účet Automation může být v jakékoli oblasti Azure a musí být ve stejném předplatném jako Site Recovery azure.
  • Runbook může běžet v plánu obnovení během převzetí služeb při selhání z primárního umístění do sekundárního nebo během navrácení služeb po obnovení ze sekundárního umístění do primárního.
  • Runbooky v plánu obnovení se spouštěly sériově po druhém v nastaveném pořadí.
  • Pokud runbooky v plánu obnovení konfigurují virtuální počítače tak, aby běžely v různých skupinách, plán obnovení bude pokračovat pouze v případě, že Azure hlásí všechny virtuální počítače jako spuštěné.
  • Plány obnovení se budou spouštět i v případě, že skript selže.

Kontext plánu obnovení

Při spuštění skriptu vloží do runbooku kontext plánu obnovení. Kontext obsahuje proměnné shrnuty v tabulce.

Název proměnné Popis
Název plánu obnovení Název plánu obnovení. Používá se v akcích na základě názvu.
Typ převzetí služeb při selhání Určuje, jestli se jedná o testovací nebo produkční převzetí služeb při selhání.
FailoverDirection Určuje, jestli je obnovení do primárního nebo sekundárního umístění.
Groupid Určuje číslo skupiny v plánu obnovení, když je plán spuštěný.
Vmmap Pole všech virtuálních počítače ve skupině.
Klíč VMMap Jedinečný klíč (GUID) pro každý virtuální počítač.
SubscriptionId ID předplatného Azure, ve kterém byl virtuální počítač vytvořen.
ResourceGroupName Název skupiny prostředků, ve které se nachází virtuální počítač.
Název_služby_cloudu Název cloudové služby Azure, pod kterým byl virtuální počítač vytvořen.
RoleName (Název role) Název virtuálního počítače Azure.
ID bodu obnovení Časové razítko pro obnovení virtuálního počítače.

Poznámka

Hodnota proměnné FailoverDirection bude PrimaryToSecondary v případě převzetí služeb při selhání a SecondaryToPrimary v případě navrácení služeb po obnovení.

Následující příklad ukazuje kontextovou proměnnou:

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

Pokud chcete ve smyčce přistupovat ke všem virtuálním počítačům ve Smyčce, můžete použít následující kód:

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

Užitečným příkladem kontextového skriptu plánu obnovení je blog Amana s blogem v oblasti Harvesting Clouds.

Než začnete

  • Pokud s přihlášením Azure Automation, můžete si zaregistrovat a stáhnout ukázkové skripty.

  • Ujistěte se, že účet Automation obsahuje následující moduly:

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

    Všechny moduly by měly mít kompatibilní verze. Nejjednodušším způsobem je vždy používat nejnovější verze všech modulů.

Přizpůsobení plánu obnovení

  1. V trezoru vyberte Plány obnovení (Site Recovery).

  2. Pokud chcete vytvořit plán obnovení, klikněte na + Plán obnovení. Přečtěte si další informace. Pokud už máte plán obnovení, výběrem ho otevřete.

  3. Na stránce plánu obnovení klikněte na Přizpůsobit.

    Klikněte na tlačítko Přizpůsobit.

  4. Klikněte na tři tečky (...) vedle položky Group 1: Start Add post action (Skupina 1: > Zahájit přidání akce post).

  5. V části Vložit akci ověřte, že je vybrán skript, a zadejte název skriptu (Hello World).

  6. Zadejte účet Automation a vyberte runbook. Pokud chcete skript uložit, klikněte na OK. Skript se přidá do skupiny 1: Po krocích.

Opakované použití skriptu runbooku

Pomocí externích proměnných můžete použít jeden skript sady Runbook v několika plánech obnovení.

  • Pomocí Azure Automation proměnných můžete uložit parametry pro spuštění plánu obnovení.
  • Přidáním názvu plánu obnovení jako předpony do proměnné můžete vytvořit jednotlivé proměnné pro každý plán obnovení. Pak použijte proměnné jako parametry.
  • Parametr můžete změnit beze změny skriptu, ale stále můžete změnit způsob, jakým skript funguje.

Použití jednoduché řetězcové proměnné ve skriptu runbooku

V tomto příkladu skript vezme vstup skupiny zabezpečení sítě (NSG) a použije ji na virtuální počítače v plánu obnovení.

  1. Aby skript mohl zjistit, který plán obnovení je spuštěný, použijte tento kontext plánu obnovení:

    workflow AddPublicIPAndNSG {
        param (
              [parameter(Mandatory=$false)]
              [Object]$RecoveryPlanContext
        )
    
        $RPName = $RecoveryPlanContext.RecoveryPlanName
    
  2. Poznamenejte si název skupiny zabezpečení sítě a skupinu prostředků. Tyto proměnné se používají jako vstupy pro skripty plánu obnovení.

  3. V části Prostředky účtu Automation. vytvořte proměnnou pro uložení názvu skupiny NSG. Přidejte k názvu proměnné předponu s názvem plánu obnovení.

    Vytvoření proměnné názvu NSG

  4. Vytvořte proměnnou pro uložení názvu skupiny prostředků pro prostředek NSG. Přidejte k názvu proměnné předponu s názvem plánu obnovení.

    Vytvoření názvu skupiny prostředků NSG

  5. Ve skriptu použijte tento referenční kód k získání hodnot proměnných:

    $NSGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSG"
    $NSGRGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSGRG"
    
    $NSGnameVar = Get-AutomationVariable -Name $NSGValue
    $RGnameVar = Get-AutomationVariable -Name $NSGRGValue
    
  6. Pomocí proměnných v runbooku použijte NSG na síťové rozhraní virtuálního počítače, u nějž došlo k selhání:

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

Pro každý plán obnovení vytvořte nezávislé proměnné, abyste mohli skript znovu použít. Přidejte předponu pomocí názvu plánu obnovení.

Kompletní kompletní skript pro tento scénář najdete v tomto skriptu.

Použití složité proměnné k uložení dalších informací

V některých scénářích možná nebudete moct vytvořit samostatné proměnné pro každý plán obnovení. Představte si scénář, ve kterém chcete, aby jeden skript přiřadl veřejnou IP adresu na konkrétních virtuálních počítači. V jiném scénáři můžete chtít použít různé NSG na různých virtuálních počítači (ne na všech virtuálních počítači). Poznámky:

  • Můžete vytvořit skript, který se bude znovu použít pro libovolný plán obnovení.
  • Každý plán obnovení může mít proměnlivý počet virtuálních počítače.
  • Například obnovení SharePoint dva front-endsy. Základní obchodní aplikace (LOB) má pouze jeden front-end.
  • V tomto scénáři nemůžete vytvořit samostatné proměnné pro každý plán obnovení.

V následujícím příkladu vytvoříme komplexní proměnnou v Azure Automation účtu.

To uděláme tak, že zadáme více hodnot pomocí Azure PowerShell.

  1. V PowerShellu se přihlaste ke svému předplatnému Azure:

    Connect-AzureRmAccount
    $sub = Get-AzureRmSubscription -Name <SubscriptionName>
    $sub | Select-AzureRmSubscription
    
  2. Pokud chcete parametry uložit, vytvořte komplexní proměnnou s použitím názvu plánu obnovení:

    $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. V této složité proměnné je VMDetails ID virtuálního počítače pro chráněný virtuální počítač. Pokud chcete získat ID virtuálního počítače, v Azure Portal zobrazení vlastností virtuálního počítače. Následující snímek obrazovky ukazuje proměnnou, která ukládá podrobnosti o dvou virtuálních počítačech:

    Použití ID virtuálního počítače jako identifikátoru GUID

  4. Tuto proměnnou použijte ve svém runbooku. Pokud se uvedený identifikátor GUID virtuálního počítače nachází v kontextu plánu obnovení, použijte na virtuálním počítači tuto NSG:

    $VMDetailsObj = (Get-AutomationVariable -Name $RecoveryPlanContext.RecoveryPlanName).ToObject([hashtable])
    
  5. Ve vašem runbooku si prohlédněte virtuální počítače kontextu plánu obnovení. Zkontrolujte, jestli virtuální počítač existuje v $VMDetailsObj. Pokud existuje, přistupte k vlastnostem proměnné a použijte tuto 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
            }
        }
    

Stejný skript můžete použít pro různé plány obnovení. Zadejte různé parametry uložením hodnoty, která odpovídá plánu obnovení, do různých proměnných.

Ukázkové skripty

Pokud chcete do svého účtu Automation nasadit ukázkové skripty, klikněte na tlačítko Nasadit do Azure.

Nasazení do Azure

Toto video obsahuje další příklad. Ukazuje, jak obnovit dvouvrstvou aplikaci WordPress do Azure:

Další kroky