У меня есть множество мест в моих рецептах шеф-повара, где операции должны выполняться последовательно, и эта последовательность должна быть указана в нескольких местах. Например, одна последовательность операций: «остановить Tomcat, перекомпилировать приложение, запустить Tomcat», который может быть вызван, среди других событий, «дерево источника приложения изменяется».Связывание/группировка ресурсов у шеф-повара
мне нужно, чтобы иметь возможность запускать эти последовательности операций необходимы с обеими notifies
атрибутов из различных ресурсов (в том числе :delayed
функциональности), а также 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). –