Gestione degli errori nei runbook grafici di Automazione di AzureError handling in Azure Automation graphical runbooks

Un elemento fondamentale della progettazione di un runbook è costituito dall'identificazione dei diversi problemi che potrebbero presentarsi in un runbook,A key runbook design principal to consider is identifying different issues that a runbook might experience. ad esempio problemi relativi a esito positivo o negativo, stati di errore previsti e condizioni di errori imprevisti.These issues can include success, expected error states, and unexpected error conditions.

I runbook devono includere logica di gestione degli errori.Runbooks should include error handling. Per convalidare l'output di un'attività o gestire un errore con runbook grafici, è possibile usare un'attività del codice di Windows PowerShell, definire la logica condizionale nel collegamento di output dell'attività o applicare un altro metodo.To validate the output of an activity or handle an error with graphical runbooks, you could use a Windows PowerShell code activity, define conditional logic on the output link of the activity, or apply another method.

Se è presente un errore non irreversibile che si verifica con un'attività del runbook, eventuali attività successive vengono elaborate indipendentemente dall'errore.Often, if there is a non-terminating error that occurs with a runbook activity, any activity that follows is processed regardless of the error. È probabile che l'errore generi un'eccezione, ma è comunque consentita l'esecuzione dell'attività successiva.The error is likely to generate an exception, but the next activity is still allowed to run. PowerShell è stato progettato in questo modo per la gestione degli errori.This is the way that PowerShell is designed to handle errors.

Durante l'esecuzione possono verificarsi errori PowerShell di tipo fatale o non fatale.The types of PowerShell errors that can occur during execution are terminating or non-terminating. Ecco le differenze tra errori irreversibili e non irreversibili:The differences between terminating and non-terminating errors are as follows:

  • Errore irreversibile: errore grave durante l'esecuzione, che arresta completamente il comando o l'esecuzione dello script.Terminating error: A serious error during execution that halts the command (or script execution) completely. Gli esempi includono cmdlet inesistenti, errori di sintassi che impediscono l'esecuzione di un cmdlet o altri errori irreversibili.Examples include non-existent cmdlets, syntax errors that prevent a cmdlet from running, or other fatal errors.

  • Errore non irreversibili: errore non grave che consente di continuare comunque l'esecuzione.Non-terminating error: A non-serious error that allows execution to continue despite the failure. Gli esempi includono errori operativi come errori di file non trovati e problemi relativi alle autorizzazioni.Examples include operational errors such as file not found errors and permissions problems.

I runbook grafici di Automazione di Azure sono stati migliorati con la capacità di includere la gestione degli errori.Azure Automation graphical runbooks have been improved with the capability to include error handling. È ora possibile trasformare le eccezioni in errori non irreversibili e creare collegamenti di errori tra le attività.You can now turn exceptions into non-terminating errors and create error links between activities. Questo processo consente a un autore di runbook di rilevare gli errori e gestire condizioni realizzate o impreviste.This process allows a runbook author to catch errors and manage realized or unexpected conditions.

Quando usare la gestione degli erroriWhen to use error handling

Se si verifica un'attività critica che genera un'errore o un'eccezione, è importante evitare l'elaborazione dell'attività successiva del runbook e gestire l'errore in modo appropriato.Whenever there is a critical activity that throws an error or exception, it's important to prevent the next activity in your runbook from processing and to handle the error appropriately. Questo è essenziale soprattutto quando i runbook supportano un processo correlato alle operazioni aziendali o di servizio.This is especially critical when your runbooks are supporting a business or service operations process.

Per ogni attività che può generare un errore, l'autore del runbook può aggiungere un collegamento di errore che punta a qualsiasi altra attività.For each activity that can produce an error, the runbook author can add an error link pointing to any other activity. L'attività di destinazione può essere di qualsiasi tipo, incluse attività di codice, chiamata di un cmdlet, chiamata di un altro runbook e così via.The destination activity can be of any type, including code activities, invoking a cmdlet, invoking another runbook, and so on.

L'attività di destinazione può avere anche collegamenti in uscita,In addition, the destination activity can also have outgoing links. che possono essere collegamenti normali o collegamenti di errore.These links can be regular links or error links. Ciò significa che l'autore del runbook può implementare logica complessa per la gestione degli errori senza dovere usare alcuna attività di codice.This means the runbook author can implement complex error-handling logic without resorting to a code activity. La procedura consigliata comporta la creazione di un runbook dedicato per la gestione degli errori con funzionalità comuni, ma questa operazione non è obbligatoria.The recommended practice is to create a dedicated error-handling runbook with common functionality, but it's not mandatory. La logica di gestione degli errori in un'attività di codice di PowerShell non è l'unica opzione.Error-handling logic in a PowerShell code activity it isn't the only option.

