我想创建一个使用tomcat部署java应用程序的Chef配方。当我更新java应用程序(我的cookbook中的.WAR文件,上传并获取一个节点来运行更新的cookbook)时,我希望Chef停止tomcat,删除tomcat / webapps文件夹的内容,复制新的war然后启动tomcat试。
我见过File.exists的语法,但是没有看到if的内容。我怎样才能做到这一点? 我认为Chef具有此功能,因为它仅在校验和更改时才更新文件。
答案 0 :(得分: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
在计时器要求厨师12.7之前,服务tomcat必须在您将要放置此代码的资源范围内可用。
但是,此解决方案可能会导致运行rm -r
的停机时间,并需要完全停止/启动tomcat。使用hot deploy(在运行服务器上)不是更好吗?