Hinzufügen von Azure Automation-Runbooks zu Wiederherstellungsplänen
In diesem Artikel wird beschrieben, wie Sie Azure Automation-Runbooks integrieren, um Wiederherstellungspläne für Azure Site Recovery zu erweitern. Wir zeigen Ihnen, wie Sie einfache Tasks automatisieren, für die zuvor ein manueller Eingriff erforderlich war, und eine aus mehreren Schritten bestehende Wiederherstellung in eine Aktion konvertieren, die sich mit nur einem Klick durchführen lässt.
Wiederherstellungspläne
Sie können Wiederherstellungspläne verwenden, wenn Sie ein Failover für lokale Computer oder Azure-VMs durchführen. Mithilfe von Wiederherstellungsplänen können Sie einen systematischen Wiederherstellungsprozess definieren, der vorgibt, wie Computer Failover durchführen und nach einem Failover gestartet und wiederhergestellt werden.
Die Wiederherstellung großer Apps kann komplex sein. Darüber hinaus tragen Wiederherstellungspläne zu einem geregelten Prozess bei, sodass die Wiederherstellung immer exakt, wiederholbar und automatisiert ist. Sie können Tasks innerhalb eines Wiederherstellungsplans mithilfe von Skripts und Azure Automation-Runbooks automatisieren. Typische Beispiele sind u. a. das Konfigurieren von Einstellungen auf einer Azure-VM nach einem Failover oder das Neukonfigurieren einer App, die auf der VM ausgeführt wird.
- hier .
- Erfahren Sie mehr zu Azure Automation-Runbooks.
Runbooks in Wiederherstellungsplänen
Sie können einem Wiederherstellungsplan ein Azure Automation-Konto und Runbooks hinzufügen. Das Runbook wird aufgerufen, wenn der Wiederherstellungsplan ausgeführt wird.
- Ein Automation-Konto kann sich in einer beliebigen Azure-Region befinden, aber es muss unter demselben Abonnement wie der Site Recovery-Tresor laufen.
- Ein Runbook kann während eines Failovers von einem primären auf einen sekundären Standort oder beim Failback vom sekundären auf den primären Standort in einem Wiederherstellungsplan ausgeführt werden.
- Runbooks in einem Wiederherstellungsplan werden nacheinander in einer festgelegten Reihenfolge ausgeführt.
- Wenn Runbooks in einem Wiederherstellungsplan VMs so konfigurieren, dass sie in unterschiedlichen Gruppen gestartet werden, wird der Wiederherstellungsplan nur fortgesetzt, wenn Azure meldet, dass alle VMs ausgeführt werden.
- Auch wenn ein Skript fehlschlägt, werden die Wiederherstellungspläne weiter ausgeführt.
Kontext für Wiederherstellungspläne
Wenn ein Skript ausgeführt wird, wird ein Kontext für den Wiederherstellungsplan zum Runbook hinzugefügt. Der Kontext enthält die Variablen, die in der folgenden Tabelle zusammengefasst sind.
Variablenname | Beschreibung |
---|---|
RecoveryPlanName | Name des Wiederherstellungsplans. Wird in Aktionen verwendet, die auf dem Namen basieren. |
FailoverType | Gibt an, ob es sich um ein Test- oder Produktionsfailover handelt. |
FailoverDirection | Gibt an, ob die Wiederherstellung auf einem primären oder sekundären Standort durchgeführt wird. |
GroupID | Identifiziert die Gruppennummer innerhalb des Wiederherstellungsplans, wenn der Plan ausgeführt wird. |
VmMap | Ein Array mit allen VMs der Gruppe. |
VMMap-Schlüssel | Ein eindeutiger Schlüssel (GUID) für jeden virtuellen Computer. |
SubscriptionId | Die ID des Azure-Abonnements, unter dem die VM erstellt wurde. |
ResourceGroupName | Name der Ressourcengruppe, in der sich die VM befindet. |
CloudServiceName | Der Name des Azure-Clouddiensts, unter dem die VM erstellt wurde. |
RoleName | Der Name der Azure-VM. |
RecoveryPointId | Der Zeitstempel für die Wiederherstellung der VM. |
Hinweis
Der Wert der Variable „FailoverDirection“ ist „PrimaryToSecondary“ bei einem Failover und „SecondaryToPrimary“ bei einem Failback.
Im folgenden Beispiel wird eine Kontextvariable angezeigt:
{
"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"
}
}
}
Wenn Sie auf alle VMs in VMMap in einer Schleife zugreifen möchten, können Sie den folgenden Code verwenden:
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
}
}
In Aman Sharmas Blog auf Harvesting Clouds finden Sie ein nützliches Beispiel für ein Kontextskript für einen Wiederherstellungsplan.
Vorbereitung
Wenn Sie mit Azure Automation noch nicht vertraut sind, können Sie sich registrieren und Beispielskripts herunterladen. Weitere Informationen finden Sie unter Automation-Runbooks – bekannte Probleme und Einschränkungen.
Stellen Sie sicher, dass das Automation-Konto über die folgenden Module verfügt:
- AzureRM.profile
- AzureRM.Resources
- AzureRM.Automation
- AzureRM.Network
- AzureRM.Compute
Alle Module sollten auf kompatiblen Versionen basieren. Am einfachsten ist es, immer die neuste Version aller Module zu verwenden.
Anpassen des Wiederherstellungsplans
Wählen Sie im Tresor Recovery Plans (Site Recovery) (Wiederherstellungspläne (Site Recovery)) aus.
Wenn Sie einen Wiederherstellungsplan erstellen möchten, wählen Sie +Wiederherstellungsplan aus. Weitere Informationen Wenn Sie bereits über einen Wiederherstellungsplan verfügen, öffnen Sie diesen.
Wählen Sie auf der Seite „Wiederherstellungsplan“ die Option Anpassen aus.
Wählen Sie die Auslassungspunkte (...) neben Gruppe 1: Start>Nachfolgende Aktion hinzufügen aus.
Überprüfen Sie unter Aktion einfügen, ob die Option Skript ausgewählt ist, und geben Sie einen Namen für das Skript an (Hallo Welt).
Geben Sie ein Automation-Konto an, und wählen Sie ein Runbook aus. Wählen Sie OK aus, um das Skript zu speichern. Das Skript wird Gruppe 1: Schritte danach hinzugefügt.
Wiederverwenden eines Runbookskripts
Sie können ein einzelnes Runbookskript in mehreren Wiederherstellungsplänen nutzen, indem Sie externe Variablen verwenden.
- Sie können Azure Automation-Variablen zum Speichern von Parametern für die Ausführung eines Wiederherstellungsplans verwenden.
- Indem Sie der Variablen den Namen des Wiederherstellungsplans als Präfix hinzufügen, können Sie für jeden Wiederherstellungsplan einzelne Variablen erstellen. Verwenden Sie die Variablen anschließend als Parameter.
- Sie können einen Parameter ändern, ohne das Skript zu ändern, und für die Funktionsweise des Skripts trotzdem eine Änderung erzielen.
Verwenden einer einfachen Zeichenfolgenvariablen in einem Runbookskript
In diesem Beispiel wendet ein Skript die Eingabe einer Netzwerksicherheitsgruppe (NSG) auf die VMs eines Wiederherstellungsplans an.
Verwenden Sie den Kontext für den Wiederherstellungsplan, damit das Skript erkennt, welcher Wiederherstellungsplan ausgeführt wird:
workflow AddPublicIPAndNSG { param ( [parameter(Mandatory=$false)] [Object]$RecoveryPlanContext ) $RPName = $RecoveryPlanContext.RecoveryPlanName }
Notieren Sie sich den NSG-Namen und die Ressourcengruppe. Verwenden Sie diese Variablen als Eingaben für Skripts für Wiederherstellungspläne.
Erstellen Sie in den Objekten des Automation-Kontos eine Variable zum Speichern des NSG-Namens. Fügen Sie dem Variablennamen ein Präfix hinzu, indem Sie den Namen des Wiederherstellungsplans verwenden.
Erstellen Sie eine Variable, um den Namen der Ressourcengruppe für die NSG-Ressource zu speichern. Fügen Sie dem Variablennamen ein Präfix hinzu, indem Sie den Namen des Wiederherstellungsplans verwenden.
Verwenden Sie im Skript den folgenden Referenzcode, um die Variablenwerte abzurufen:
Verwenden Sie im Skript den folgenden Referenzcode, um die Variablenwerte abzurufen:
$NSGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSG" $NSGRGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSGRG" $NSGnameVar = Get-AutomationVariable -Name $NSGValue $RGnameVar = Get-AutomationVariable -Name $NSGRGValue
Verwenden Sie die Variablen im Runbook, um die NSG auf die Netzwerkschnittstelle der VM anzuwenden, für den das Failover durchgeführt wurde:
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 } }
Erstellen Sie für jeden Wiederherstellungsplan unabhängige Variablen, damit Sie das Skript wiederverwenden können. Fügen Sie ein Präfix hinzu, indem Sie den Namen des Wiederherstellungsplans verwenden.
Verwenden einer komplexen Variablen zum Speichern von weiteren Informationen
In einigen Szenarios können Sie möglicherweise keine separaten Variablen für jeden Wiederherstellungsplan erstellen. Stellen Sie sich ein Szenario vor, bei dem mit nur einem Skript für bestimmte VMs eine öffentliche IP-Adresse zugewiesen werden soll. In einem anderen Szenario kann es sein, dass Sie verschiedene NSGs unterschiedlichen VMs (nicht auf allen VMs) zuordnen möchten. Beachten Sie dabei Folgendes:
- Sie können ein Skript erstellen, das für alle Wiederherstellungspläne wiederverwendet werden kann.
- Jeder Wiederherstellungsplan kann über eine variable Anzahl von VMs verfügen.
- Eine SharePoint-Wiederherstellung verfügt über zwei Front-Ends. Eine einfache Branchenanwendung (LOB-Anwendung) hat nur ein Front-End.
- In diesem Szenario können Sie nicht für jeden Wiederherstellungsplan separate Variablen erstellen.
Im folgenden Beispiel erstellen wie eine komplexe Variable im Azure Automation-Konto.
Hierzu geben wir mithilfe von Azure PowerShell mehrere Werte an.
Melden Sie sich in PowerShell bei Ihrem Azure-Abonnement an:
Connect-AzureRmAccount $sub = Get-AzureRmSubscription -Name <SubscriptionName> $sub | Select-AzureRmSubscription
Erstellen Sie zum Speichern der Parameter die komplexe Variable, indem Sie den Namen des Wiederherstellungsplans verwenden:
$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
In dieser komplexen Variablen ist VMDetails die VM-ID für die geschützte VM. Zeigen Sie im Azure-Portal die VM-Eigenschaften an, um die VM-ID zu erhalten. Im folgenden Screenshot ist eine Variable dargestellt, in der die Details von zwei VMs gespeichert werden:
Verwenden Sie diese Variable in Ihrem Runbook. Wenn sich die angegebene VM-GUID im Kontext des Wiederherstellungsplans befindet, können Sie die NSG auf die VM anwenden:
$VMDetailsObj = (Get-AutomationVariable -Name $RecoveryPlanContext.RecoveryPlanName).ToObject([hashtable])
Führen Sie in Ihrem Runbook eine Schleife durch die VMs des Wiederherstellungsplan-Kontexts durch. Überprüfen Sie, ob die VM in $VMDetailsObj vorhanden ist. Wenn ja, greifen Sie auf die Eigenschaften der Variablen zu, um die NSG anzuwenden:
$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 } }
Sie können dasselbe Skript für unterschiedliche Wiederherstellungspläne verwenden. Geben Sie unterschiedliche Parameter ein, indem Sie den Wert, der einem Wiederherstellungsplan entspricht, in unterschiedlichen Variablen speichern.
Beispielskripts
Wählen Sie die Schaltfläche In Azure bereitstellen aus, um Beispielskripts für Ihr Automation-Konto bereitzustellen.
Nächste Schritte
- Sie erhalten Informationen zu folgenden Themen:
- Überprüfung: