Přidání runbooků Azure Automation do plánů obnovení
Tento článek popisuje, jak integrovat runbooky Azure Automation za účelem rozšíření plánů obnovení Azure Site Recovery . Ukážeme vám, jak automatizovat základní úlohy, které by jinak vyžadovaly ruční zásah, a jak z vícekrokového obnovení udělat akci na jedno kliknutí.
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í vám pomůžou 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 runbooků Azure Automation. Typické příklady můžou 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í.
- Přečtěte si další informace o runboocích Azure Automation.
Runbooky v plánech obnovení
Do plánu obnovení přidáte účet Azure Automation a runbooky. Runbook se vyvolá při spuštění plánu obnovení.
- Účet Automation může být v libovolné oblasti Azure a musí být ve stejném předplatném jako trezor Site Recovery.
- 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í běží sériově, jeden po druhém, v nastaveném pořadí.
- Pokud runbooky v plánu obnovení konfigurují virtuální počítače tak, aby se spouštěly v různých skupinách, plán obnovení bude pokračovat jenom v případě, že Azure hlásí všechny virtuální počítače jako spuštěné.
- Plány obnovení se budou dál spouštět, i když skript selže.
Kontext plánu obnovení
Když se skript spustí, vloží do runbooku kontext plánu obnovení. Kontext obsahuje proměnné shrnuté v tabulce.
Název proměnné | Popis |
---|---|
RecoveryPlanName | Název plánu obnovení Používá se v akcích založených na 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í. |
ID skupiny | Identifikuje číslo skupiny v plánu obnovení, když je plán spuštěný. |
Mapa virtuálního počítače | Pole všechvirtuálních |
Klíč mapy virtuálního počítače | 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 CloudServiceName | 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 |
RecoveryPointId | Časové razítko pro obnovení virtuálního počítače. |
Poznámka:
Hodnota proměnné FailoverDirection bude v případě převzetí služeb při selhání a SecondaryToPrimary v případě navrácení služeb po obnovení primární.
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 získat přístup ke všem virtuálním počítačům ve smyčce VMMap, můžete použít následující kód:
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 blog over at Chytá clouds má užitečný příklad kontextového skriptu plánu obnovení.
Než začnete
Pokud s Azure Automation začínáte, můžete si zaregistrovat a stáhnout ukázkové skripty. Další informace najdete v tématu Runbooky služby Automation – známé problémy a omezení.
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í, vyberte +Plán obnovení. Další informace. Pokud už máte plán obnovení, vyberte ho a otevřete ho.
Na stránce plánu obnovení vyberte Přizpůsobit.
Vyberte tři tečky (...) vedle skupiny 1: Spustit>akci přidat příspěvek.
V akci Vložit ověřte, že je vybraný skript , a zadejte název skriptu (Hello World).
Zadejte účet Automation a vyberte runbook. Pokud chcete skript uložit, vyberte 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 runbooku v několika plánech obnovení.
- Proměnné Azure Automation slouží k ukládání parametrů pro spuštění plánu obnovení.
- Přidáním názvu plánu obnovení jako předpony proměnné můžete pro každý plán obnovení vytvořit jednotlivé proměnné. Pak proměnné použijte jako parametry.
- Parametr můžete změnit beze změny skriptu, ale přesto 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 ho 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.RecoveryPlanName }
Poznamenejte si název skupiny zabezpečení sítě a skupinu prostředků. Tyto proměnné použijete jako vstupy pro skripty plánu obnovení.
V prostředcích účtu Automation. vytvořte proměnnou pro uložení názvu skupiny zabezpečení sítě. Přidejte předponu k názvu proměnné s názvem plánu obnovení.
Vytvořte proměnnou pro uložení názvu skupiny prostředků pro prostředek NSG. Přidejte předponu k názvu proměnné s názvem plánu obnovení.
Ve skriptu použijte tento referenční kód k získání hodnot proměnných:
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
Pomocí proměnných v runbooku použijte skupinu zabezpečení sítě na síťové rozhraní virtuálního počítače s převzetím služeb při 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í.
Použití komplexní 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řadil veřejnou IP adresu na konkrétních virtuálních počítačích. V jiném scénáři můžete chtít použít různé skupiny zabezpečení sítě na různých virtuálních počítačích (ne na všech virtuálních počítačích). Poznámky:
- Můžete vytvořit skript, který je opakovaně použitelný pro jakýkoli plán obnovení.
- Každý plán obnovení může mít proměnlivý počet virtuálních počítačů.
- Obnovení SharePointu má například dva front-endy. 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 účtu Azure Automation.
Provedeme to zadáním více hodnot pomocí Azure PowerShellu.
V PowerShellu se přihlaste ke svému předplatnému Azure:
Connect-AzureRmAccount $sub = Get-AzureRmSubscription -Name <SubscriptionName> $sub | Select-AzureRmSubscription
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
V této složité proměnné je VMDetails ID virtuálního počítače chráněného virtuálního počítače. Id virtuálního počítače získáte tak, že na webu Azure Portal zobrazíte vlastnosti 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čích:
Tuto proměnnou použijte v runbooku. Pokud se v kontextu plánu obnovení najde uvedený identifikátor GUID virtuálního počítače, použijte na virtuálním počítači skupinu zabezpečení sítě:
$VMDetailsObj = (Get-AutomationVariable -Name $RecoveryPlanContext.RecoveryPlanName).ToObject([hashtable])
V runbooku projděte virtuální počítače kontextu plánu obnovení. Zkontrolujte, jestli virtuální počítač existuje v $VMDetailsObj. Pokud existuje, přejděte k vlastnostem proměnné a použijte skupinu zabezpečení sítě:
$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í v různých proměnných.
Ukázkové skripty
Pokud chcete do svého účtu Automation nasadit ukázkové skripty, vyberte tlačítko Nasadit do Azure .
Další kroky
- Další informace:
- Přezkoumání: