Windows命令块主厨运行

时间:2016-03-29 19:59:11

标签: ruby-on-rails ruby chef chef-recipe

我有一个带有以下代码的厨师食谱(注释掉我尝试过的备用代码)

#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,并且在运行此部分后等待服务器被杀死后才会卡住。

有没有办法在chef / windows中解决它?

1 个答案:

答案 0 :(得分:1)

你可能应该安装一个实际的服务,而不是试图从Chef内部分叉后台作业。查看windows_service resource