Si consideri ad esempio un runbook che prova ad avviare una macchina virtuale e installarvi un'applicazione.For example, consider a runbook that tries to start a VM and install an application on it. Se la macchina virtuale non viene avviata correttamente, vengono eseguite due azioni:If the VM doesn't start correctly, it performs two actions:

  1. Invio di una notifica relativa al problema.It sends a notification about this problem.
  2. Avvio di un altro runbook che effettua automaticamente il provisioning di una nuova macchina virtuale.It starts another runbook that automatically provisions a new VM instead.

Una soluzione consiste nell'avere un collegamento di errore che fa riferimento a un'attività che gestisce il primo passaggio.One solution is to have an error link pointing to an activity that handles step one. È ad esempio possibile connettere il cmdlet Write-Warning a un'attività per il passaggio due, ad esempio il cmdlet Start-AzureRmAutomationRunbook.For example, you could connect the Write-Warning cmdlet to an activity for step two, such as the Start-AzureRmAutomationRunbook cmdlet.

Si potrebbe anche generalizzare questo comportamento per usarlo in diversi runbook, inserendo le due attività in un runbook di gestione degli errori separato e seguendo le indicazioni riportate in precedenza.You could also generalize this behavior for use in many runbooks by putting these two activities in a separate error handling runbook and following the guidance suggested earlier. Prima di chiamare tale runbook di gestione degli errori, si potrebbe creare un messaggio personalizzato dai dati del runbook originale e quindi passarlo come parametro al runbook di gestione degli errori.Before calling this error-handling runbook, you could construct a custom message from the data in the original runbook, and then pass it as a parameter to the error-handling runbook.

Come usare la gestione degli erroriHow to use error handling

Ogni attività ha un'impostazione di configurazione che trasforma le eccezioni in errori non irreversibili.Each activity has a configuration setting that turns exceptions into non-terminating errors. Per impostazione predefinita, questa impostazione è disabilitata.By default, this setting is disabled. È consigliabile abilitare questa impostazione su qualsiasi attività in cui si vogliono gestire gli errori.We recommend that you enable this setting on any activity where you want to handle errors.

Abilitando questa configurazione, gli errori sia irreversibili che non irreversibili nell'attività vengono trattati come errori non irreversibili e possono essere gestiti con un collegamento di errore.By enabling this configuration, you are assuring that both terminating and non-terminating errors in the activity are handled as non-terminating errors, and can be handled with an error link.

Dopo aver configurato tale impostazione, si creano le attività che gestiscono l'errore.After configuring this setting, you create an activity that handles the error. Se un'attività genera un errore, vengono seguiti i collegamenti di errore in uscita e non i collegamenti regolari a prescindere dal fatto che l'attività abbia generato anche output regolare.If an activity produces any error, then the outgoing error links are followed, and the regular links are not, even if the activity produces regular output as well.

Esempio di collegamento di errore in un runbook di Automazione

Nell'esempio seguente un runbook recupera una variabile che include il nome del computer di una macchina virtuale,In the following example, a runbook retrieves a variable that contains the computer name of a virtual machine. quindi prova ad avviare la macchina virtuale con l'attività successiva.It then attempts to start the virtual machine with the next activity.

Esempio di gestione degli errori in un runbook di Automazione

Le attività Get-AutomationVariable e Start-AzureRmVm sono configurate per convertire le eccezioni in errori.The Get-AutomationVariable activity and Start-AzureRmVm are configured to convert exceptions to errors. Se si verificano problemi nel recupero della variabile o nell'avvio della VM, vengono generati errori.If there are problems getting the variable or starting the VM, then errors are generated.

Impostazioni delle attività di gestione degli errori in un runbook di AutomazioneAutomation runbook error-handling activity settings

I collegamenti di errore passano da queste attività a una singola attività di gestione degli errori (attività di codice).Error links flow from these activities to a single error management activity (a code activity). Questa attività viene configurata con una semplice espressione di PowerShell che usa la parola chiave Throw per arrestare l'elaborazione, insieme a $Error.Exception.Message per ottenere il messaggio che illustra l'eccezione corrente.This activity is configured with a simple PowerShell expression that uses the Throw keyword to stop processing, along with $Error.Exception.Message to get the message that describes the current exception.

Esempio di codice di gestione degli errori in un runbook di AutomazioneAutomation runbook error-handling code example

Passaggi successiviNext steps