tl;dr - Berkshelf-API и Chef Supermarket са това, което Berkshelf използва за изтегляне на зависимости от готварски книги. Те доставят на Berkshelf специално форматиран .JSON документ за определяне на зависимостите на готварските книги. Не открих причина, поради която други хранилища на артефакти не могат да бъдат модифицирани, за да върнат подобно форматиран .JSON документ, но доколкото ми е известно, в момента никой не го прави.
Berkshelf-API: „Сървър, който индексира готварски книги от различни източници и го хоства през REST API“
Всъщност Berkshelf-API се използва от Chef Supermarket.
Можете ръчно да изтеглите списъка с готварски книги от супермаркета, като добавите „/universe“ към URL адреса (https://supermarket.getchef.com/universe).
Когато Berkshelf се използва за разрешаване на зависимости (използвайки „berks install“ или „berks update“), той търси записа на източника (обикновено „source"https://supermarket.getchef.com"' в горната част на Berksfile на готварската книга).
Berksfile също има „метаданни“ под записа на източника. Това зарежда зависимостите на готварската книга, изброени във файла metadata.rb на готварската книга. Те могат да бъдат заменени от зависимостите на готварската книга, изброени под записа „метаданни“ в Berksfile.
След това Berkshelf започва да изтегля зависимости от готварска книга от източника (в този случай Супермаркет).
Въпреки това, Berkshelf не зарежда рекурсивно файловете metadata.rb или Berkshelf на зависимостите.
пример: ако Foo зависи от Bar, който зависи от Baz
Фу => Бар => Баз
Foo ще посочи зависимостта на Bar в metadata.rb или Berksfile.
Лентата ще покаже зависимостта на Baz или в metadata.rb, или в Berksfile.
Berkshelf обаче няма да определи зависимостите за Bar (в този случай Baz) чрез четене на metadata.rb или Berksfile на Bar. Вместо това той определя зависимостите на Bar, като използва кеширан списък с готварски книги с версии от Berkshelf-API, който се връща от извикването към източника.
Частен Berkshelf-API сървър може да бъде настроен с множество крайни точки, сочещи към различни хранилища на готварски книги (или друг Berkshelf-API сървър, или Chef Server).
Така че често срещано използване е Private Berkshelf-API сървър, който сочи както към Private Chef Server (съхраняващ непублични готварски книги), така и към сървъра на Chef Supermarket (съхраняващ публични готварски книги).
person
DonBecker
schedule
14.11.2014