Как я могу делиться кодом в поваренных книгах повара в шеф-репо?

Я хотел бы поделиться небольшим количеством методов по рецептам в репетиции шеф-повара. Я знаю, что на уровне поваренной книги я могу поместить код в модули в каталог библиотек (см. связанный вопрос). То, что я ищу, это что-то вроде этого, но доступно во всех поваренных книгах в моем репетиторе шеф-повара.

Я могу представить пару решений:

  • Создайте драгоценный камень, установите драгоценный камень как часть работы шеф-повара. Это кажется излишним.
  • Поместите файл в какую-то папку и добавьте эту папку в $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. Я нахожу этот ответ очень хорошим в объяснении различий между упомянутыми методами.