У меня есть рецепт с множественными обращениями к данному ресурсу, допустим directory
. Призывы к directory
, по большей части, имеют очень похожие параметры (то есть один и тот же владелец, одно действие и т. д.), то есть много дублирования. Однако есть частный параметр, который часто меняется, а именно режим.
Моя цель - уменьшить дублирование моих рецептов и создать что-то вроде удобного метода.
Я склоняюсь к созданию библиотеки с помощью такого метода:
def apply_directory_rule(path, mode_num)
directory path do
owner "something"
group "something_else"
mode mode_num
action :create
end
end
Затем в рецепте каждый раз, когда я хотел создать каталог для приложений, я просто называл бы следующее:
applications.each do |application|
apply_directory_rule "#{application}/shared", 0755
end
Я еще не смог это проверить, но, полагаю, мой главный вопрос заключается в том, действительно ли ресурсы в данном случае directory
доступны вот так в библиотеках? Во-вторых, я не уверен, что это лучший образец - любые предложения по уменьшению дублирования в моих рецептах приветствуются!
Вы можете просто определить метод в рецепте и использовать его в этом рецепте. Это просто и выполняет свою работу.
Если вам нужно повторно использовать узор в разных рецептах или вы просто хотите использовать более «шеф-поварский» подход, для этого есть два инструмента.
В простых случаях можно использовать определения; более сложные ситуации требуют написания собственного легкий ресурс и поставщик (LWRP). Оба могут использоваться в других рецептах и в других кулинарных книгах.
Вы можете прочитать хорошую статью о создании LWRP здесь: http://dougireton.com/blog/2012/12/31/creating-an-lwrp/, http://dougireton.com/blog/2013/01/07/creating-an-lwrp-part-2/, http://dougireton.com/blog/2013/01/13/creating-an-lwrp-part-3/.