Chef infra 厨师长按顺序部署启动服务和重新启动服务
我正在阅读,想询问不同的程序 步骤1:框架引导到jboss服务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
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