chef deploy 启动服务并按顺序重启服务

chef deploy 启动服务并按顺序重启服务

Chef 按顺序停止和启动服务并想询问不同的程序。

步骤 1:框架引导至 jboss 服务

bash "bootstrap application" do
    code <<-EOF
    ant bootstrap
    EOF
end

第 2 步:然后启动 jboss

service "jboss" do
    action :start
end

步骤 3:安装应用程序

bash "install application" do
    code <<-EOF
    ant install
    EOF
end

在步骤2和步骤3之间,ant install 返回错误,因为jboss尚未启动。但第二次运行时成功。显然步骤3不知道jboss是否已经启动。

如何在厨师上做到这一点?

答案1

偶然发现了这个问题,但它看起来像是我在使用 rundeck 时遇到的类似问题...你的服务是否正在启动但尚未启动?

尝试测试一下

service "jboss" do
    start_command 'service jboss start && sleep 30'
    action :start
end

对于 rundeck,我在重启时遇到了问题,并使用 curl 来探测它直到它启动为止。

service 'rundeckd' do
  restart_command 'service rundeckd restart && RETRIES=0 && until curl localhost:4440 || [ $RETRIES -eq 30 ]; do (( RETRIES++ )); sleep 5; done'
  action :start
end

```

答案2

使用资源订阅维持执行秩序。

用于retries确保应用程序安装成功,并且您可以bash[install application]在 chef 运行结束时通过以下方式运行资源subscribes :run, "service[jboss]", :delayed

bash "install application" do
  code <<-EOF
  ant install
  EOF
  action :nothing
  retries 3
  subscribes :run, "service[jboss]", :delayed 
end

相关内容