Kurtarma planlarına Azure Otomasyonu runbook’ları ekleme
Bu makalede, Azure Otomasyonu runbook 'larının Azure Site Recovery kurtarma planlarını uzatmak için nasıl tümleştirileceği açıklanır. Bunun için el ile müdahale etmesi gereken temel görevleri otomatikleştirmeyi ve çok adımlı bir kurtarmanın tek tıklamayla bir eyleme nasıl dönüştürüleceğini göstereceğiz.
Kurtarma planları
Şirket içi makinelerin veya Azure VM 'lerinin yükünü devretmek için kurtarma planlarını kullanabilirsiniz. Kurtarma planları, makinelerin yük devretme işlemini ve yük devretmeden sonra nasıl başlatılacağını ve kurtarılacağını tanımlayan sistematik bir kurtarma işlemi tanımlamanıza yardımcı olur.
Kurtarma büyük uygulamaları karmaşık olabilir. Kurtarma planları, kurtarmanın sürekli doğru, yinelenebilir ve otomatik olmasını sağlayacak şekilde sıra sağlamaya yardımcı olur. Komut dosyalarını ve Azure Otomasyonu runbook 'larını kullanarak bir kurtarma planı içindeki görevleri otomatikleştirebilirsiniz. Tipik örnekler, yük devretmeden sonra Azure VM üzerinde ayarları veya VM üzerinde çalışan bir uygulamayı yeniden yapılandırmayı yapılandırıyor olabilir.
- Kurtarma planları hakkında daha fazla bilgi edinin .
- Azure Otomasyonu runbook 'ları hakkında daha fazla bilgi edinin .
Kurtarma planlarındaki runbook 'lar
Bir kurtarma planına Azure Otomasyonu hesabı ve Runbook 'lar eklersiniz. Kurtarma planı çalıştırıldığında runbook çağrılır.
- Otomasyon hesabı herhangi bir Azure bölgesinde olabilir ve Site Recovery kasasıyla aynı abonelikte olmalıdır.
- Bir runbook, birincil konumdan ikinciye yük devretme sırasında veya ikincil konumdan birincil konuma yeniden çalışma sırasında bir kurtarma planında çalıştırılabilir.
- Bir kurtarma planındaki runbook 'lar, bir diğeri sonra, küme sırasına göre çalıştırılır.
- Kurtarma planındaki runbook 'lar VM 'Leri farklı gruplarda başlatılacak şekilde yapılandırdıysanız, kurtarma planı yalnızca Azure tüm VM 'Leri çalışıyor olarak raporladığında devam eder.
- Kurtarma planları, bir komut dosyası başarısız olsa bile çalışmaya devam eder.
Kurtarma planı bağlamı
Bir betik çalıştırıldığında, runbook 'a bir kurtarma planı bağlamını çıkarır. Bağlam, tabloda özetlenen değişkenleri içerir.
| Değişken adı | Açıklama |
|---|---|
| RecoveryPlanName | Kurtarma planı adı. Ada göre eylemlerde kullanılır. |
| Yük üzerine yazma | Bir test veya üretim yük devretmesi olup olmadığını belirtir. |
| FailoverDirection | Kurtarmanın birincil veya ikincil bir konuma yapılıp yapılmayacağını belirtir. |
| ID | Plan çalışırken kurtarma planındaki grup numarasını tanımlar. |
| VmMap | Gruptaki tüm VM 'lerin bir dizisi. |
| VMMap anahtarı | Her VM için benzersiz bir anahtar (GUID). |
| SubscriptionId | VM 'nin oluşturulduğu Azure abonelik KIMLIĞI. |
| ResourceGroupName | VM 'nin bulunduğu kaynak grubunun adı. |
| CloudServiceName | VM 'nin altında oluşturulduğu Azure bulut hizmeti adı. |
| RoleName | Azure VM 'nin adı. |
| Recoverypointıd | VM kurtarma için zaman damgası. |
Not
' FailoverDirection ' değişkeninin değeri, yük devretme ve yeniden çalışma durumunda ' SecondaryToPrimary ' olması durumunda ' PrimaryToSecondary ' olacaktır.
Aşağıdaki örnek bir bağlam değişkenini gösterir:
{"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"}
}
}
Bir döngüde VMMap içindeki tüm VM 'Lere erişmek istiyorsanız aşağıdaki kodu kullanabilirsiniz:
$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 parçalara ayırma bulutlarının üzerinde bir kurtarma planı bağlam betiğininyararlı bir örneği vardır.
Başlamadan önce
Azure Otomasyonu ' na yeni başladıysanız örnek komut dosyalarını kaydedebilir ve indirebilirsiniz.
Otomasyon hesabının aşağıdaki modüllere sahip olduğundan emin olun:
- Azurerd. profil
- AzureRM.Resources
- AzureRM.Automation
- AzureRM.Network
- AzureRM.Compute
Tüm modüller uyumlu sürümler olmalıdır. En basit yol, her zaman tüm modüllerin en son sürümlerini kullanmaktır.
Kurtarma planını özelleştirme
Kasada, kurtarma planları ' nı (Site Recovery) seçin
Bir kurtarma planı oluşturmak için + kurtarma planı' na tıklayın. Daha fazla bilgi edinin. Zaten bir kurtarma planınız varsa, açmak için seçin.
Kurtarma planı sayfasında, Özelleştir' e tıklayın.

Grup 1' in yanındaki üç nokta (...) işaretine tıklayın: > Post Ekle eylemi Başlat.
Ekle eyleminde betiğin seçili olduğunu doğrulayın ve betik için bir ad belirtin (Merhaba Dünya).
Bir Otomasyon hesabı belirtin ve bir runbook seçin. Betiği kaydetmek için Tamam' a tıklayın. Komut dosyası 1. Grup: son adımlar' a eklenir.
Runbook betiğini yeniden kullanma
Çoklu kurtarma planlarında, dış değişkenleri kullanarak tek bir runbook betiği kullanabilirsiniz.
- Bir kurtarma planını çalıştırmaya yönelik parametreleri depolamak için Azure Otomasyonu değişkenlerini kullanırsınız.
- Kurtarma planı adını değişkenine önek olarak ekleyerek her bir kurtarma planı için bağımsız değişkenler oluşturabilirsiniz. Sonra değişkenleri parametre olarak kullanın.
- Betiği değiştirmeden bir parametreyi değiştirebilirsiniz, ancak yine de betiğin çalışma şeklini değiştirebilirsiniz.
Runbook betikte basit bir dize değişkeni kullanma
Bu örnekte, bir komut dosyası bir ağ güvenlik grubu (NSG) girişi alır ve bunu bir kurtarma planındaki VM 'lere uygular.
Komut dosyasının hangi kurtarma planının çalıştığını algılayabilmesi için, bu kurtarma planı bağlamını kullanın:
workflow AddPublicIPAndNSG { param ( [parameter(Mandatory=$false)] [Object]$RecoveryPlanContext ) $RPName = $RecoveryPlanContext.RecoveryPlanNameNSG adı ve kaynak grubu ' na göz önünde edin. Bu değişkenleri, kurtarma planı betikleri için giriş olarak kullanırsınız.
Otomasyon hesabı varlıkları. NSG adını depolamak için bir değişken oluşturun. Kurtarma planının adı ile değişken adına bir ön ek ekleyin.

NSG kaynağı için kaynak grubu adını depolamak üzere bir değişken oluşturun. Kurtarma planının adı ile değişken adına bir ön ek ekleyin.

Betikte, değişken değerlerini almak için bu başvuru kodunu kullanın:
$NSGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSG" $NSGRGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSGRG" $NSGnameVar = Get-AutomationVariable -Name $NSGValue $RGnameVar = Get-AutomationVariable -Name $NSGRGValueNSG 'yi, yük devredilen VM 'nin ağ arabirimine uygulamak için Runbook 'taki değişkenleri kullanı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 } }
Her kurtarma planı için, betiği yeniden kullanabilmeniz için bağımsız değişkenler oluşturun. Kurtarma planı adını kullanarak bir ön ek ekleyin.
Bu senaryoya yönelik tam, uçtan uca bir betik için bu betiğigözden geçirin.
Daha fazla bilgi depolamak için karmaşık bir değişken kullanın
Bazı senaryolarda her kurtarma planı için ayrı değişkenler oluşturamayabileceksiniz. Tek bir betiğin belirli VM'lerde genel IP adresi ataması istediğiniz bir senaryo düşünün. Başka bir senaryoda, farklı VM'lere (tüm VM'lerde değil) farklı NSG'ler uygulamak istiyor olabilir. Şunlara dikkat edin:
- Herhangi bir kurtarma planı için yeniden kullanılabilir bir betik değiştirilebilir.
- Her kurtarma planında farklı sayıda VM olabilir.
- Örneğin, bir kurtarma SharePoint ön uçları olur. Temel bir iş hattı (LOB) uygulamasında yalnızca bir ön uç vardır.
- Bu senaryoda, her kurtarma planı için ayrı değişkenler oluşturamayebilirsiniz.
Aşağıdaki örnekte, hesapta karmaşık bir değişken Azure Otomasyonu oluşturuz.
Bunu, birden çok değer belirterek, Azure PowerShell.
PowerShell'de Azure aboneliğinde oturum açma:
Connect-AzureRmAccount $sub = Get-AzureRmSubscription -Name <SubscriptionName> $sub | Select-AzureRmSubscriptionParametreleri depolamak için kurtarma planının adını kullanarak karmaşık değişkeni oluşturun:
$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 $falseBu karmaşık değişkende VMDetails, korumalı VM'nin VM kimliğidir. VM kimliğini almak için, Azure portal VM özelliklerini görüntüleme. Aşağıdaki ekran görüntüsünde iki VM'nin ayrıntılarını depoleyen bir değişken yer almaktadır:

Runbook'uzda bu değişkeni kullanın. Belirtilen VM GUID'si kurtarma planı bağlamında bulunursa VM'ye NSG'yi uygulama:
$VMDetailsObj = (Get-AutomationVariable -Name $RecoveryPlanContext.RecoveryPlanName).ToObject([hashtable])Runbook'uzda kurtarma planı bağlamının VM'leri boyunca döngüye geçin. Sanal makinenin içinde olup olmadığını $VMDetailsObj. Varsa, NSG'yi uygulamak için değişkeninin özelliklerine erişin:
$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 } }
Farklı kurtarma planları için aynı betiği kullanabilirsiniz. Bir kurtarma planına karşılık gelen değeri farklı değişkenlerde depolayarak farklı parametreler girin.
Örnek betikler
Otomasyon hesabınıza örnek betikler dağıtmak için Azure'a Dağıt düğmesine tıklayın.
Bu video başka bir örnek sağlar. İki katmanlı bir WordPress uygulamasını Azure'a kurtarmayı gösteriyor:
Sonraki adımlar
- Azure Otomasyonu Farklı Çalıştır hesabı hakkında bilgi
- Örnek Azure Otomasyonu gözden geçirme.
- Yük devretme çalıştırma hakkında daha fazla bilgi.
