Aggiungere runbook di Automazione di Azure ai piani di ripristinoAdd Azure Automation runbooks to recovery plans

Questo articolo descrive come Azure Site Recovery si integra con Automazione di Azure per facilitare l'estensione dei piani di ripristino.In this article, we describe how Azure Site Recovery integrates with Azure Automation to help you extend your recovery plans. I piani di ripristino possono orchestrare il ripristino di macchine virtuali protette con Site Recovery.Recovery plans can orchestrate recovery of VMs that are protected with Site Recovery. I piani di ripristino possono essere usati sia per la replica in un cloud secondario che per la replica in AzureRecovery plans work both for replication to a secondary cloud, and for replication to Azure. e consentono anche di ottenere un ripristino costantemente accurato, ripetibile e automatizzato.Recovery plans also help make the recovery consistently accurate, repeatable, and automated. Se si esegue il failover delle macchine virtuali in Azure, l'integrazione con Automazione di Azure estende i piani di ripristino.If you fail over your VMs to Azure, integration with Azure Automation extends your recovery plans. È possibile usare questa funzionalità per eseguire runbook, che offrono attività di automazione dalle grandi potenzialità.You can use it to execute runbooks, which offer powerful automation tasks.

Se non si ha familiarità con Automazione di Azure, è possibile iscriversi e scaricare script di esempio.If you are new to Azure Automation, you can sign up and download sample scripts. Per altre informazioni e per scoprire come orchestrare il ripristino in Azure tramite i piani di ripristino, vedere Azure Site Recovery.For more information, and to learn how to orchestrate recovery to Azure by using recovery plans, see Azure Site Recovery.

Questo articolo descrive come è possibile integrare i runbook di Automazione di Azure nei piani di ripristino.In this article, we describe how you can integrate Azure Automation runbooks into your recovery plans. Vengono usati alcuni esempi per automatizzare attività di base che richiedevano in precedenza un intervento manuale.We use examples to automate basic tasks that previously required manual intervention. Viene anche descritto come convertire un ripristino in più passaggi in un'azione di ripristino con clic singolo.We also describe how to convert a multi-step recovery to a single-click recovery action.

Personalizzare il piano di ripristinoCustomize the recovery plan

  1. Passare al pannello delle risorse per il piano di ripristino di Site Recovery.Go to the Site Recovery recovery plan resource blade. In questo esempio, al piano di ripristino sono state aggiunte due macchine virtuali per il ripristino.For this example, the recovery plan has two VMs added to it, for recovery. Per iniziare ad aggiungere un runbook, fare clic sulla scheda Personalizza.To begin adding a runbook, click the Customize tab.

    Fare clic sul pulsante Personalizza

  2. Fare clic con il pulsante destro del mouse su Gruppo 1: Avvio e quindi scegliere Aggiungi post-azione.Right-click Group 1: Start, and then select Add post action.

    Fare clic con il pulsante destro del mouse su Gruppo 1: Avvio e scegliere Aggiungi post-azione

  3. Fare clic su Choose a script (Scegli uno script).Click Choose a script.

  4. Nel pannello Aggiorna azione assegnare il nome Hello World allo script.On the Update action blade, name the script Hello World.

    Pannello Aggiorna azione

  5. Immettere il nome di un account di Automazione.Enter an Automation account name.

    Nota

    L'account di Automazione può essere in qualsiasi area di AzureThe Automation account can be in any Azure region. e deve trovarsi nella stessa sottoscrizione dell'insieme di credenziali di Azure Site Recovery.The Automation account must be in the same subscription as the Azure Site Recovery vault.

  6. Nell'account di Automazione selezionare un runbook.In your Automation account, select a runbook. Questo runbook è lo script che viene eseguito durante l'esecuzione del piano di ripristino dopo il ripristino del primo gruppo.This runbook is the script that runs during the execution of the recovery plan, after the recovery of the first group.

  7. Fare clic su OK per salvare lo script.To save the script, click OK. Lo script viene aggiunto a Gruppo 1: passaggi successivi.The script is added to Group 1: Post-steps.

    Post-azione Gruppo 1: Avvio

