Повторное получение фонового задания DSC после перезагрузки

У меня есть система, которая каждую ночь выполняет множество конфигураций DSC для создания машин. Это инициируется запланированным заданием (MultiJob) в Jenkins. Затем запланированное задание запускает отдельные задания и ожидает завершения всех заданий. В 90% случаев это работает без проблем.

Однако иногда одно из отдельных заданий требует перезагрузки. Это правильно настроено с LCM и с использованием ресурса DSC xPendingReboot. Здесь нет проблем.

Проблема заключается в том, что задание PowerShell, которое выполняется на целевой машине, завершается при запуске перезагрузки. Затем это запускает следующий этап процесса сборки, который завершается сбоем, поскольку процесс DSC фактически еще не завершен.

Кто-нибудь знает, как повторно получить отложенное задание DSC на целевой машине после ее перезагрузки?

Обновление (непроверенное): в настоящее время работает над сценарием, который вызывает метод GetCimSessionInstanceId в LCM для получения дескриптора сеанса после завершения задания. Затем этот идентификатор сеанса можно использовать для повторного получения CimSession на удаленном компьютере после перезагрузки с помощью командлета Get-CimSession. Я предполагаю, что смогу удаленно выполнить Get-Job в сеансе cim, чтобы определить, продолжается ли процесс DSC. Это приводит к дополнительному вопросу. Как мы можем определить, что начальное задание dsc завершилось из-за перезагрузки или это действительно конец процесса?


person Cobster    schedule 17.02.2016    source источник


Ответы (1)


Этот подход должен работать для того, что вы ищете http://nanalakshmanan.github.io/blog/DSC-get-job-details-post-reboot/

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

[DscLocalConfigurationManager()]
Configuration Settings
{
   Settings
   {
       ActionAfterReboot  = 'StopConfiguration'  
       RebootNodeIfNeeded = $false  
   }  
}  

Затем повторно примените существующую конфигурацию, используя следующую команду

Start-DscConfiguration-Wait-UseExisting-Verbose

person Nana Lakshmanan    schedule 23.02.2016
comment
Спасибо за ответ, подход имеет смысл. Я попробую это в ближайшее время. - person Cobster; 23.02.2016
comment
Другие приоритеты имеют приоритет над этим вопросом. Я планирую вернуться к этому вопросу позже сегодня. - person Cobster; 24.02.2016
comment
Обнаружена 1 незначительная проблема. ActionAfterReboot необходимо установить на "StopConfiguration", а не на "Stop". - person Cobster; 24.02.2016