Chef infra 厨师长按顺序部署启动服务和重新启动服务

Chef infra 厨师长按顺序部署启动服务和重新启动服务,chef-infra,chef-recipe,chef-solo,Chef Infra,Chef Recipe,Chef Solo,我正在阅读,想询问不同的程序 步骤1:框架引导到jboss服务 bash "bootstrap application" do code <<-EOF ant bootstrap EOF end 步骤3:安装应用程序 bash "install application" do code <<-EOF ant install EOF end bash“安装应用程序”执行 代码好的,我已经从ruby_块完成了这项工作 # f

我正在阅读,想询问不同的程序

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

bash "bootstrap application" do
    code <<-EOF
    ant bootstrap
    EOF
end
步骤3:安装应用程序

bash "install application" do
    code <<-EOF
    ant install
    EOF
end
bash“安装应用程序”执行

代码好的,我已经从ruby_块完成了这项工作

# for managing service
# jboss block until operational
ruby_block "block_until_operational" do
  block do
    until IO.popen("netstat -lnt").entries.select { |entry|
        entry.split[3] =~ /:#{node[:jboss][:default_port]}$/
      }.size == 1   
      Chef::Log.debug "service[jboss] not listening on port #{node[:jboss][:default_port]}"
      sleep 1
    end
  end
  action :nothing
end
我创建了这个ruby块,它将侦听端口8080,直到它返回1(已启动) 并通过

service "jboss" do
    action :start
    notifies :create, 'ruby_block[block_until_operational]', :immediate
end

你能把输出粘贴到什么地方吗?服务应该在步骤2之后运行,可能JBoss在执行步骤3时没有时间出现。在这种情况下,服务将在技术上启动,但JBoss还不会监听请求。您必须想出一种方法来监视JBoss的服务端口或日志,以确保步骤3仅在JBoss实际启动后运行。如果这是一个时间问题,那么一个简单的解决方案就是在“安装”目标中添加一个“waitfor”语句:我给出了答案。这里的一个关键问题是,即使服务jboss已经启动,您也无法知道jboss是否成功启动。这需要时间。因此,您最好改进ant目标以重试或在
bash[install application]
resource@MarkO'Connor build.xml是从外部包动态生成的,我不能这样做。虽然它更简单。
service "jboss" do
    action :start
    notifies :create, 'ruby_block[block_until_operational]', :immediate
end