Considerazioni per l'aggiunta di uno scriptConsiderations for adding a script

  • Per accedere alle opzioni per eliminare un passaggio o aggiornare lo script, fare clic con il pulsante destro del mouse sullo script.For options to delete a step or update the script, right-click the script.
  • È possibile eseguire uno script in Azure durante il failover da un computer locale ad Azure.A script can run on Azure during failover from an on-premises machine to Azure. È anche possibile eseguirlo in Azure come script del sito primario prima dell'arresto, durante il failback da Azure a un computer locale.It also can run on Azure as a primary-site script before shutdown, during failback from Azure to an on-premises machine.
  • Quando è in esecuzione, inserisce un contesto del piano di ripristino.When a script runs, it injects a recovery plan context. L'esempio seguente mostra una variabile di contesto:The following example shows a context variable:

            {"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"}
    
                    }
    
            }
    

    La tabella seguente indica il nome e la descrizione di ogni variabile nel contesto.The following table lists the name and description of each variable in the context.

    Nome variabileVariable name DescrizioneDescription
    RecoveryPlanNameRecoveryPlanName Nome del piano in esecuzione.The name of the plan being run. Questa variabile consente di eseguire azioni diverse in base al nome del piano di ripristino.This variable helps you take different actions based on the recovery plan name. È anche possibile riutilizzare lo script.You also can reuse the script.
    FailoverTypeFailoverType Specifica se il failover è di test, pianificato o non pianificato.Specifies whether the failover is a test, planned, or unplanned.
    FailoverDirectionFailoverDirection Specifica se il ripristino avviene in un sito primario o secondario.Specifies whether recovery is to a primary or secondary site.
    GroupIDGroupID Identifica il numero del gruppo nel piano di ripristino quando il piano è in esecuzione.Identifies the group number in the recovery plan when the plan is running.
    VmMapVmMap Matrice di tutte le macchine virtuali nel gruppo.An array of all VMs in the group.
    VMMap keyVMMap key Chiave univoca (GUID) per ogni macchina virtuale.A unique key (GUID) for each VM. È uguale all'ID di Azure Virtual Machine Manager (VMM) della macchina virtuale, se applicabile.It's the same as the Azure Virtual Machine Manager (VMM) ID of the VM, where applicable.
    SubscriptionIdSubscriptionId ID della sottoscrizione di Azure in cui viene creata la macchina virtuale.The Azure subscription ID in which the VM was created.
    RoleNameRoleName Nome della macchina virtuale di Azure in corso di ripristino.The name of the Azure VM that's being recovered.
    CloudServiceNameCloudServiceName Nome del servizio cloud di Azure in cui è stata creata la macchina virtuale.The Azure cloud service name under which the VM was created.
    ResourceGroupNameResourceGroupName Nome del gruppo di risorse di Azure in cui è stata creata la macchina virtuale.The Azure resource group name under which the VM was created.
    RecoveryPointIdRecoveryPointId Timestamp del ripristino della macchina virtuale.The timestamp for when the VM is recovered.
  • Assicurarsi che l'account di Automazione abbia i moduli seguenti:Ensure that the Automation account has the following modules:

    • AzureRM.profileAzureRM.profile
    • AzureRM.ResourcesAzureRM.Resources
    • AzureRM.AutomationAzureRM.Automation
    • AzureRM.NetworkAzureRM.Network
    • AzureRM.ComputeAzureRM.Compute

Tutti i moduli devono essere di versioni compatibili.All modules should be of compatible versions. Un modo semplice per assicurarsi che tutti i moduli siano compatibili consiste nell'usare le versioni più recenti di tutti i moduli.An easy way to ensure that all modules are compatible is to use the latest versions of all the modules.

Accedere a tutte le macchine virtuali di VMMap in cicloAccess all VMs of the VMMap in a loop

Usare il frammento di codice seguente per accedere a tutte le macchine virtuali di Microsoft VMMap in ciclo:Use the following code to loop across all VMs of the Microsoft VMMap:

$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
     }
 }

Nota

Il nome del gruppo di risorse e il nome del ruolo sono vuoti quando lo script è una pre-azione per un gruppo di avvio.The resource group name and role name values are empty when the script is a pre-action to a boot group. I valori vengono popolati solo se il failover della macchina virtuale di tale gruppo ha esito positivo.The values are populated only if the VM of that group succeeds in failover. Lo script è una post-azione del gruppo di avvio.The script is a post-action of the boot group.

Usare lo stesso runbook di Automazione in più piani di ripristinoUse the same Automation runbook in multiple recovery plans

