Gestire le pianificazioni in Automazione di Azure

Per pianificare un runbook in Automazione di Azure per l'avvio a un'ora specifica, è necessario collegarlo a una o più pianificazioni. È possibile configurare una pianificazione in modo che i runbook vengano eseguiti una sola volta oppure con cadenza oraria o giornaliera nel portale di Azure. È inoltre possibile pianificare un'esecuzione settimanale, mensile o in giorni specifici della settimana o del mese oppure in un determinato giorno del mese. Un runbook può essere collegato a più pianificazioni e a una pianificazione possono essere collegati più runbook.

Nota

Automazione di Azure supporta l'ora legale e ne tiene conto per pianificare in modo appropriato le operazioni di automazione.

Nota

Le pianificazioni non sono attualmente abilitate per le configurazioni di Azure Automation DSC.

Cmdlet di PowerShell usati per accedere alle pianificazioni

I cmdlet nella tabella seguente consentono di creare e gestire le pianificazioni di Automazione con PowerShell. Sono inclusi nei moduli Az.

Cmdlet Descrizione
Get-AzAutomationSchedule Recupera una pianificazione.
Get-AzAutomationScheduledRunbook Recupera i runbook pianificati.
New-AzAutomationSchedule Crea una nuova pianificazione.
Register-AzAutomationScheduledRunbook Associa un runbook a una pianificazione.
Remove-AzAutomationSchedule Rimuove una pianificazione.
Set-AzAutomationSchedule Imposta le proprietà di una pianificazione esistente.
Unregister-AzAutomationScheduledRunbook Annulla l'associazione di un runbook a una pianificazione.

Creare una programmazione

È possibile creare una nuova pianificazione per i runbook dal portale di Azure, con PowerShell o usando un modello di Azure Resource Manager (ARM). Per evitare conseguenze per i runbook e i processi che vengono automatizzati, è consigliabile prima di tutto testare tutti i runbook che includono pianificazioni collegate con un account di Automazione dedicato ai test. Un test convalida che i runbook pianificati continuino a funzionare correttamente. Se si verifica un problema, è possibile risolverlo e applicare eventuali modifiche necessarie prima di eseguire la migrazione della versione aggiornata del runbook in produzione.

Nota

L'account di Automazione non riceve automaticamente nuove versioni dei moduli a meno che tali versioni non siano state aggiornate manualmente selezionando l'opzione Aggiorna moduli di Azure in Moduli. Quando viene eseguito un nuovo processo pianificato, Automazione di Azure usa i moduli più recenti nell'account di automazione.

Creare una nuova pianificazione nel portale di Azure

  1. Nel riquadro sinistro dell'account di Automazione selezionare Pianificazioni in Risorse condivise.

  2. Nella pagina Pianificazioni selezionare Aggiungi una pianificazione.

  3. Nella pagina Nuova pianificazione immettere un nome e, facoltativamente, immettere una descrizione per la nuova pianificazione.

    Nota

    Le pianificazioni di automazione non supportano attualmente l'uso di caratteri speciali nel nome della pianificazione.

  4. Selezionare se la pianificazione viene eseguita una sola volta o in base a una pianificazione ricorsiva selezionando Una volta o Ricorrente. Se si seleziona Una sola volta specificare un'ora di inizio e quindi selezionare Crea. Se si seleziona Ricorrente specificare un'ora di inizio. Per Ricorre ogni selezionare la frequenza con cui si vuole ripetere l'esecuzione del runbook. Selezionare ora, giorno, settimana o mese.

    • Se si seleziona Settimana verranno visualizzati i giorni della settimana tra cui scegliere. Selezionare tutti i giorni necessari. La prima esecuzione della pianificazione avverrà il primo giorno selezionato all'ora di inizio. Ad esempio, per scegliere una pianificazione nel weekend, selezionare sabato e domenica.

    Setting weekend recurring schedule

    • Se si seleziona Mese sono disponibili opzioni diverse. In Occorrenze mensili selezionare Giorni del mese oppure Giorni della settimana. Se si seleziona Giorni del mese viene visualizzato un calendario in cui è possibile scegliere il numero di giorni desiderato. Se si sceglie una data, ad esempio il 31, che non è contemplata nel mese corrente, la pianificazione non verrà eseguita. Se si vuole che la pianificazione venga eseguita l'ultimo giorno, selezionare in Esegui nell'ultimo giorno del mese. Se si seleziona Giorni della settimana viene visualizzata l'opzione Ricorre ogni. Selezionare Primo, Secondo, Terzo, Quarto o Ultimo. Scegliere infine il giorno della ripetizione.

    Monthly schedule on first, fifteenth, and last day of the month

  5. Al termine selezionare Crea.

Creare una nuova pianificazione con PowerShell

Usare il cmdlet New-AzAutomationSchedule per creare le pianificazioni. Specificare l'ora di inizio per la pianificazione e la frequenza di esecuzione. Negli esempi seguenti viene illustrato come creare diversi scenari di pianificazione.

