我的廚師食譜中有很多地方需要按順序運行操作,並且需要在多個地方引用該順序。例如,一個操作序列是「停止Tomcat,重新編譯應用程序,啓動Tomcat」,這可以通過「應用程序源樹變化」等事件觸發。Chef的鏈接/分組資源
我需要能夠的操作都需要從各種資源(包括:delayed
功能)都notifies
屬性,再加上subscribes
屬性上的序列本身,因爲序列可以通過資源在其他配方被觸發,觸發這些序列是將會重啓Tomcat,但實際上並不依賴於Tomcat配方。
什麼是管理這些操作組的最佳方式?
我從the Chef docs看到的方式來處理,這是有什麼相關的事件通知所有這些操作的順序:
git 'repo' do
notifies :stop, 'service[tomcat]', :delayed
notifies :run, 'recompile_app', :delayed
notifies :start, 'service[tomcat]', :delayed
end
但是,也有相當多的資源的事件可能是這個序列由此觸發,並且此級別的代碼重複似乎效率低下且容易出錯。
有沒有更好的方法來處理這個問題?
如果你有很多地方某種代碼重複,你應該將它解壓縮到庫中(http://docs.opscode.com/essentials_c ookbook_libraries.html)或LWRP(http://docs.opscode.com/lwrp_custom.html)。 –