Назад | Перейти на главную страницу

Каков хороший шаблон для удаления повторяющихся обращений к определенному ресурсу при использовании Chef Server?

У меня есть рецепт с множественными обращениями к данному ресурсу, допустим 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/.