我正在主厨经营雄猫。在我的食谱中,tomcat首先启动,但后来,在食谱中,我将文件从我的食谱转移到节点上的目录中。更新文件后,仅当文件已更改时,我才需要Tomcat重新启动。我该如何实现?
这是我到目前为止所拥有的:
#tomcat is currently running
cookbook_file "#{run_dir}/run.conf" do
source 'run.conf'
owner 'tomcat'
mode '0644'
end
tomcat_service 'default' do
action [:restart]
only_if # only if "#{run_dir}/run.conf" has been updated as shown above
end
答案 0 :(得分:2)
您应该使用称为notifications的功能。这样,Chef资源可以通知(notifies
)或侦听(subscribes
)其他资源进行更改。
在您的情况下,如果cookbook_file
资源更改了节点上的run.conf
,则应“通知” tomcat_service
资源以重新启动。
示例:
# Tomcat is currently running
cookbook_file "#{run_dir}/run.conf" do
source 'run.conf'
owner 'tomcat'
mode '0644'
notifies :restart, 'tomcat_service[default]', :delayed
end
tomcat_service 'default' do
action :nothing
end
通知可以触发操作:immediately
或:delayed
。在上面的示例中,服务重启将被触发,但是在Chef-client运行结束时(考虑任何其他:restart
动作)。如果要在文件更改后立即重新启动,则应使用:immediately
。