Gerenciar agendamentos na Automação do Azure

Para agendar um runbook na Automação do Azure para iniciar em um horário específico, você deve vinculá-lo a uma ou mais agendas. Um agendamento pode ser configurado para ser executado uma vez ou de forma recorrente a cada hora ou diariamente para runbooks no portal do Azure. Você também pode agendá-los para semanal, mensal, dias específicos da semana ou dias do mês ou um determinado dia do mês. Um runbook pode ser vinculado a várias agendas, e uma agenda pode ter vários runbooks vinculados a ela.

Observação

A Automação do Azure dá suporte a horário de verão, que é agendado adequadamente para operações de automação.

Observação

Atualmente, os agendamentos não estão habilitados para as configurações de DSC de Automação do Azure.

Cmdlets do PowerShell usados para acessar agendamentos

Os cmdlets na tabela a seguir são usados para criar e gerenciar agendamentos de Automação com o PowerShell. Eles são fornecidos como parte de módulos Az.

Cmdlets Descrição
Get-AzAutomationSchedule Recupera uma agenda.
Get-AzAutomationScheduledRunbook Recupera runbooks agendados.
New-AzAutomationSchedule Cria uma nova agenda.
Register-AzAutomationScheduledRunbook Associa um runbook a uma agenda.
Remove-AzAutomationSchedule Remove uma agenda.
Set-AzAutomationSchedule Define as propriedades de uma agenda existente.
Unregister-AzAutomationScheduledRunbook Dissocia um runbook de uma agenda.

Criar um agendamento

Você pode criar um novo agendamento para seus runbooks por meio do portal do Azure, do PowerShell ou de um modelo do ARM (Azure Resource Manager). Para evitar impactos em seus runbooks e os processos que eles automatizam, primeiro você deve testar quaisquer runbooks que tenham agendamentos vinculados a uma conta de Automação dedicada a testes. Um teste valida que seus runbooks agendados continuam funcionando corretamente. Se encontrar algum problema, você poderá solucionar e aplicar as alterações necessárias antes de migrar a versão atualizada do runbook para produção.

Observação

Sua conta de Automação não recebe automaticamente nenhuma nova versão dos módulos, a menos que você os tenha atualizado manualmente selecionando a opção Atualizar módulos do Azure em Módulos. A Automação do Azure usa os módulos mais recentes de sua conta de Automação quando um novo trabalho agendado é executado.

Para criar um novo agendamento no portal do Azure

  1. Em sua conta de automação, no painel esquerdo, selecione Agendamentos em Recursos compartilhados.

  2. Selecione Adicionar um agendamento na página Agendamentos.

  3. Na página Novo agendamento, digite um nome e insira uma descrição do novo agendamento (opcional).

    Observação

    Atualmente, não há suporte para o uso de caracteres especiais no nome dos agendamentos de automação.

  4. Escolha se o agendamento é executado uma vez ou de forma recorrente selecionando Uma vez ou Recorrente. Se você selecionar Uma vez, especifique uma hora de início e clique em Criar. Se você selecionar Recorrente, especifique uma hora de início. Para Repetir a cada, selecione com que frequência você deseja que o runbook se repita. Selecione por hora, dia, semana ou mês.

    • Se você selecionar Semana, os dias da semana serão apresentados para sua escolha. Selecione quantos dias você desejar. A primeira execução da agenda de ocorrerá no primeiro dia selecionado após a hora de início. Por exemplo, para escolher um agendamento de fim de semana, selecione sábado e domingo.

    Setting weekend recurring schedule

    • Se você selecionar Mês, terá diferentes opções. Para a opção Ocorrências mensais, selecione Dias do mês ou Dias da semana. Se você selecionar Dias do mês, você verá um calendário onde poderá escolher quantos dias quiser. Se você escolher uma data, como o 31º dia, que não ocorre no mês atual, a programação não será executada. Se você quiser que o agendamento seja executado no último dia, escolha Sim em Executar no último dia do mês. Se você selecionar Dias da semana, a opção Repetir a cada será exibida. Escolher primeira, segundo, terceira, quarto, ou último. Finalmente, escolha um dia para repetir.

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

  5. Ao terminar, selecione Criar.

Criar um novo agendamento com o PowerShell

Use o cmdlet New-AzAutomationSchedule para criar agendamentos. Especifique a hora de início para a agenda e a frequência de execução. Os exemplos a seguir mostram como criar vários cenários de agendamento diferentes.

Observação

Atualmente, não há suporte para o uso de caracteres especiais no nome dos agendamentos de automação.

Criar um agendamento único

O exemplo a seguir cria um agendamento único.

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

Criar um agendamento recorrente

O exemplo a seguir mostra como criar um agendamento recorrente que é executado todos os dias às 13:00 por um ano.

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

Criar um agendamento recorrente semanal

O exemplo a seguir mostra como criar um agendamento semanal que é executado somente em dias da semana.

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

Criar um agendamento recorrente semanal para fins de semana

O exemplo a seguir mostra como criar um agendamento semanal que é executado somente em fins de semana.

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

Criar um agendamento recorrente para o primeiro, décimo-quinto e último dia do mês

O exemplo a seguir mostra como criar um agendamento recorrente que é executado no primeiro, décimo-quinto e no último dia de um mês.

$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

Criar um agendamento com um modelo do Resource Manager

Neste exemplo, usamos um modelo de automação do ARM (Azure Resource Manager) que cria um novo agendamento de trabalho. Para saber mais sobre este modelo a fim de gerenciar agendamentos de trabalho de automação, consulte Referência de modelo Microsoft.Automation automationAccounts/jobSchedules.

Copie este arquivo de modelo em um editor de texto:

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

Edite os seguintes valores de parâmetro e salve o modelo como um arquivo JSON:

  • Nome do objeto de agendamento de trabalho: um GUID (identificador global exclusivo) é usado como o nome do objeto de agendamento de trabalho.

    Importante

    O GUID deve ser exclusivo para cada agendamento de trabalho implantado com um modelo do ARM. Mesmo ao reagendar um agendamento existente, é preciso alterar o GUID. Isso se aplica mesmo ao ter excluído anteriormente um agendamento de trabalho existente que foi criado com o mesmo modelo. Reutilizar o mesmo GUID resulta em uma implantação com falha.

    Há serviços online que podem gerar um novo GUID para você, como este gerador de GUID online gratuito.

  • Nome do agendamento: representa o nome do agendamento de trabalho de automação que será vinculado ao runbook especificado.

  • Nome do runbook: representa o nome do runbook de automação ao qual o agendamento de trabalho deve ser associado.

Depois de salvar o arquivo, crie o agendamento de trabalho do runbook com o comando do PowerShell a seguir. Esse comando usa o parâmetro TemplateFile para especificar o caminho e o nome do arquivo do modelo.

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

Um runbook pode ser vinculado a várias agendas, e uma agenda pode ter vários runbooks vinculados a ela. Se um runbook tiver parâmetros, você poderá fornecer valores para eles. Você precisa fornecer valores para todos os parâmetros obrigatórios e também pode fornecer valores para os opcionais. Esses valores são usados sempre que o runbook é iniciado por essa agenda. Você pode anexar o mesmo runbook a outra agenda e especificar valores de parâmetro diferentes.

  1. No portal do Azure, na sua conta de automação, selecione Runbooks em Automação de processos.
  2. Selecione o nome do runbook para agendar.
  3. Se o runbook não estiver vinculado atualmente a um agendamento, você terá a opção de criar um novo agendamento ou de vincular a um agendamento existente.
  4. Se o runbook tiver parâmetros, você poderá selecionar a opção Modificar configurações de execução (padrão: Azure) e o painel Parâmetros será exibido. Você pode inserir informações de parâmetro aqui.

Use o cmdlet Register-AzAutomationScheduledRunbook para vincular um agendamento. Você pode especificar valores para os parâmetros do runbook com o parâmetro Parameters. Para mais informações para especificar os valores do parâmetro, consulte Como iniciar um runbook na Automação do Azure. O exemplo a seguir mostra como vincular um agendamento a um runbook usando um cmdlet do Azure Resource Manager com parâmetros.

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

Agendar runbooks para serem executados com mais frequência

O intervalo mais frequente para o qual a Automação do Azure pode ser configurada é uma hora. Se você precisar de agendamentos para executar com mais frequência do que isso, há duas opções:

  • Criar um webhook para o runbook e usar o Aplicativos Lógicos do Azure para chamar o webhook. Os Aplicativos Lógicos do Azure fornecem granularidade mais refinada para definir um agendamento.

  • Crie quatro agendamentos que iniciam em intervalos de 15 minutos e são executados a cada hora. Este cenário permite que o runbook seja executado a cada 15 minutos com as diferentes agendas.

Desabilitar um agendamento

Quando você desabilita uma agenda, qualquer runbook vinculados a ela deixam de ser executados segundo ela. Você pode desabilitar manualmente uma agenda ou definir uma hora de expiração para agendas com uma frequência ao criá-las. Quando o tempo de expiração é atingido, a agenda é desabilitada.

Desabilitar um agendamento no portal do Azure

  1. Em sua conta de automação, no painel esquerdo, selecione Agendamentos em Recursos compartilhados.
  2. Clique no nome de um agendamento para abrir o painel de detalhes.
  3. Altere Habilitado para Não.

Observação

Se desejar desabilitar um agendamento que tenha uma hora de início no passado, você deverá alterar a data de início para uma hora no futuro antes de salvá-la.

Desabilitar um agendamento com o PowerShell

Use o cmdlet Set-AzAutomationSchedule para alterar as propriedades de um agendamento existente. Para desabilitar o agendamento, especifique false para o parâmetro IsEnabled.

O exemplo a seguir mostra como desabilitar um agendamento para um runbook usando um cmdlet do Azure Resource Manager.

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

Remover um agendamento

Quando estiver tudo pronto para remover seus agendamentos, você poderá usar o portal do Azure ou o PowerShell. Lembre-se de que você só pode remover um agendamento desabilitado conforme descrito na seção anterior.

Remover um agendamento usando o portal do Azure

  1. Em sua conta de automação, no painel esquerdo, selecione Agendamentos em Recursos compartilhados.
  2. Clique no nome de um agendamento para abrir o painel de detalhes.
  3. Clique em Excluir.

Remover um agendamento com o PowerShell

Você pode usar o cmdlet Remove-AzAutomationSchedule como mostrado abaixo, para excluir um agendamento.

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

Próximas etapas