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.
- Přečtěte si další informace o plánech obnovení.
- Další informace o Azure Automation runbookech.
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í
V trezoru vyberte Plány obnovení (Site Recovery).
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.
Na stránce plánu obnovení klikněte na Přizpůsobit.

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).
V části Vložit akci ověřte, že je vybrán skript, a zadejte název skriptu (Hello World).
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í.
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.RecoveryPlanNamePoznamenejte 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í.
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ř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í.

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 $NSGRGValuePomocí 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.
V PowerShellu se přihlaste ke svému předplatnému Azure:
Connect-AzureRmAccount $sub = Get-AzureRmSubscription -Name <SubscriptionName> $sub | Select-AzureRmSubscriptionPokud 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 $falseV 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:

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])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.
Toto video obsahuje další příklad. Ukazuje, jak obnovit dvouvrstvou aplikaci WordPress do Azure:
Další kroky
- Informace o účtu Azure Automation Spustit jako
- Pro Azure Automation si ukázkové skripty.
- Přečtěte si další informace o spouštění převzetí služeb při selhání.
