2012-08-16 58 views
1

我有一個用於Sphinx配置的Rails站點的模板。在不同端口上運行的同一臺計算機上可以有多個不同的Sphinx服務,每個應用程序一個。因此,我只想爲每個站點重新啓動Sphinx(如果其相應的配置模板更改)。我創建了重啓只是一個基於類似於參數獅身人面像的/etc/init.d/sphinx腳本:如何讓廚師重新啓動一個服務並傳入其他參數?

/etc/init.d/sphinx restart /etc/sphinx/site1.conf 

凡site1.conf由廚師模板中定義。如果模板更改,我真的很喜歡使用廚師模板的通知功能來傳入正確的site1.conf參數。這可能嗎?

另外,我想我可以只登記爲類似於每個站點不同的服務:

/etc/init.d/sphinx_site1 

不過,我寧願在參數傳遞給腳本來代替。

回答

6

定義service資源時,可以自定義將要運行的啓動,停止和重新啓動命令。您可以爲使用這些自定義命令的每個站點定義一個service資源,並設置相應的通知。

例如:

 
service "sphinx_site1" do 
    supports :restart => true 
    restart_command "/etc/init.d/sphinx restart /etc/sphinx/site1.conf" 
    action :nothing 
end 

template "/etc/sphinx/site1.conf" do 
    notifies :restart, "service[sphix_site1]" 
end