Chef 中更改文件后重新启动服务的命令是什么?

Chef 中更改文件后重新启动服务的命令是什么?

我无法找出正确的解决方案,即仅当更新文件(即服务的 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

相关内容