我的厨师食谱中有很多地方需要按顺序运行操作,并且需要在多个地方引用该顺序。例如,一个操作序列是“停止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)。 –