Ответ 1
Итак, это "в основном мнение", но я все равно отвечу. Здесь есть 4 различных варианта:
- Определение
- LWRP
- ПГВР
- "Библиотека"
Определение - это всего лишь обертка вокруг одного или нескольких ресурсов с некоторой параметризацией. Однако определения не добавляются в сбор ресурсов. Это означает, что вы не можете "уведомлять" или инициировать события по определению. Они предназначены исключительно для обертывания и обозначения ряда повторяемых шагов, найденных в рецепте.
LWRP (Light-weight resource and provider) - это DSL, специфичный для шеф-повара, который фактически компилируется в HWRP (ресурс тяжелого веса и поставщик) во время выполнения. Как LWRP, так и HWRP являются расширениями шеф-повара. В дополнение к завершению серии повторяющихся задач * WRP создадут ресурс верхнего уровня в Chef (например, template
или package
), который будет доступен для вашего рецепта и других рецептов поваренной книги.
Разница между LWRP и HWRP - это действительно Ruby. HWRP используют полномасштабные классы Ruby. Если вы не разработчик Ruby, они могут быть немного запугивающими. Тем не менее, вы должны попробовать попробовать, прежде чем писать и LWRP. LWRP используют специальный DSL для Chef для создания ресурсов. В конце дня они скомпилируют (примерно) тот же код, что и тяжеловесный аналог. Я свяжу некоторые ссылки в конце. У вас есть доступ к ресурсам Chef внутри любой реализации, а также к run_context.
Наконец, "библиотеки" (обратите внимание на цитаты) часто неправильно понимаются и злоупотребляют. Это код Ruby, оцененный как Ruby, поэтому они могут делать что угодно. HWRPs фактически являются формой библиотеки. Иногда люди используют библиотеки как "помощники". Они создадут вспомогательный модуль с такими методами, как best_ip_for
или aggregate_some_data
, а затем "смешивают" (Rubyism) эту библиотеку с их рецептами или ресурсами для СУШКИ. В других случаях библиотеки могут использоваться для "взлома" самого шеф-повара. Хорошим примером этого является кулинарная книга partial-search. Facebook рассказал о том, как они ограничили количество атрибутов, отправленных обратно на сервер в прошлом году на ChefConf. Библиотеки действительно являются территорией undefined, потому что они являются ключами к королевству.
Итак, хотя я на самом деле не ответил на ваш вопрос (потому что он основан на мнениях), я надеюсь, что предоставил вам достаточно информации о том, как лучше двигаться вперед. Имейте в виду, что каждая инфраструктура представляет собой специальную снежинку, и нет ответа справа; существует только лучший ответ. Я бы предложил поделиться этой информацией с вашей командой и оценить преимущества и недостатки каждого подхода. Вы также можете попробовать список рассылки повара, по которому люди дадут вам много мнений.
Ресурсы