Dodawanie elementów Runbook usługi Azure Automation do planów odzyskiwania
W tym artykule opisano sposób integrowania elementów Runbook usługi Azure Automation w celu rozszerzenia planów odzyskiwania usługi Azure Site Recovery . Pokazujemy, jak zautomatyzować podstawowe zadania, które w przeciwnym razie wymagałyby ręcznej interwencji, oraz jak przekonwertować odzyskiwanie wieloetapowe w akcję pojedynczego kliknięcia.
Plany odzyskiwania
Plany odzyskiwania można używać podczas przełączania maszyn lokalnych w tryb failover lub maszyn wirtualnych platformy Azure. Plany odzyskiwania ułatwiają zdefiniowanie systematycznego procesu odzyskiwania, który definiuje sposób przełączania maszyn w tryb failover oraz sposobu ich uruchamiania i odzyskiwania po przejściu w tryb failover.
Odzyskiwanie dużych aplikacji może być złożone. Plany odzyskiwania pomagają narzucić kolejność, aby odzyskiwanie było spójnie dokładne, powtarzalne i zautomatyzowane. Zadania w ramach planu odzyskiwania można zautomatyzować przy użyciu skryptów, a także elementów Runbook usługi Azure Automation. Typowe przykłady mogą dotyczyć konfigurowania ustawień na maszynie wirtualnej platformy Azure po przejściu w tryb failover lub ponownej konfiguracji aplikacji działającej na maszynie wirtualnej.
- Dowiedz się więcej o planach odzyskiwania.
- Dowiedz się więcej o elementach Runbook usługi Azure Automation.
Elementy Runbook w planach odzyskiwania
Do planu odzyskiwania dodaje się konto usługi Azure Automation i elementy Runbook. Element Runbook jest wywoływany po uruchomieniu planu odzyskiwania.
- Konto usługi Automation może znajdować się w dowolnym regionie świadczenia usługi Azure i musi znajdować się w tej samej subskrypcji co magazyn usługi Site Recovery.
- Element Runbook może działać w planie odzyskiwania podczas przechodzenia w tryb failover z lokalizacji podstawowej do pomocniczej lub podczas powrotu po awarii z lokalizacji pomocniczej do lokalizacji podstawowej.
- Elementy Runbook w planie odzyskiwania są uruchamiane szeregowo, po kolei w kolejności ustawionej.
- Jeśli elementy Runbook w planie odzyskiwania konfigurują maszyny wirtualne do uruchamiania w różnych grupach, plan odzyskiwania będzie kontynuowany tylko wtedy, gdy platforma Azure zgłasza wszystkie maszyny wirtualne jako uruchomione.
- Plany odzyskiwania są nadal uruchamiane, nawet jeśli skrypt zakończy się niepowodzeniem.
Kontekst planu odzyskiwania
Po uruchomieniu skryptu wprowadza kontekst planu odzyskiwania do elementu Runbook. Kontekst zawiera zmienne podsumowane w tabeli.
Nazwa zmiennej | Opis |
---|---|
RecoveryPlanName | Nazwa planu odzyskiwania. Używane w akcjach na podstawie nazwy. |
Typ trybu failover | Określa, czy jest to test, czy produkcyjny tryb failover. |
FailoverDirection | Określa, czy odzyskiwanie ma być lokalizacją podstawową, czy pomocniczą. |
Identyfikator grupy | Określa numer grupy w planie odzyskiwania, gdy plan jest uruchomiony. |
VmMap | Tablica wszystkich maszyn wirtualnych w grupie. |
Klucz vmMap | Unikatowy klucz (GUID) dla każdej maszyny wirtualnej. |
SubscriptionId | Identyfikator subskrypcji platformy Azure, w którym utworzono maszynę wirtualną. |
ResourceGroupName | Nazwa grupy zasobów, w której znajduje się maszyna wirtualna. |
CloudServiceName | Nazwa usługi w chmurze platformy Azure, w ramach której utworzono maszynę wirtualną. |
RoleName | Nazwa maszyny wirtualnej platformy Azure. |
Identyfikator punktu odzyskiwania | Sygnatura czasowa odzyskiwania maszyny wirtualnej. |
Uwaga
Wartość zmiennej "FailoverDirection" będzie mieć wartość "PrimaryToSecondary" w przypadku trybu failover i "SecondaryToPrimary" w przypadku powrotu po awarii.
W poniższym przykładzie przedstawiono zmienną kontekstową:
{
"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"
}
}
}
Jeśli chcesz uzyskać dostęp do wszystkich maszyn wirtualnych w pętli VMMap, możesz użyć następującego kodu:
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
}
}
Blog Aman Sharma na stronie Harvesting Clouds ma przydatny przykład skryptu kontekstu planu odzyskiwania.
Przed rozpoczęciem
Jeśli dopiero zaczynasz korzystać z usługi Azure Automation, możesz zarejestrować się i pobrać przykładowe skrypty. Aby uzyskać więcej informacji, zobacz Elementy Runbook usługi Automation — znane problemy i ograniczenia.
Upewnij się, że konto usługi Automation ma następujące moduły:
- AzureRM.profile
- AzureRM.Resources
- AzureRM.Automation
- AzureRM.Network
- AzureRM.Compute
Wszystkie moduły powinny być zgodne wersje. Najprostszym sposobem jest zawsze użycie najnowszych wersji wszystkich modułów.
Dostosowywanie planu odzyskiwania
W magazynie wybierz pozycję Plany odzyskiwania (Site Recovery)
Aby utworzyć plan odzyskiwania, wybierz pozycję +Plan odzyskiwania. Dowiedz się więcej. Jeśli masz już plan odzyskiwania, wybierz go, aby go otworzyć.
Na stronie plan odzyskiwania wybierz pozycję Dostosuj.
Wybierz wielokropek (...) obok pozycji Grupa 1: Rozpocznij>akcję Dodaj wpis.
W obszarze Akcja Wstaw sprawdź, czy wybrano skrypt, i określ nazwę skryptu (Hello World).
Określ konto automatyzacji i wybierz element Runbook. Aby zapisać skrypt, wybierz przycisk OK. Skrypt jest dodawany do grupy 1: kroki po kroku.
Ponowne używanie skryptu elementu Runbook
Można użyć pojedynczego skryptu elementu Runbook w wielu planach odzyskiwania przy użyciu zmiennych zewnętrznych.
- Zmienne usługi Azure Automation służą do przechowywania parametrów na potrzeby uruchamiania planu odzyskiwania.
- Dodając nazwę planu odzyskiwania jako prefiks do zmiennej, można utworzyć poszczególne zmienne dla każdego planu odzyskiwania. Następnie użyj zmiennych jako parametrów.
- Możesz zmienić parametr bez zmiany skryptu, ale nadal zmienić sposób działania skryptu.
Używanie prostej zmiennej ciągu w skrycie elementu Runbook
W tym przykładzie skrypt pobiera dane wejściowe sieciowej grupy zabezpieczeń i stosuje ją do maszyn wirtualnych w planie odzyskiwania.
Aby skrypt mógł wykryć, który plan odzyskiwania jest uruchomiony, użyj tego kontekstu planu odzyskiwania:
workflow AddPublicIPAndNSG { param ( [parameter(Mandatory=$false)] [Object]$RecoveryPlanContext ) $RPName = $RecoveryPlanContext.RecoveryPlanName }
Zanotuj nazwę sieciowej grupy zabezpieczeń i grupę zasobów. Te zmienne są używane jako dane wejściowe dla skryptów planu odzyskiwania.
W zasobach konta usługi Automation. utwórz zmienną do przechowywania nazwy sieciowej grupy zabezpieczeń. Dodaj prefiks do nazwy zmiennej o nazwie planu odzyskiwania.
Utwórz zmienną do przechowywania nazwy grupy zasobów dla zasobu sieciowej grupy zabezpieczeń. Dodaj prefiks do nazwy zmiennej o nazwie planu odzyskiwania.
W skry skryptzie użyj tego kodu referencyjnego, aby uzyskać wartości zmiennych:
W skry skryptzie użyj tego kodu referencyjnego, aby uzyskać wartości zmiennych:
$NSGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSG" $NSGRGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSGRG" $NSGnameVar = Get-AutomationVariable -Name $NSGValue $RGnameVar = Get-AutomationVariable -Name $NSGRGValue
Użyj zmiennych w elemecie Runbook, aby zastosować sieciową grupę zabezpieczeń do interfejsu sieciowego maszyny wirtualnej w trybie failover:
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 } }
Dla każdego planu odzyskiwania utwórz niezależne zmienne, aby można było ponownie użyć skryptu. Dodaj prefiks przy użyciu nazwy planu odzyskiwania.
Przechowywanie dodatkowych informacji przy użyciu zmiennej złożonej
W niektórych scenariuszach może nie być możliwe utworzenie oddzielnych zmiennych dla każdego planu odzyskiwania. Rozważmy scenariusz, w którym pojedynczy skrypt ma przypisać publiczny adres IP na określonych maszynach wirtualnych. W innym scenariuszu można zastosować różne sieciowe grupy zabezpieczeń na różnych maszynach wirtualnych (nie na wszystkich maszynach wirtualnych). Należy pamiętać, że:
- Możesz utworzyć skrypt wielokrotnego użytku dla dowolnego planu odzyskiwania.
- Każdy plan odzyskiwania może mieć zmienną liczbę maszyn wirtualnych.
- Na przykład odzyskiwanie programu SharePoint ma dwa frontony. Podstawowa aplikacja biznesowa (LOB) ma tylko jeden fronton.
- W tym scenariuszu nie można utworzyć oddzielnych zmiennych dla każdego planu odzyskiwania.
W poniższym przykładzie utworzymy złożoną zmienną na koncie usługi Azure Automation.
W tym celu należy określić wiele wartości przy użyciu programu Azure PowerShell.
W programie PowerShell zaloguj się do subskrypcji platformy Azure:
Connect-AzureRmAccount $sub = Get-AzureRmSubscription -Name <SubscriptionName> $sub | Select-AzureRmSubscription
Aby zapisać parametry, utwórz zmienną złożoną przy użyciu nazwy planu odzyskiwania:
$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
W tej złożonej zmiennej vmDetails jest identyfikatorem maszyny wirtualnej chronionej maszyny wirtualnej. Aby uzyskać identyfikator maszyny wirtualnej, w witrynie Azure Portal wyświetl właściwości maszyny wirtualnej. Poniższy zrzut ekranu przedstawia zmienną, która przechowuje szczegóły dwóch maszyn wirtualnych:
Użyj tej zmiennej w elemecie Runbook. Jeśli wskazany identyfikator GUID maszyny wirtualnej zostanie znaleziony w kontekście planu odzyskiwania, zastosuj sieciową grupę zabezpieczeń na maszynie wirtualnej:
$VMDetailsObj = (Get-AutomationVariable -Name $RecoveryPlanContext.RecoveryPlanName).ToObject([hashtable])
W elemecie Runbook wykonaj pętlę przez maszyny wirtualne kontekstu planu odzyskiwania. Sprawdź, czy maszyna wirtualna istnieje w $VMDetailsObj. Jeśli istnieje, uzyskaj dostęp do właściwości zmiennej, aby zastosować sieciową grupę zabezpieczeń:
$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 } }
Możesz użyć tego samego skryptu dla różnych planów odzyskiwania. Wprowadź różne parametry, przechowując wartość odpowiadającą planowi odzyskiwania w różnych zmiennych.
Przykładowe skrypty
Aby wdrożyć przykładowe skrypty na koncie usługi Automation, wybierz przycisk Wdróż na platformie Azure .
Następne kroki
- Dowiedz się więcej o:
- Recenzja: