2016-03-29 2 views
1

У меня есть рецепт шеф-поваров со следующим кодом (закомментированного альтернативный код, который я попробовал, а)окна команды блокирует повар пробег

#execute 
# execute 'service-api install' do 
# #command "web-#{node['default']['env']}.cmd" #start /HIGH /b -RedirectStandardOutput chef-serviceoutput.txt 
# command ('powershell -c "start-process web-%s.cmd -RedirectStandardOutput C:\\buildinfo\\service-api\\api\\approot\\chef-serviceoutput.txt"' % node['default']['env']) 
# cwd "C:\\buildinfo\\service-api\\api\\approot" 
# #not_if :timeout => 10, :cwd => 'C:\\buildinfo\\service-api\\api\\approot' 
# end 

powershell_script 'service-api install' do 
    code <<-EOH 
    start-process web-#{node['default']['env']}.cmd -RedirectStandardOutput chef-serviceoutput.txt 
    EOH 
    cwd "C:\\buildinfo\\service-api\\api\\approot" 
end 

Код существенно изменяет рабочий каталог и запускает CMD-файл, который начинается до сервера. Теперь с запуском процесса он должен открыть новый cmd, а затем запустить сервер там, но в исходном cmd он выйдет на новую строку.

Когда я запускаю это через шеф-повара, он (я думаю) отслеживает все дочерние cmd из процесса, а также просто застревает после запуска этого раздела, ожидая, что сервер будет убит.

Есть ли способ обойти его в шеф-поварах/окнах ??

ответ

1

Возможно, вы должны установить фактическое обслуживание вместо того, чтобы пытаться отменить фоновые задания изнутри шеф-повара. Проверьте windows_service resource.

+0

не вариант, спасибо – Scooby

+0

Тогда вам понадобится что-то другое, чтобы создать отдельный контекст исполнения. Вероятно, в PowerShell для этого есть что-то, но общий шаблон состоит в том, чтобы использовать запланированный набор задач для выполнения через 0 секунд. – coderanger

Смежные вопросы