Chef infra 如何通过厨师烹饪手册开始重新招聘员工?

Chef infra 如何通过厨师烹饪手册开始重新招聘员工?,chef-infra,resque,chef-recipe,cookbook,Chef Infra,Resque,Chef Recipe,Cookbook,我是Chef的新手,我希望通过我的菜谱在每次部署后重新启动云节点上的resque workers。resque提供了一个Rake任务来启动工人 QUEUE='*' bundle exec rake environment resque:work >>/log/resque.log 2>&1 & 要停止它,我对resque进程进行grep处理并手动终止它 我找不到任何关于如何在Chef中运行rake任务的好例子。有人能帮我提供一个示例服务,它将实现我想要的功能吗

我是Chef的新手,我希望通过我的菜谱在每次部署后重新启动云节点上的resque workers。resque提供了一个Rake任务来启动工人

QUEUE='*' bundle exec rake environment resque:work >>/log/resque.log 2>&1 &
要停止它,我对resque进程进行grep处理并手动终止它


我找不到任何关于如何在Chef中运行rake任务的好例子。有人能帮我提供一个示例服务,它将实现我想要的功能吗?

使用
操作创建一个
执行
资源:无任何内容将用于重新启动工作程序(根据需要进行调整):

然后,在部署资源上添加:

application "app" do
  ...
  notifies :run, "execute[restart_resque_workers]"
end
理想情况下,
停止
启动
重新启动
机制将由适当的服务处理,但在任何情况下,整体模式都是相同的

通知
属性只有在
应用程序
资源被修改时才会生效(通常这意味着新的部署)

有关通知的更多信息


穷人的服务可能是这样的:

service 'resque_workers' do
  start = "QUEUE='*' bundle exec rake environment resque:work >>/log/resque.log 2>&1"
  stop = "pkill resque"
  start_command start
  stop_command stop
  restart_command "#{stop}; #{start}"
  supports [ :start, :stop, :restart ]
end

然后在
应用程序
资源中使用
通知:重新启动“服务[resque_workers]”

感谢您将服务写出来……)NP我刚刚为我的一本烹饪书做了类似的事情,所以我把它放在这里。:)请注意,这不是您可以在操作系统上使用
service rescue\u workers start/stop
管理的实际服务。如果出于任何原因您需要在框本身上管理它,您仍然需要自己运行这些命令。
service 'resque_workers' do
  start = "QUEUE='*' bundle exec rake environment resque:work >>/log/resque.log 2>&1"
  stop = "pkill resque"
  start_command start
  stop_command stop
  restart_command "#{stop}; #{start}"
  supports [ :start, :stop, :restart ]
end