Приложения логики Azure: как запустить скрипт Powershell или интерфейс командной строки Azure? - PullRequest
0 голосов
/ 21 ноября 2018

Я создаю свой рабочий поток Azure Logic Apps, который должен проверять некоторые условия и запускать следующую версию Powershell:

Stop-AzureWebsiteJob -Name MyWebsite -JobName MyWebJob
Start-AzureWebsiteJob -Name MyWebsite -JobName MyWebJob -JobType Continuous

Вопрос состоит в следующем: как проще всего вызвать такой сценарий в приложениях логики Azure?Кажется, что для Powershell нет встроенного блока / разъема, поэтому я хотел бы знать, каковы возможные варианты.Или, может быть, проще выполнить команду z CLI с аналогичной операцией

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Наконец-то я нашел решение, использующее преимущества Azure Automation .На портале Azure мы можем создать новый ресурс, набрав в Automation:

enter image description here

После создания ресурса мы можем добавить новый Runbook на вкладке Runbook:

enter image description here

Runbook может запускать Powershell Workflow и авторизоваться с использованием опции AzureRunAsConnection (подробнее )здесь ).Мой пример Powershell, который должен перезапустить WebJob определенной службы приложений, выглядит следующим образом:

Workflow RestartMyWebJob
{
    $Conn = Get-AutomationConnection -Name AzureRunAsConnection
    Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

    $AzureContext = Select-AzureRmSubscription -SubscriptionId $Conn.SubscriptionID

    $Apiversion = "2015-08-01"
    $ResourceGroupName = 'My-Resource-Group-Name'
    $ResourceName = 'My-Resource-Group-Name/My-AppService--WebJob-Name'


    Invoke-AzureRmResourceAction -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName $ResourceName -Action stop -ApiVersion $Apiversion -Force
    Invoke-AzureRmResourceAction -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName $ResourceName -Action start -ApiVersion $Apiversion -Force
}

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

enter image description here

0 голосов
/ 22 ноября 2018

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

Временное решение :

Если вы хотите запустить и остановить веб-задание, вы можете вызвать Kudu WebJobs API в приложении логики.

Вы можете выполнить следующие шаги.

1.Нажмите команду powershell локально, чтобы сгенерировать токен авторизации вашего веб-приложения.

$creds = Invoke-AzureRmResourceAction -ResourceGroupName joywebapp -ResourceType Microsoft.Web/sites/config -ResourceName joywebapp2/publishingcredentials -Action list -ApiVersion 2015-08-01 -Force
$username = $creds.Properties.PublishingUserName
$password = $creds.Properties.PublishingPassword
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))

$base64AuthInfo - это то, что нам нужно, оно должно быть похоже на JGpveXdlYmFwcDI6NnJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzRktSdXlUcU5acUUzdFhNb05j.

Токен никогда не изменится, кроме вас reset the publish profile, поэтому вам просто нужно сделать этот шаг один раз.

2. В приложении логики укажите метод, URI, заголовки (заголовок должен выглядеть так:Authorization: Basic JGpveXdlYmFwcDI6NnJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzRktSdXlUcU5acUUzdFhNb05j, note используйте пробел для разделения Basic и токена), например, я запускаю запущенное веб-задание в своем веб-приложении.

enter image description here

Триггерный результат:

enter image description here

Так что вам просто нужно выполнить шаги, описанные выше, для вашего вопросаUE, обратитесь к APIS:

  1. Начать непрерывную работу
  2. Остановить непрерывную работу
...