Ресурс Chef windows_service - настройка существующего сервиса - PullRequest
0 голосов
/ 17 апреля 2019

У меня возникли некоторые проблемы, обеспечивающие правильную настройку ресурса службы Windows после его создания. Я в ситуации, когда создание сервиса обрабатывается отдельным установщиком (.exe).

Мне нужно впоследствии настроить эту службу для использования другого пользователя.

Вот мое определение ресурса:

windows_service 'Service' do
  action [:configure_startup, :start]
  service_name 'service'
  startup_type :automatic
  run_as_user agent_credentials['user']
  run_as_password agent_credentials['password']
  only_if { ::Win32::Service.exists?('myservice') }
end

Я вытаскиваю учетные данные из зашифрованной сумки с данными.

Проблема, с которой я сталкиваюсь, заключается в том, что учетная запись, под которой работает служба, никогда не обновляется. В моем клиентском прогоне он не видит необходимости применять действия ресурса после установки .exe:

  * windows_service[Service] action configure_startup (up to date)
  * windows_service[Service] action start (up to date)

Я могу применить свой ресурс только в том случае, если сначала остановлена ​​служба, а это не сразу после установки. Должен ли я сначала использовать Chef, чтобы остановить его, а затем запустить снова? Я думал, что он сможет обнаружить, что конфигурация службы не соответствует конфигурации определенного ресурса, а затем исправить это ...

Спасибо

1 Ответ

0 голосов
/ 17 апреля 2019

просто добавьте :stop к массиву action, например

windows_service 'Service' do
  action [:configure_startup, :stop, :start]
  service_name 'service'
  startup_type :automatic
  run_as_user agent_credentials['user']
  run_as_password agent_credentials['password']
  only_if { ::Win32::Service.exists?('myservice') }
end

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

...