"Поваренная книга" шеф-повара в Berksfile против "зависит" в metadata.rb

В чем разница между добавлением кулинарных книг в Berksfile с использованием "cookbook" и добавлением кулинарных книг в metadata.rb с использованием "depen"? Например, если я добавлю в metadata.rb

depends 'nginx'

мне нужно добавить его в Berksfile, используя

cookbook 'nginx'

?

2 ответа

Решение

Файл Berksfile специфичен для Berkshelf, а файл метаданных встроен в Chef.

Добавление ваших зависимостей в файл метаданных позволяет другим приложениям, таким как librarian-chef или супермаркет, также читать ваши зависимости.

Обратите внимание, что Berkshelf считывает зависимости из метаданных, пока вы добавляете metadata линия к Berksfile.

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

Berksfile и metadata.rb преследуют разные цели и появляются на разных этапах жизненного цикла кулинарной книги.

  1. Berksfile для управления зависимостями для поваренных книг. Рассмотрим случай, когда моя кулинарная книга использует поваренную книгу сообщества от супермаркета шеф-повара. В этом случае сначала мне нужно скачать эту поваренную книгу сообщества из супермаркета и загрузить ее вместе со своей собственной поваренной книгой на сервер шеф-повара. Berksfile упрощает этот рабочий процесс для вас. С одной командой (berks install), он загружает все зависимые кулинарные книги (и их зависимые кулинарные книги - транзитивные зависимости) из их соответствующих источников (может быть из репозитория git или из супермаркета). С другой единственной командой berks upload он загружает все эти кулинарные книги на сервер Chef. Вам не нужно загружать их отдельно с knife cookbook upload, Роль Berksfile в конкретном жизненном цикле кулинарных книг заканчивается здесь.

  2. metadata.rb ссылается на клиента-шеф-повара при фактическом сближении узла. Он использует этот файл для загрузки всех необходимых поваренных книг с сервера chef (при условии, что эти поваренные книги теперь доступны на сервере chef с помощью berkshelf или же knife) к узлу для успешного завершения запуска chef-client.

Вам не нужно объявлять зависимости в обоих файлах @Kamil. Объявите свои зависимости в metadata.rb и укажите свой локальный домашний супермаркет или супермаркет шеф-повара в berksfile, который загрузит зависимости для вас.

Другие вопросы по тегам