Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 využít při havárii místních počítačů nebo virtuálních počítačů Azure. Recovery plans help you to define a systematic recovery process that defines how machines fail over, and how they start and recover after failover.
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. Typical examples might be configuring settings on an Azure VM after failover, or reconfiguring an app that's running on the VM.
- Přečtěte si další informace o plánech obnovení.
- Přečtěte si další informace o runboocích Azure Automation.
Runbooks in recovery plans
You add an Azure Automation account and runbooks to a recovery plan. The runbook is invoked when the recovery plan runs.
- Účet Automation může být v libovolné oblasti Azure a musí být ve stejném předplatném jako trezor Site Recovery.
- A runbook can run in a recovery plan during failover from a primary location to secondary, or during failback from the secondary location to the primary.
- Runbooks in a recovery plan run serially, one after another, in the set order.
- 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.
| Variable name | Description |
|---|---|
| Název Plánu Obnovy | Název plánu obnovení Used in actions based on the name. |
| FailoverType | Specifies whether it's a test or production failover. |
| FailoverDirection | Specifies whether recovery is to a primary or secondary location. |
| ID skupiny | Identifies the group number in the recovery plan when the plan is running. |
| VmMap | An array of all VMs in the group. |
| Klíč VMMap | Jedinečný klíč (GUID) pro každý virtuální počítač. |
| Identifikace předplatného | 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 virtuálního počítače Azure |
| RecoveryPointId | Časové razítko pro obnovení virtuálního počítače. |
Poznámka:
The value for variable 'FailoverDirection' will be 'PrimaryToSecondary' in case of failover and 'SecondaryToPrimary' in case of failback.
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's blog over at Harvesting Clouds has a useful example of a recovery plan context script.
Než začnete
Pokud s Azure Automation začínáte, můžete si zaregistrovat a stáhnout ukázkové skripty. For more information, see Automation runbooks - known issues and limitations.
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 sejfu 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.
Select the ellipses (...) next to Group 1: Start>Add post action.
Ve vložení akce ověřte, že je vybrán skript, a zadejte název skriptu (Hello World).
Specify an automation account and select a runbook. Pokud chcete skript uložit, vyberte OK. The script is added to Group 1: Post-steps.
Opakované použití skriptu runbooku
Pomocí externích proměnných můžete použít jeden skript runbooku v několika plánech obnovení.
- Používáte proměnné Azure Automation 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.
Use a simple string variable in a runbook script
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 }Note the NSG name and resource group. Tyto proměnné použijete jako vstupy pro skripty plánu obnovení.
In the Automation account assets. create a variable to store the NSG name. Přidejte předponu k názvu proměnné s názvem plánu obnovení.
Create a variable to store the resource group name for the NSG resource. 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 $NSGRGValueUse the variables in the runbook to apply the NSG to the network interface of the failed-over 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 } }
Pro každý plán obnovení vytvořte nezávislé proměnné, abyste mohli skript znovu použít. Add a prefix by using the recovery plan name.
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-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 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. If the indicated VM GUID is found in the recovery plan context, apply the NSG on the VM:
$VMDetailsObj = (Get-AzAutomationVariable -Name $RecoveryPlanContext.RecoveryPlanName).ToObject([hashtable])In your runbook, loop through the VMs of the recovery plan context. Zkontrolujte, jestli virtuální počítač existuje v $VMDetailsObj. Pokud existuje, přejděte k vlastnostem proměnné a aplikujte 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í 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:
- Recenze