Запуск модуля Runbook в службе автоматизации Azure

Следующая таблица поможет определить метод запуска модуля runbook в службе автоматизации Azure, наиболее подходящий для конкретной ситуации. Данная статья содержит сведения о запуске модуля Runbook с помощью портала Azure и Windows PowerShell. Сведения об остальных методах приведены в другой документации, доступной по ссылкам, которые указаны ниже.

Method Характеристики
Портал Azure
  • Простейший способ с интерактивным пользовательским интерфейсом.
  • Форма для предоставления значений простых параметров.
  • Легко отслеживать состояние задания.
  • Доступ с проверкой подлинности с помощью входа в Azure.
  • Windows PowerShell
  • Вызов из командной строки с помощью командлетов Windows PowerShell.
  • Может включаться в автоматизированную функцию из нескольких шагов.
  • Запрос проходит проверку подлинности с помощью сертификата или по протоколу OAuth.
  • Необходимо предоставить значения простых и сложных параметров.
  • Отслеживание состояния задания.
  • Для поддержки командлетов PowerShell необходим клиент.
  • API-интерфейс в службе автоматизации Azure
  • Наиболее гибкий и наиболее сложный метод.
  • Вызов из любого пользовательского кода, который может выполнять HTTP-запросы.
  • Запрос проходит проверку подлинности с помощью сертификата или по протоколу OAuth.
  • Необходимо предоставить значения простых и сложных параметров. При вызове модуля Runbook Python с помощью API полезные данные JSON необходимо сериализовать.
  • Отслеживание состояния задания.
  • веб-перехватчики;
  • Запуск Runbook из одного HTTP-запроса.
  • Проверка подлинности с помощью токена безопасности в URL-адресе.
  • Клиент не может переопределять значения параметров, указанные при создании веб-перехватчика. Runbook может определить один параметр, который содержит сведения об HTTP-запросе.
  • Отсутствует возможность отслеживать состояния задания через URL-адрес webhook.
  • Ответ на оповещение Azure
  • Запуск Runbook в ответ на оповещение Azure.
  • Настройка веб-перехватчика для Runbook и ссылки на оповещение.
  • Проверка подлинности с помощью токена безопасности в URL-адресе.
  • Запланировать
  • Автоматический запуск Runbook по ежечасному, ежедневному, еженедельному или ежемесячному расписанию.
  • Управление расписанием с помощью портала Azure, командлетов PowerShell или API-интерфейса Azure.
  • Предоставление значений параметров, которые будут использованы в расписании.
  • Из другого модуля Runbook
  • Использование одного модуля Runbook в качестве процесса в другом модуле Runbook.
  • Подходит для функций, используемых в нескольких модулях Runbook.
  • Предоставление значений параметров для дочернего модуля Runbook и использование выходных данных в родительском модуле Runbook.
  • На следующем рисунке показан подробный пошаговый процесс жизненного цикла модуля Runbook. Он включает различные способы запуска модуля Runbook в службе автоматизации Azure, компоненты, необходимые для выполнения модулей Runbook для службы автоматизации Azure в гибридной рабочей роли Runbook, и взаимодействие между различными компонентами. Дополнительные сведения о выполнении модулей Runbook службы автоматизации Azure в центре обработки данных см. в статье о гибридных рабочих ролях Runbook.

    Runbook Architecture

    Работа с параметрами последовательности runbook

    При запуске модуля runbook с помощью портала управления Azure или Windows PowerShell инструкция отправляется через веб-службу автоматизации Azure. Эта служба не поддерживает параметры со сложными типами данных. Если необходимо указать значение для сложного параметра, его необходимо вызвать из другого модуля Runbook, как описано в разделе Дочерние модули Runbook в службе автоматизации Azure.

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

    Именованные значения

    Если параметр имеет тип данных [object], используйте следующий формат JSON, чтобы передать в параметр список именованных значений: {имя1:'значение1', имя2:'значение2', имя3:'значение3'}. Значения должны быть простого типа. Модуль runbook получает параметр в виде объекта PSCustomObject, свойства которого соответствуют каждому именованному значению.

    Рассмотрим следующий тестовый модуль Runbook, который принимает параметр user.

    Workflow Test-Parameters
    {
       param (
          [Parameter(Mandatory=$true)][object]$user
       )
        $userObject = $user | ConvertFrom-JSON
        if ($userObject.Show) {
            foreach ($i in 1..$userObject.RepeatCount) {
                $userObject.FirstName
                $userObject.LastName
            }
        }
    }
    

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

    {FirstName:'Joe',LastName:'Smith',RepeatCount:'2',Show:'True'}
    

    Результат должен быть таким:

    Joe
    Smith
    Joe
    Smith
    

    Массивы

    Если параметр представляет собой массив, например [array] или [string[]], используйте следующий формат JSON, чтобы отправить его в виде списка значений: [значение1, значение2, значение3]. Значения должны быть простого типа.

    Рассмотрим следующий тестовый модуль Runbook, который принимает параметр user.

    Workflow Test-Parameters
    {
       param (
          [Parameter(Mandatory=$true)][array]$user
       )
        if ($user[3]) {
            foreach ($i in 1..$user[2]) {
                $ user[0]
                $ user[1]
            }
        }
    }
    

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

    ["Joe","Smith",2,true]
    

    Результат должен быть таким:

    Joe
    Smith
    Joe
    Smith
    

    Учетные данные

    Если параметр относится к типу данных PSCredential, можно предоставить имя ресурса учетных данных в службе автоматизации Azure. Модуль runbook получит учетные данные с указанным именем. Рассмотрим следующую тестовую последовательность runbook, которая принимает параметр credential.

    Workflow Test-Parameters
    {
       param (
          [Parameter(Mandatory=$true)][PSCredential]$credential
       )
       $credential.UserName
    }
    

    Следующий текст можно использовать для параметра user, если используется ресурс учетной записи My Credential.

    My Credential
    

    Предполагая, что в учетных данных указано имя пользователя jsmith, будут отображаться следующие выходные данные:

    jsmith
    

    Запуск модуля Runbook с помощью портала Azure

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

    Запуск модуля Runbook с помощью PowerShell

    Чтобы запустить последовательность runbook с помощью Windows PowerShell, воспользуйтесь командлетом Start-AzureRmAutomationRunbook. В следующем примере кода будет запущена последовательность runbook с именем Test-Runbook.

    Start-AzAutomationRunbook -AutomationAccountName "MyAutomationAccount" -Name "Test-Runbook" -ResourceGroupName "ResourceGroup01"
    

    Командлет Start-AzAutomationRunbook возвращает объект задания, с помощью которого можно отслеживать состояние runbook после запуска. Затем этот объект задания можно указать в командлете Get-AzureAutomationJob, чтобы определить состояние задания, и в командлете Get-AzureAutomationJobOutput, чтобы получить выходные данные. В следующем примере будет запущена последовательность runbook с именем Test-Runbook, а после ее завершения выводится результат.

    $runbookName = "Test-Runbook"
    $ResourceGroup = "ResourceGroup01"
    $AutomationAcct = "MyAutomationAccount"
    
    $job = Start-AzAutomationRunbook -AutomationAccountName $AutomationAcct -Name $runbookName -ResourceGroupName $ResourceGroup
    
    $doLoop = $true
    While ($doLoop) {
       $job = Get-AzAutomationJob -AutomationAccountName $AutomationAcct -Id $job.JobId -ResourceGroupName $ResourceGroup
       $status = $job.Status
       $doLoop = (($status -ne "Completed") -and ($status -ne "Failed") -and ($status -ne "Suspended") -and ($status -ne "Stopped"))
    }
    
    Get-AzAutomationJobOutput -AutomationAccountName $AutomationAcct -Id $job.JobId -ResourceGroupName $ResourceGroup -Stream Output
    

    Если для модуля Runbook требуются параметры, необходимо предоставить их в виде хэш-таблицы. Ключ хэш-таблицы должен совпадать с именем параметра, а значение — со значением параметра. В следующем примере показано, как запустить модуль Runbook с двумя строковыми параметрами FirstName и LastName, целочисленным параметром RepeatCount и логическим параметром Show. Дополнительные сведения о параметрах см. в разделе Параметры модуля Runbook.

    $params = @{"FirstName"="Joe";"LastName"="Smith";"RepeatCount"=2;"Show"=$true}
    Start-AzAutomationRunbook -AutomationAccountName "MyAutomationAccount" -Name "Test-Runbook" -ResourceGroupName "ResourceGroup01" -Parameters $params
    

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