È possibile usare un unico script in più piani di ripristino servendosi di variabili esterne.You can use a single script in multiple recovery plans by using external variables. È possibile usare le variabili di Automazione di Azure per archiviare i parametri da passare per l'esecuzione di un piano di ripristino.You can use Azure Automation variables to store parameters that you can pass for a recovery plan execution. Aggiungendo il nome del piano di ripristino come prefisso per la variabile, è possibile creare singole variabili per ogni piano di ripristino.By adding the recovery plan name as a prefix to the variable, you can create individual variables for each recovery plan. Usare quindi le variabili come parametri.Then, use the variables as parameters. È possibile modificare un parametro senza modificare lo script, cambiando comunque il funzionamento dello script.You can change a parameter without changing the script, but still change the way the script works.

Usare una variabile di tipo stringa semplice nello script di un runbookUse a simple string variable in a runbook script

In questo esempio, uno script accetta l'input di un gruppo di sicurezza di rete e lo applica alle macchine virtuali di un piano di ripristino.In this example, a script takes the input of a Network Security Group (NSG) and applies it to the VMs of a recovery plan.

Per fare in modo che lo script rilevi quale piano di ripristino è in esecuzione, usare il contesto del piano di ripristino:For the script to detect which recovery plan is running, use the recovery plan context:

workflow AddPublicIPAndNSG {
    param (
          [parameter(Mandatory=$false)]
          [Object]$RecoveryPlanContext
    )

    $RPName = $RecoveryPlanContext.RecoveryPlanName

Per applicare un gruppo di sicurezza di rete esistente, è necessario conoscere il nome e il gruppo di risorse del gruppo sicurezza di rete.To apply an existing NSG, you must know the NSG name and the NSG resource group name. Usare queste variabili come input per gli script dei piani di ripristino.Use these variables as inputs for recovery plan scripts. A tale scopo, creare due variabili negli asset dell'account di Automazione.To do this, create two variables in the Automation account assets. Aggiungere il nome del piano di ripristino per il quale si stanno creando i parametri come prefisso del nome della variabile.Add the name of the recovery plan that you are creating the parameters for as a prefix to the variable name.

  1. Creare una variabile per archiviare il nome del gruppo sicurezza di rete.Create a variable to store the NSG name. Aggiungere un prefisso al nome della variabile usando il nome del piano di ripristino.Add a prefix to the variable name by using the name of the recovery plan.

    Creare una variabile per il nome del gruppo sicurezza di rete

  2. Creare una variabile per archiviare il nome del gruppo di risorse del gruppo sicurezza di rete.Create a variable to store the NSG's resource group name. Aggiungere un prefisso al nome della variabile usando il nome del piano di ripristino.Add a prefix to the variable name by using the name of the recovery plan.

    Creare un nome del gruppo di risorse del gruppo sicurezza di rete

  3. Nello script usare il codice di riferimento seguente per ottenere i valori delle variabili:In the script, use the following reference code to get the variable values:

    $NSGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSG"
    $NSGRGValue = $RecoveryPlanContext.RecoveryPlanName + "-NSGRG"
    
    $NSGnameVar = Get-AutomationVariable -Name $NSGValue
    $RGnameVar = Get-AutomationVariable -Name $NSGRGValue
    
  4. Usare le variabili nel runbook per applicare il gruppo di sicurezza di rete all'interfaccia di rete della macchina virtuale di cui è stato eseguito il failover:Use 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
        }
    }
    

Creare variabili indipendenti per ogni piano di ripristino, in modo che sia possibile riutilizzare lo script.For each recovery plan, create independent variables so that you can reuse the script. Aggiungere un prefisso con il nome del piano di ripristino.Add a prefix by using the recovery plan name. Per uno script completo per questo scenario, vedere Add a public IP and NSG to VMs during test failover of a Site Recovery recovery plan (Aggiungere un indirizzo IP pubblico e un gruppo di sicurezza di rete alle macchina virtuali durante il failover di test di un piano di ripristino di Site Recovery).For a complete, end-to-end script for this scenario, see Add a public IP and NSG to VMs during test failover of a Site Recovery recovery plan.

Usare una variabile complessa per archiviare altre informazioniUse a complex variable to store more information

