Azure Automation-runbookok hozzáadása helyreállítási tervekhez
Ez a cikk bemutatja, hogyan integrálhatók az Azure Automation-runbookok az Azure Site Recovery helyreállítási terveinek kiterjesztése érdekében. Megmutatjuk, hogyan automatizálhatja az olyan alapszintű feladatokat, amelyekhez egyébként manuális beavatkozásra lenne szükség, és hogyan konvertálhat egy többlépéses helyreállítást egyetlen kattintással végrehajtható műveletté.
Helyreállítási tervek
Helyreállítási terveket használhat helyszíni gépek vagy Azure-beli virtuális gépek feladatátvételekor. A helyreállítási tervek segítenek meghatározni egy szisztematikus helyreállítási folyamatot, amely meghatározza a gépek feladatátvételi módját, valamint a feladatátvétel utáni indítást és helyreállítást.
A nagy alkalmazások helyreállítása összetett lehet. A helyreállítási tervek segítenek sorrendet szabni, hogy a helyreállítás következetesen pontos, megismételhető és automatizált legyen. A helyreállítási tervben lévő feladatokat szkriptekkel és Azure Automation-runbookokkal is automatizálhatja. Tipikus példa lehet például egy Azure-beli virtuális gép beállításainak konfigurálása a feladatátvétel után, vagy egy, a virtuális gépen futó alkalmazás újrakonfigurálása.
Runbookok helyreállítási tervekben
Azure Automation-fiókot és runbookokat adhat hozzá egy helyreállítási tervhez. A rendszer meghívja a runbookot a helyreállítási terv futtatásakor.
- Az Automation-fiók bármely Azure-régióban lehet, és ugyanabban az előfizetésben kell lennie, mint a Site Recovery-tároló.
- A runbookok futtathatók helyreállítási tervben az elsődleges helyről a másodlagos helyre történő feladatátvétel során, vagy a másodlagos helyről az elsődleges helyre történő feladat-visszavétel során.
- A helyreállítási terv runbookjai sorozatosan, egymás után futnak a megadott sorrendben.
- Ha egy helyreállítási terv runbookjai úgy konfigurálják a virtuális gépeket, hogy különböző csoportokban induljanak el, a helyreállítási terv csak akkor folytatódik, ha az Azure az összes virtuális gépet futtatásként jelenti.
- A helyreállítási tervek továbbra is futnak, még akkor is, ha egy szkript meghiúsul.
Helyreállítási terv környezete
Amikor egy szkript fut, egy helyreállítási terv környezetét injektálja a runbookba. A környezet a táblázatban összegzett változókat tartalmazza.
Változó neve | Leírás |
---|---|
RecoveryPlanName | Helyreállítási terv neve. A név alapján végzett műveletekben használatos. |
Feladatátvételi típus | Megadja, hogy tesztről vagy éles feladatátvételről van-e szó. |
Feladatátvételi átirányítás | Meghatározza, hogy a helyreállítás elsődleges vagy másodlagos helyre történik-e. |
Csoportazonosító | A helyreállítási tervben szereplő csoportszámot azonosítja a terv futtatásakor. |
Vmmap | A csoport összes virtuális gépének tömbje. |
VMMap-kulcs | Egyedi kulcs (GUID) minden virtuális géphez. |
SubscriptionId | Az Azure-előfizetés azonosítója, amelyben a virtuális gép létrejött. |
ResourceGroupName | Annak az erőforráscsoportnak a neve, amelyben a virtuális gép található. |
CloudServiceName | Az Azure cloud service neve, amely alatt a virtuális gép létrejött. |
RoleName | Az Azure-beli virtuális gép neve. |
RecoveryPointId | A virtuális gép helyreállításának időbélyege. |
Feljegyzés
Feladatátvétel esetén a "FailoverDirection" változó értéke "PrimaryToSecondary", feladat-visszavétel esetén pedig "SecondaryToPrimary".
Az alábbi példa egy környezeti változót mutat be:
{
"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"
}
}
}
Ha egy ciklusban szeretné elérni a VMMap összes virtuális gépét, a következő kódot használhatja:
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 blogja a Harvesting Cloudsban hasznos példát mutat a helyreállítási terv környezetszkriptjeire.
Előkészületek
Ha még nem használja az Azure Automationt, regisztrálhat és letöltheti a mintaszkripteket. További információ: Automation runbookok – ismert problémák és korlátozások.
Győződjön meg arról, hogy az Automation-fiók a következő modulokkal rendelkezik:
- AzureRM.profile
- AzureRM.Resources
- AzureRM.Automation
- AzureRM.Network
- AzureRM.Compute
Minden modulnak kompatibilis verziójúnak kell lennie. A legegyszerűbb módszer mindig az összes modul legújabb verzióinak használata.
A helyreállítási terv testreszabása
A tárolóban válassza a Helyreállítási tervek (Site Recovery) lehetőséget
Helyreállítási terv létrehozásához válassza a +Helyreállítási terv lehetőséget. További információ. Ha már rendelkezik helyreállítási tervvel, válassza ki a megnyitásához.
A helyreállítási terv lapon válassza a Testreszabás lehetőséget.
Válassza ki a három pontot (...) az 1. csoport mellett: Bejegyzés hozzáadása művelet indítása>.
A Beszúrás műveletben ellenőrizze, hogy a szkript ki van-e jelölve, és adja meg a szkript nevét ("Helló világ!" alkalmazás).
Adjon meg egy automation-fiókot, és válasszon ki egy runbookot. A szkript mentéséhez válassza az OK gombot. A szkript hozzáadva az 1. csoporthoz: a lépések utáni lépésekhez.
Runbook-szkript újbóli használata
Egy runbook-szkriptet több helyreállítási tervben is használhat külső változók használatával.
- Azure Automation-változókkal tárolhat paramétereket egy helyreállítási terv futtatásához.
- Ha a helyreállítási terv nevét előtagként adja hozzá a változóhoz, minden helyreállítási tervhez létrehozhat egyéni változókat. Ezután használja a változókat paraméterekként.
- A paramétereket a szkript módosítása nélkül is módosíthatja, de továbbra is módosíthatja a szkript működését.
Egyszerű sztringváltozó használata runbook-szkriptben
Ebben a példában egy szkript egy hálózati biztonsági csoport (NSG) bemenetét használja a helyreállítási tervben lévő virtuális gépekre.
Annak érdekében, hogy a szkript észlelhesse, melyik helyreállítási terv fut, használja ezt a helyreállítási terv kontextusát:
workflow AddPublicIPAndNSG { param ( [parameter(Mandatory=$false)] [Object]$RecoveryPlanContext ) $RPName = $RecoveryPlanContext.RecoveryPlanName }
Jegyezze fel az NSG nevét és erőforráscsoportját. Ezeket a változókat használhatja a helyreállítási terv szkriptjeinek bemeneteként.
Az Automation-fiók eszközeiben. hozzon létre egy változót az NSG-név tárolásához. Adjon hozzá egy előtagot a változó nevéhez a helyreállítási terv nevével.
Hozzon létre egy változót az NSG-erőforrás erőforráscsoport-nevének tárolásához. Adjon hozzá egy előtagot a változó nevéhez a helyreállítási terv nevével.
A szkriptben használja ezt a referenciakódot a változóértékek lekéréséhez:
A szkriptben használja ezt a referenciakódot a változóértékek lekéréséhez:
$NSGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSG" $NSGRGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSGRG" $NSGnameVar = Get-AutomationVariable -Name $NSGValue $RGnameVar = Get-AutomationVariable -Name $NSGRGValue
A runbook változóival alkalmazza az NSG-t a meghibásodott virtuális gép hálózati adapterére:
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 } }
Minden helyreállítási tervhez hozzon létre független változókat, hogy újra felhasználhassa a szkriptet. Adjon hozzá egy előtagot a helyreállítási terv nevével.
Összetett változó használata további információk tárolásához
Bizonyos esetekben előfordulhat, hogy nem tud külön változókat létrehozni az egyes helyreállítási tervekhez. Fontolja meg azt a forgatókönyvet, amelyben azt szeretné, hogy egy szkript nyilvános IP-címet rendeljen hozzá adott virtuális gépekhez. Egy másik forgatókönyvben érdemes lehet különböző NSG-ket alkalmazni a különböző virtuális gépeken (nem minden virtuális gépen). Vegye figyelembe:
- Létrehozhat egy olyan szkriptet, amely bármely helyreállítási tervhez újra felhasználható.
- Minden helyreállítási terv változó számú virtuális géppel rendelkezhet.
- A SharePoint-helyreállításnak például két előtere van. Egy alapszintű üzletági (LOB) alkalmazás csak egy előtérrel rendelkezik.
- Ebben a forgatókönyvben nem hozhat létre külön változókat az egyes helyreállítási tervekhez.
Az alábbi példában egy összetett változót hozunk létre az Azure Automation-fiókban.
Ezt több érték megadásával tesszük meg az Azure PowerShell használatával.
A PowerShellben jelentkezzen be az Azure-előfizetésbe:
Connect-AzureRmAccount $sub = Get-AzureRmSubscription -Name <SubscriptionName> $sub | Select-AzureRmSubscription
A paraméterek tárolásához hozza létre az összetett változót a helyreállítási terv nevével:
$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
Ebben az összetett változóban a VMDetails a védett virtuális gép virtuálisgép-azonosítója. A virtuális gép azonosítójának lekéréséhez az Azure Portalon tekintse meg a virtuális gép tulajdonságait. Az alábbi képernyőképen egy változó látható, amely két virtuális gép adatait tárolja:
Használja ezt a változót a runbookban. Ha a megadott virtuálisgép-GUID megtalálható a helyreállítási terv kontextusában, alkalmazza az NSG-t a virtuális gépen:
$VMDetailsObj = (Get-AutomationVariable -Name $RecoveryPlanContext.RecoveryPlanName).ToObject([hashtable])
A runbookban futtassa végig a helyreállítási terv környezetének virtuális gépeit. Ellenőrizze, hogy a virtuális gép létezik-e a $VMDetailsObj. Ha létezik, a változó tulajdonságaihoz férhet hozzá az NSG alkalmazásához:
$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 } }
Ugyanazt a szkriptet használhatja a különböző helyreállítási tervekhez. Adjon meg különböző paramétereket a helyreállítási tervnek megfelelő érték különböző változókban való tárolásával.
Mintaszkriptek
Ha mintaszkripteket szeretne üzembe helyezni az Automation-fiókban, válassza az Üzembe helyezés az Azure-ban gombot.
Következő lépések
- További információ:
- Felülvizsgálat: