Управление расписаниями в службе автоматизации Azure

Чтобы запускать модуль Runbook в определенное время с помощью расписания в службе автоматизации Azure, его необходимо привязать к одному или нескольким расписаниям. На портале Azure расписание для модулей runbook можно настроить для однократного, ежечасного или ежедневного выполнения. Можно также запланировать еженедельное и ежемесячное выполнение, а также выполнение в определенные дни недели или месяца. Один модуль Runbook может быть связан с несколькими расписаниями, и одно расписание может иметь несколько привязанных модулей Runbook.

Примечание.

Служба автоматизации Azure поддерживает летнее время и учитывает его в расписании.

Примечание.

В настоящее время расписания не поддерживают конфигурации Azure Automation DSC.

Командлеты PowerShell, используемые для доступа к расписаниям

Командлеты, представленные в следующей таблице, используются для создания расписаний автоматизации с помощью PowerShell и управления ими. Они поставляются в составе модулей Az.

Командлеты Description
Get-AzAutomationSchedule Получает расписание.
Get-AzAutomationScheduledRunbook Получает расписание модулей Runbook.
New-AzAutomationSchedule Создает новое расписание.
Register-AzAutomationScheduledRunbook Связывает Runbook с расписанием.
Remove-AzAutomationSchedule Удаляет расписание.
Set-AzAutomationSchedule Задает свойства для существующего расписания.
Unregister-AzAutomationScheduledRunbook Отменяет связь Runbook с расписанием.

Создание графика

Вы можете создать новое расписание для модулей runbook из портала Azure, с помощью PowerShell или шаблона Azure Resource Manager (ARM). Чтобы избежать влияния на модули runbook и автоматизируемые ими процессы, необходимо сначала проверить все модули runbook, которые имеют связанные расписания, используя учетную запись автоматизации, предназначенную для тестирования. Тест проверяет, продолжают ли запланированные модули runbook работать правильно. Если вы видите проблему, вы можете устранить неполадки и применить все необходимые изменения перед переносом обновленной версии runbook в рабочую среду.

Примечание.

Учетная запись автоматизации не получает новые версии модулей автоматически, если их не обновить вручную, выбрав параметр Обновить модули Azure в области Модули. При запуске нового запланированного задания служба автоматизации Azure использует модули последней версии в вашей учетной записи службы автоматизации.

Создание нового расписания на портале Azure

  1. В учетной записи службы автоматизации в области слева выберите Расписание в разделе Общие ресурсы.

  2. На странице Расписания выберите Добавить расписание.

  3. На странице Новое расписание введите имя и при желании описание нового расписания.

    Примечание.

    В настоящее время расписания автоматизации не поддерживают использование специальных символов в имени расписания.

  4. Выберите режим выполнения расписания: Однократно или Периодически. Если вы выбрали режим Однократно, то укажите время начала и нажмите кнопку Создать. При выборе значения Периодически укажите время начала. Для значения Повторять каждые выберите частоту повторения модуля Runbook. Выберите час, день, неделю или месяц.

    • Если вы выбрали Неделя, отобразится список дней недели на выбор. Выберите столько дней, сколько требуется. Первый запуск расписания будет происходить на первый день после времени начала. Например, чтобы выбрать расписание для выходных дней, выберите "Суббота" и "Воскресенье".

    Setting weekend recurring schedule

    • Если вы выбрали Месяц, у вас есть различные варианты. В разделе Ежемесячное повторение выберите дни месяца или дни недели. Если вы выбрали дни месяца, появится календарь, в котором можно выбрать любое количество дней. Если выбранная дата, например 31, не наступает в текущем месяце, расписание не будет выполняться. Чтобы запустить его в последний день, выберите Да в поле Последний день месяца. Если вы выберете дни недели, появляется параметр Повторять каждые. Выберите первый, второй, третий, четвертый, или последний. Наконец, выберите день для повторения.

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

  5. По завершении выберите Создать.

Создание расписания с помощью PowerShell

Используйте командлет New-AzAutomationSchedule для создания расписаний. Укажите для расписания время начала и частоту выполнения. В следующих примерах показано, как создать множество различных сценариев расписания.

Примечание.

В настоящее время расписания автоматизации не поддерживают использование специальных символов в имени расписания.

Создание разового расписания

В следующем примере создается разовое расписание

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

Создание повторяющегося расписания

В следующем примере показано, как создать повторяющееся расписание, которое выполняется каждый день в 13:00 в течение года.

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

Создание еженедельного повторяющегося расписания

В следующем примере показано, как создать еженедельное расписание, выполняемое только по рабочим дням.

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

Создание еженедельного повторяющегося расписания по выходным дням

В следующем примере показано, как создать еженедельное расписание, выполняемое только по выходным дням.

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

Создание повторяющегося расписания для первого, пятнадцатого и последнего дней месяца

В следующем примере показано, как создать повторяющееся расписание, выполняемое в первый, пятнадцатый и последний день месяца.

$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

Создание расписания с помощью шаблона Resource Manager

