我无法找出正确的解决方案,即仅当更新文件(即服务的 conf 文件)时,才重新启动该服务(停止然后启动)。
这就是我的foo.rb
文件中的内容。
cookbook_file '/etc/foo/foo.conf' do
source 'foo.conf'
action :touch
end
service 'foo' do
subscribes :restart, 'file[/etc/foo/foo.conf]', :immediately
end
sudo chef-client
我在服务器上运行后得到了什么
cookbook_file[/etc/foo/foo.conf] action touch
- update content in file /etc/foo/foo.conf from 695507 to 06105e
* service[foo] action nothing (skipped due to action :nothing)
据我了解,它识别到文件已更改,但服务并未重新启动。
答案1
订阅必须与订阅的资源相匹配。如果不匹配,它不会给你任何错误,所以你想要
cookbook_file '/etc/foo/foo.conf' do
source 'foo.conf'
action :create
end
service 'foo' do
subscribes :restart, 'cookbook_file[/etc/foo/foo.conf]', :immediately
end
或者,您可以反过来做,即使得让 cookbook_file 通知服务需要重新启动。
cookbook_file '/etc/foo/foo.conf' do
source 'foo.conf'
action :create
notifies :restart, 'service[foo]', :immediately
end