"Поваренная книга" шеф-повара в 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 преследуют разные цели и появляются на разных этапах жизненного цикла кулинарной книги.
Berksfile для управления зависимостями для поваренных книг. Рассмотрим случай, когда моя кулинарная книга использует поваренную книгу сообщества от супермаркета шеф-повара. В этом случае сначала мне нужно скачать эту поваренную книгу сообщества из супермаркета и загрузить ее вместе со своей собственной поваренной книгой на сервер шеф-повара. Berksfile упрощает этот рабочий процесс для вас. С одной командой (
berks install
), он загружает все зависимые кулинарные книги (и их зависимые кулинарные книги - транзитивные зависимости) из их соответствующих источников (может быть из репозитория git или из супермаркета). С другой единственной командойberks upload
он загружает все эти кулинарные книги на сервер Chef. Вам не нужно загружать их отдельно сknife cookbook upload
, Роль Berksfile в конкретном жизненном цикле кулинарных книг заканчивается здесь.metadata.rb ссылается на клиента-шеф-повара при фактическом сближении узла. Он использует этот файл для загрузки всех необходимых поваренных книг с сервера chef (при условии, что эти поваренные книги теперь доступны на сервере chef с помощью
berkshelf
или жеknife
) к узлу для успешного завершения запуска chef-client.
Вам не нужно объявлять зависимости в обоих файлах @Kamil. Объявите свои зависимости в metadata.rb и укажите свой локальный домашний супермаркет или супермаркет шеф-повара в berksfile, который загрузит зависимости для вас.