2016-08-24 86 views
1

我想创建一个使用tomcat部署java应用程序的Chef食谱。当我更新java应用程序(我的食谱中的.WAR文件,上传并获取节点以运行更新的食谱)时,我希望Chef停止tomcat,删除tomcat/webapps文件夹的内容,复制新的war,然后启动tomcat再次。如果使用Chef更改了文件,如何删除目录?

我见过如果File.exists的语法,但没有看到if的任何东西。我怎样才能做到这一点? 我认为Chef具有这种功能,因为它只有在校验和改变时才更新文件。

回答

1

我错过了一些细节,例如如何将WAR文件放在适当的位置。所以我会假设你使用cookbook_file资源。

cookbook_file "path/to/release.war" do 
    notifies :execute, "cleanup tomcat webapp directory", :before 
    notifies :start, "service[tomcat]" 
end 

execute "cleanup tomcat directory" do 
    notifies :stop, "service[tomcat]", :before 
    command "rm -r path/tomcat/webapps/*" 
    action :nothing 
end 

服务tomcat必须在您要放置此代码的资源范围内可用,在定时器需要厨师12.7 afair之前。

但是,此解决方案可能会导致运行时间为rm -r的停机时间,并且需要完全停止/启动tomcat。使用hot deploy(在运行服务器上)不是更好吗?

相关问题