Azure: как я могу убедиться, что Runbook вызывает только один раз на сервер - PullRequest
0 голосов
/ 24 мая 2018

У меня есть виртуальные машины в Azure.Каждый мастер vm имеет несколько вычислительных узлов, на которых выполняется Slurm.

Когда задание завершено, вычислительные узлы, удаленные сценарием завершения работы Slurm, и мастер продолжают работать.Я тоже хочу завершить работу мастера.

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

Проблема:

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

Есть ли способ узнать в Runbook, что был получен запрос на отключение определенного мастера, и пропустить все остальные запросы на отключение одного и того же мастера.Могу ли я заблокировать Runbook или включить флаг, что запрос был отправлен?

Спасибо.

1 Ответ

0 голосов
/ 25 мая 2018

Пожалуй, самое простое - это использовать переменные автоматизации, например:

$alreadySent = Get-AutomationVariable -Name ShutdownRequestSent
if (-not $alreadySent) {
    # Send shutdown request
    ...
    Set-AutomationVariable -Name ShutdownRequestSent -Value $true
}

Вам придется выяснить, когда и как снова установить переменную в $ false.

Это простое, но не пуленепробиваемое решение, и в вашем случае его может быть недостаточно.Например, если два задания для этой книги запусков достигают команды Get-AutomationVariable в одно и то же время, они оба отправят запрос на отключение.Или, если задание, отправляющее запрос на отключение, по какой-либо причине вылетает перед выполнением Set-AutomationVariable, следующее задание отправит второй запрос на выключение.Я не знаю, если это проблема для вас.Если вам нужна более надежная гарантия однократного запуска, рассмотрите возможность использования Lease Blob .

...