Как я могу делиться кодом в поваренных книгах повара в шеф-репо?
Я хотел бы поделиться небольшим количеством методов по рецептам в репетиции шеф-повара. Я знаю, что на уровне поваренной книги я могу поместить код в модули в каталог библиотек (см. связанный вопрос). То, что я ищу, это что-то вроде этого, но доступно во всех поваренных книгах в моем репетиторе шеф-повара.
Я могу представить пару решений:
- Создайте драгоценный камень, установите драгоценный камень как часть работы шеф-повара. Это кажется излишним.
- Поместите файл в какую-то папку и добавьте эту папку в
$LOAD_PATH
в файле рецепта. У меня такое ощущение, что не будет работать с фактическим развертыванием, потому что сервер шеф-повара ничего не знает о репо.
- Поместите файл в папку и символическую ссылку в каталог библиотек каждой кулинарной книги.
Последний вариант кажется наиболее жизнеспособным. Есть ли лучший/более идиоматический способ сделать то, что я хочу?
Ответы
Ответ 1
Вы можете использовать определенную библиотеку функцию из другой поваренной книги, но вы должны научить шеф-повару вашей поваренной книге depend
в предлагаемой кулинарной книге.
Итак, например, если в кулинарной книге A есть libraries/default.rb
, который предоставляет некоторую функцию f
, вы можете получить к ней доступ из поваренной книги B, пока файл B metadata.rb
содержит строку:
depends "A"
См. документацию шеф-повара метаданные и libraries для более подробной информации.
Ответ 2
Существует 3 различных параметра, позволяющих использовать код в виде ресурса chef (1. LWRP, 2. HWRP) или методов (3. " библиотеки" ). Я бы предложил вам сначала рассмотреть LWRP. Я нахожу этот ответ очень хорошим в объяснении различий между упомянутыми методами.