2017-05-23 80 views
0

我目前有兩個文件是通過Chef中的模板創建的。這兩個模板當前都會在修改後通知服務。儘管廚師通知數量,但只執行一次服務

template '/etc/file1' do 
    source 'file1.erb' 
    owner 'root' 
    group 'root' 
    mode '644' 
    notifies :restart, 'service[foo]' 
end 

template '/etc/file2' do 
    source 'file2.erb' 
    owner 'root' 
    group 'root' 
    mode '600' 
    notifies :restart, 'service[foo]' 
end 

service "foo" do 
    action :nothing 
end 

有沒有一種方法可以在這些文件中的任何一個被更改時才能調用服務?原因是因爲如果兩個文件都改變了,我想避免執行兩個「foo」實例。

回答

2

在您的示例中,'foo'服務只會被通知一次(並且只會執行一次),並且只有在任何文件發生更改時纔會被通知。完全如您所料。

+1

要添加一個位:默認[通知時間](https://docs.chef.io/resource_common.html#timers)爲':delayed'。如果你想多次重啓,將會有':immediate(ly)'。 – StephenKing

+0

哦,這真的很乾淨!對於多次重新啓動以及@StephenKing的澄清還有不錯的補充。非常感謝你們! :) – leeeennyy