Si consideri uno scenario in cui si vuole usare un singolo script per attivare un indirizzo IP pubblico in macchine virtuali specifiche.Consider a scenario in which you want a single script to turn on a public IP on specific VMs. In un altro scenario potrebbe essere necessario applicare gruppi di sicurezza di rete diversi in diverse macchine virtuali e non in tutte le macchine virtuali.In another scenario, you might want to apply different NSGs on different VMs (not on all VMs). È possibile creare uno script riutilizzabile per qualsiasi piano di ripristino.You can make a script that is reusable for any recovery plan. Ogni piano di ripristino può avere un numero variabile di macchine virtuali.Each recovery plan can have a variable number of VMs. Ad esempio, un ripristino di SharePoint ha due front-end.For example, a SharePoint recovery has two front ends. Un'applicazione line-of-business (LOB) semplice ha un solo front-end.A basic line-of-business (LOB) application has only one front end. Non è possibile creare variabili separate per ogni piano di ripristino.You cannot create separate variables for each recovery plan.

Nell'esempio seguente viene usata una nuova tecnica e viene creata una variabile complessa negli asset dell'account di Automazione di Azure.In the following example, we use a new technique and create a complex variable in the Azure Automation account assets. Questo risultato si ottiene specificando più valori.You do this by specifying multiple values. Per eseguire questa procedura, è necessario usare Azure PowerShell:You must use Azure PowerShell to complete the following steps:

  1. In PowerShell accedere alla sottoscrizione di Azure:In PowerShell, sign in to your Azure subscription:

    login-azurermaccount
    $sub = Get-AzureRmSubscription -Name <SubscriptionName>
    $sub | Select-AzureRmSubscription
    
  2. Per archiviare i parametri, creare la variabile complessa usando il nome del piano di ripristino:To store the parameters, create the complex variable by using the name of the recovery plan:

    $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
    
  3. In questa variabile complessa VMDetails è l'ID della macchina virtuale protetta.In this complex variable, VMDetails is the VM ID for the protected VM. Per ottenere l'ID di macchina virtuale, visualizzare le proprietà della macchina virtuale nel portale di Azure.To get the VM ID, in the Azure portal, view the VM properties. Lo screenshot seguente mostra una variabile che archivia i dettagli di due macchine virtuali:The following screenshot shows a variable that stores the details of two VMs:

    Usare l'ID della macchina virtuale come GUID

  4. Usare questa variabile nel runbook.Use this variable in your runbook. Se il GUID della macchina virtuale indicato viene trovato nel contesto del piano di ripristino, è possibile applicare il gruppo di sicurezza di rete nella macchina virtuale:If the indicated VM GUID is found in the recovery plan context, apply the NSG on the VM:

    $VMDetailsObj = Get-AutomationVariable -Name $RecoveryPlanContext.RecoveryPlanName
    
  5. Nel runbook scorrere in ciclo le macchine virtuali del contesto del piano di ripristino.In your runbook, loop through the VMs of the recovery plan context. Controllare se la macchina virtuale esiste in $VMDetailsObj.Check whether the VM exists in $VMDetailsObj. Se esiste, accedere alle proprietà della variabile per applicare il gruppo di sicurezza di rete:If it exists, access the properties of the variable to apply the NSG:

        $VMinfo = $RecoveryPlanContext.VmMap | Get-Member | Where-Object MemberType -EQ NoteProperty | select -ExpandProperty Name
        $vmMap = $RecoveryPlanContext.VmMap
    
        foreach($VMID in $VMinfo) {
            Write-output $VMDetailsObj.value.$VMID
    
            if ($VMDetailsObj.value.$VMID -ne $Null) { #If the VM exists in the context, this will not b Null
                $VM = $vmMap.$VMID
                # Access the properties of the variable
                $NSGname = $VMDetailsObj.value.$VMID.'NSGName'
                $NSGRGname = $VMDetailsObj.value.$VMID.'NSGResourceGroupName'
    
                # Add code to apply the NSG properties to the VM
            }
        }
    

È possibile usare lo stesso script per piani di ripristino diversi.You can use the same script for different recovery plans. Immettere parametri diversi archiviando il valore corrispondente a un piano di ripristino in variabili diverse.Enter different parameters by storing the value that corresponds to a recovery plan in different variables.

Script di esempioSample scripts

Per distribuire gli script di esempio nell'account di Automazione, fare clic sul pulsante Distribuisci in Azure.To deploy sample scripts to your Automation account, click the Deploy to Azure button.

Distribuzione in AzureDeploy to Azure

Per un altro esempio, vedere il video seguenteFor another example, see the following video. che mostra come ripristinare un'applicazione di WordPress a due livelli in Azure:It demonstrates how to recover a two-tier WordPress application to Azure:

Risorse aggiuntiveAdditional resources