В этом примере мы используем шаблон Automation Resource Manager (ARM), который создает новое расписание заданий. Общие сведения об этом шаблоне для управления расписаниями заданий службы автоматизации см. в справочнике по шаблонам Microsoft.Automation automationAccounts/jobSchedules.

Скопируйте этот файл шаблона в текстовый редактор:

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

Измените следующие значения параметров и сохраните шаблон как JSON-файл:

  • Имя объекта расписания задания: идентификатор GUID (глобальный уникальный идентификатор) используется в качестве имени объекта расписания задания.

    Важно!

    Для каждого расписания заданий, развернутого с помощью шаблона ARM, идентификатор GUID должен быть уникальным. Даже при перепланировании существующего расписания идентификатор GUID необходимо менять. Это применимо даже в том случае, если ранее было удалено существующее расписание заданий, созданное с помощью того же шаблона. Повторное использование одного и того же идентификатора GUID приводит к неудачному развертыванию.

    Есть службы в Интернете, которые могут создать новый GUID для вас, например этот бесплатный генератор GUID в Интернете.

  • Имя расписания: представляет имя расписания заданий службы автоматизации, которое будет связано с указанным модулем runbook.

  • Имя runbook: представляет имя модуля runbook службы автоматизации, с которым должно быть связано расписание задания.

После сохранения файла можно создать расписание задания runbook с помощью следующей команды PowerShell. Команда использует параметр TemplateFile, чтобы указать путь и имя файла шаблона.

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

Один модуль Runbook может быть связан с несколькими расписаниями, и одно расписание может иметь несколько привязанных модулей Runbook. Если runbook имеет параметры, для них можно указать значения. Необходимо предоставить значения для всех обязательных параметров, а также значения для необязательных параметров. Значения применяются каждый раз при запуске модуля Runbook с помощью расписания. Один и тот же модуль Runbook можно привязать к другому расписанию и указать другие значения параметров.

  1. На портале Azure в учетной записи автоматизации выберите Модули runbook в разделе Автоматизация процессов.
  2. Щелкните имя одного модуля runbook для привязки к расписанию.
  3. Если модуль runbook сейчас не связан с расписанием, вам будет предложено создать новое расписание или связать модуль с существующим расписанием.
  4. Если модуль runbook имеет параметры, следует выбрать действие Изменить параметры запуска (по умолчанию: Azure), чтобы открыть область Параметры. Здесь можно ввести сведения о параметрах.

Вы можете использовать командлет Register-AzAutomationScheduledRunbook, чтобы связать расписание. С помощью параметра "Параметры" можно указать значения параметров для модуля Runbook. Дополнительные сведения об указании значений параметров см. в статье Запуск модуля runbook в службе автоматизации Azure. Приведенные ниже примеры демонстрируют, как связать расписание с модулем runbook, используя командлет управления службами Azure с параметрами.

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

Планирование более частого выполнения модулей runbook

Самая большая частота расписания в службе автоматизации Azure, которую можно настроить, составляет один час. Если требуется, чтобы расписания выполнялись чаще, есть два варианта.

  • Создайте веб-перехватчик для модуля runbook и используйте Azure Logic Apps для вызова веб-перехватчика. Azure Logic Apps обеспечивает более детализированную настройку для определения расписания.

  • Создайте четыре расписания, которые будут запускаться каждые 15 минут в течение часа. Этот сценарий позволяет модулю runbook запускаться каждые 15 минут с разными расписаниями.

Отключение расписания

Если отключить расписание, модуль runbook, связанный с ним, больше не будет запускаться по такому расписанию. Можно отключить расписание вручную или указать срок действия при создании периодических расписаний. Когда срок действия истекает, расписание отключается.

Отключение расписания на портале Azure

  1. В учетной записи службы автоматизации в области слева выберите Расписание в разделе Общие ресурсы.
  2. Щелкните имя расписания, чтобы открыть область подробных сведений.
  3. Задайте значение Нет для параметра Включено.

Примечание.

Если вы хотите отключить расписание со временем начала в прошлом, необходимо изменить дату начала на время в будущем перед сохранением.

Отключение расписания с помощью PowerShell

Вы можете использовать командлет Set-AzAutomationSchedule, чтобы изменить свойства имеющегося расписания. Чтобы отключить расписание, укажите значение false для параметра IsEnabled.

В следующем примере показано, как отключить расписание для runbook, используя командлет Azure Resource Manager.

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

Удаление расписания

Когда будете готовы удалить расписания, можно использовать портал Azure или PowerShell. Помните, что можно удалить только расписание, которое было отключено, как описано в предыдущем разделе.

Удаление расписания с помощью портала Azure

  1. В учетной записи службы автоматизации в области слева выберите Расписание в разделе Общие ресурсы.
  2. Щелкните имя расписания, чтобы открыть область подробных сведений.
  3. Нажмите Удалить.

Удаление расписания с помощью PowerShell

Для удаления существующего расписания можно использовать командлет Remove-AzAutomationSchedule, как показано ниже.

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

Следующие шаги