2017-05-23 4 views
0

シェフのテンプレートで2つのファイルが作成されています。両方のテンプレートは、現在、サービスが変更されたときにサービスに通知します。シェフの通知数にもかかわらず、一度だけサービスを実行します

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 

これらのファイルのいずれかが変更された場合にのみサービスを呼び出す方法はありますか?これは、両方のファイルが変更された場合、2つの "foo"インスタンスが実行されるのを避けたいからです。

答えて

2

あなたの例では、 'foo'サービスは一度だけ通知され(一度だけ実行されます)、ファイルのいずれかが変更された場合にのみ通知されます。まさにあなたが期待する通りです。

+1

もう1ビットを追加するには:デフォルトの[通知タイミング](https://docs.chef.io/resource_common.html#timers)は ':delayed'です。複数の再起動が必要な場合は、 ':immediate(ly)'があります。 – StephenKing

+0

ああ、これは本当にすっきりしています! @StephenKingだけでなく、複数の再起動に関する明確化のための素晴らしい追加。両方とも非常にありがとう! :) – leeeennyy

関連する問題