Nota

Le pianificazioni di automazione non supportano attualmente l'uso di caratteri speciali nel nome della pianificazione.

Creare una pianificazione occasionale

Nell'esempio seguente viene creata una pianificazione occasionale.

$TimeZone = ([System.TimeZoneInfo]::Local).Id
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Schedule01" -StartTime "23:00" -OneTime -ResourceGroupName "ResourceGroup01" -TimeZone $TimeZone

Creare una pianificazione ricorrente

Nell'esempio seguente viene illustrato come creare una pianificazione ricorrente che viene eseguita ogni giorno alle 13:00 per un anno.

$StartTime = Get-Date "13:00:00"
$EndTime = $StartTime.AddYears(1)
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Schedule02" -StartTime $StartTime -ExpiryTime $EndTime -DayInterval 1 -ResourceGroupName "ResourceGroup01"

Creare una pianificazione ricorrente settimanale

Nell'esempio seguente viene illustrato come creare una pianificazione settimanale eseguita solo nei giorni feriali.

$StartTime = (Get-Date "13:00:00").AddDays(1)
[System.DayOfWeek[]]$WeekDays = @([System.DayOfWeek]::Monday..[System.DayOfWeek]::Friday)
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Schedule03" -StartTime $StartTime -WeekInterval 1 -DaysOfWeek $WeekDays -ResourceGroupName "ResourceGroup01"

Crea una pianificazione ricorrente settimanale per i fine settimana

Nell'esempio seguente viene illustrato come creare una pianificazione settimanale eseguita solo nei fine settimana.

$StartTime = (Get-Date "18:00:00").AddDays(1)
[System.DayOfWeek[]]$WeekendDays = @([System.DayOfWeek]::Saturday,[System.DayOfWeek]::Sunday)
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Weekends 6PM" -StartTime $StartTime -WeekInterval 1 -DaysOfWeek $WeekendDays -ResourceGroupName "ResourceGroup01"

Creare una pianificazione ricorrente per il primo, il quindicesimo e l'ultimo giorno del mese

Nell'esempio seguente viene illustrato come creare una pianificazione ricorrente eseguita il primo, il quindicesimo e l'ultimo giorno del mese.

$StartTime = (Get-Date "18:00:00").AddDays(1)
New-AzAutomationSchedule -AutomationAccountName "TestAzureAuto" -Name "1st, 15th and Last" -StartTime $StartTime -DaysOfMonth @("One", "Fifteenth", "Last") -ResourceGroupName "TestAzureAuto" -MonthInterval 1

Creare una pianificazione con un modello di Resource Manager

In questo esempio viene usato un modello di Automation Resource Manager (ARM) che crea una nuova pianificazione del processo. Per informazioni generali su questo modello per gestire le pianificazioni dei processi di Automazione, vedere Informazioni di riferimento sul modello Microsoft.Automation AutomationAccounts/jobSchedules.

Copiare questo file di modello in un editor di testo:

{
  "name": "5d5f3a05-111d-4892-8dcc-9064fa591b96",
  "type": "Microsoft.Automation/automationAccounts/jobSchedules",
  "apiVersion": "2015-10-31",
  "properties": {
    "schedule": {
      "name": "scheduleName"
    },
    "runbook": {
      "name": "runbookName"
    },
    "runOn": "hybridWorkerGroup",
    "parameters": {}
  }
}

Modificare i valori dei parametri seguenti e salvare il modello come file JSON:

  • Nome oggetto pianificazione processo: un GUID (Identificatore univoco globale) viene usato come nome dell'oggetto pianificazione processo.

    Importante

    Per ogni pianificazione del processo distribuita con un modello di Resource Manager, il GUID deve essere univoco. Anche se si prevede di riprogrammare una pianificazione esistente, è necessario modificare il GUID. Questo vale anche se in precedenza è stata eliminata una pianificazione del processo esistente creata con lo stesso modello. Il riutilizzo dello stesso GUID comporta una distribuzione non riuscita.

    Sono disponibili servizi online che possono generare automaticamente un nuovo GUID, ad esempio questo generatore di GUID online gratuito.

  • Nome pianificazione: rappresenta il nome della pianificazione del processo di automazione che verrà collegata al runbook specificato.

  • Nome runbook: rappresenta il nome del runbook di Automazione a cui deve essere associata la pianificazione del processo.

Dopo aver salvato il file, è possibile creare la pianificazione del processo del runbook con il comando di PowerShell seguente. Il comando usa il TemplateFile parametro per specificare il percorso e il nome file del modello.

New-AzResourceGroupDeployment -ResourceGroupName "ContosoEngineering" -TemplateFile "<path>\RunbookJobSchedule.json"

Un runbook può essere collegato a più pianificazioni e a una pianificazione possono essere collegati più runbook. Se un runbook prevede parametri è possibile fornire valori per tali parametri. È necessario specificare i valori per tutti i parametri obbligatori, mentre è possibile scegliere se specificare o meno i valori per i parametri facoltativi. Questi valori vengono usati ogni volta che il runbook viene avviato dalla pianificazione. È possibile collegare lo stesso runbook a un'altra pianificazione e specificare valori diversi per i parametri.

  1. Dall'account di Automazione nel portale di Azure selezionare Runbook in Automazione processi.
  2. Selezionare il nome del runbook da pianificare.
  3. Se il runbook non è attualmente collegato a una pianificazione, è possibile creare una nuova pianificazione o collegarsi a una pianificazione esistente.
  4. Se il runbook include parametri, è possibile selezionare l'opzione Modifica le impostazioni di esecuzione (impostazione predefinita: Azure). Viene visualizzato il riquadro Parametri in cui è possibile immettere le informazioni sui parametri.

È possibile usare il cmdlet Register-AzAutomationScheduledRunbook per collegare una pianificazione. È possibile specificare i valori per i parametri del runbook con il parametro Parameters. Per altre informazioni su come specificare i valori dei parametri, vedere Avvio di un runbook in Automazione di Azure. L'esempio seguente illustra come collegare una pianificazione a un runbook usando un cmdlet di Azure Resource Manager con parametri.

$automationAccountName = "MyAutomationAccount"
$runbookName = "Test-Runbook"
$scheduleName = "Sample-DailySchedule"
$params = @{"FirstName"="Joe";"LastName"="Smith";"RepeatCount"=2;"Show"=$true}
Register-AzAutomationScheduledRunbook -AutomationAccountName $automationAccountName `
-Name $runbookName -ScheduleName $scheduleName -Parameters $params `
-ResourceGroupName "ResourceGroup01"

Pianificare l'esecuzione più frequente dei runbook

L'intervallo più frequente per il quale è possibile configurare una pianificazione in Automazione di Azure è un'ora. Se sono necessarie pianificazioni da eseguire più frequentemente rispetto a questa, sono disponibili due opzioni:

  • Creare un webhook per il runbook e usare App per la logica di Azure per chiamare il webhook. App per la logica di Azure offre una granularità più dettagliata per definire una pianificazione.

  • Creare quattro pianificazioni che iniziano tutte entro 15 minuti l'una dall'altra e vengono eseguite una volta ogni ora. Questo scenario consente l'esecuzione del runbook ogni 15 minuti con pianificazioni diverse.

Disabilitare una pianificazione

Quando si disabilita una pianificazione, i runbook a essa collegati non vengono più eseguiti in base a tale pianificazione. È possibile disabilitare manualmente una pianificazione o impostare un'ora di scadenza per le pianificazioni con una frequenza durante la fase di creazione. Quando viene raggiunta l'ora di scadenza, la pianificazione viene disabilitata.

Disabilitare una pianificazione dal portale di Azure

  1. Nel riquadro sinistro dell'account di Automazione selezionare Pianificazioni in Risorse condivise.
  2. Selezionare il nome di una pianificazione per aprire il rispettivo riquadro dei dettagli.
  3. Impostare Abilitata su No.

Nota

Se si vuole disabilitare una pianificazione con un'ora di inizio nel passato, è necessario modificare la data di inizio impostando un'ora nel futuro prima di salvarla.

Disabilitare una pianificazione con PowerShell

È possibile usare il cmdlet Set-AzAutomationSchedule per modificare le proprietà di una pianificazione esistente. Per disabilitare la pianificazione, specificare false per il parametro IsEnabled.

L'esempio seguente illustra come disabilitare una pianificazione per un runbook usando un cmdlet di Azure Resource Manager.

$automationAccountName = "MyAutomationAccount"
$scheduleName = "Sample-MonthlyDaysOfMonthSchedule"
Set-AzAutomationSchedule -AutomationAccountName $automationAccountName `
-Name $scheduleName -IsEnabled $false -ResourceGroupName "ResourceGroup01"

Rimuovere una pianificazione

Quando si è pronti per rimuovere le pianificazioni, è possibile usare il portale di Azure o PowerShell. Tenere presente che è possibile rimuovere solo una pianificazione che è stata disabilitata, come descritto nella sezione precedente.

Rimuovere una pianificazione usando il portale di Azure

  1. Nel riquadro sinistro dell'account di Automazione selezionare Pianificazioni in Risorse condivise.
  2. Selezionare il nome di una pianificazione per aprire il rispettivo riquadro dei dettagli.
  3. Fai clic su Elimina.

Rimuovere una pianificazione con PowerShell

È possibile usare il cmdlet Remove-AzAutomationSchedule come illustrato di seguito per eliminare una pianificazione esistente.

$automationAccountName = "MyAutomationAccount"
$scheduleName = "Sample-MonthlyDaysOfMonthSchedule"
Remove-AzAutomationSchedule -AutomationAccountName $automationAccountName `
-Name $scheduleName -ResourceGroupName "ResourceGroup01"

Passaggi successivi