Шеф-Репо Berkshelf Confusion Setup
Я так смущен, когда дело доходит до шеф-повара / Berkshelf и нуждаются в помощи и совете.
То, что я нашел / прочитал, есть кое-что подчеркивающее предположение с некоторыми вещами с Berkshelf, и для новичка есть немного серой области, которая нуждается в заполнении
Позвольте мне попытаться объяснить:
Я пошел по типичному пути шеф-повара
Создать Chef-репо в пользовательском каталоге
C:\Users\itsmeofcourse\ шеф-репо
затем подключил это к внутреннему git-repo и с радостью написал основные кулинарные книги для Windows и загрузил все в это git-repo
как есть, каждая поваренная книга находится в папке "поваренная книга" моего шеф-репо.
C:\Users\itsmeofcourse\chef-repo
/cookbook
Затем я пошел по пути написания кулинарных книг-оберток вокруг кулинарных книг сообщества, так что это выглядело бы как
client_iis - зависит от отдела_iis - зависит от global_iis - зависит от iis - поваренная книга сообщества
это позволяет нам вносить изменения в IIS на определенных различных уровнях нашей инфраструктуры.
Теперь, когда я чувствую, что документация падает, все говорят, что убери свои кулинарные книги из папки "Поваренная книга"
так что, как я понимаю, "ваше" шеф-репо будет существовать в git-репо, но только для изменений в подпапках, таких как окружение / пакеты данных / роли / сертификаты и т. д.? а кулинарная книга - это тогда отдельные проекты это правильно или нет?
Куда вы перемещаете свои кулинарные книги? где-нибудь на вашей машине / внутри вашего пользователя%home%? Как Chef узнает, где они хранятся, или вам нужно изменить свой "knife.rb" и указать на определенный каталог?
так это будет выглядеть
knife.rb cookbook_path ["c: / cookbooks"]
C:\Users\itsmeofcourse\ chef-repo: github => repo_1
c:/cooksbooks
/base :github => repo_2
/iis :github => repo_3
/sql :github => repo_4
/client_iis :github => repo_
/department_iis :github => repo_3
Могу ли я спросить, что мне не хватает
или вы помещаете berksfile в корень моего шеф-репо, а затем делаете что? управлять всем в моей папке поваренной книги?
Я прочитал https://github.com/berkshelf/berkshelf/issues/535
пожалуйста, кто-нибудь может помочь
1 ответ
Да, это правильно, и вы обычно переносите свои кулинарные книги в отдельный репозиторий.
Одна вещь, которая у меня была, была при чтении этой статьи: http://www.prashantrajan.com/posts/2013/06/leveling-up-chef-best-practices/ и части "Один репо на кулинарную книгу". Прочитайте все это, это хорошо!
Кажется, ты ничего не упустил. Перемещение ваших кулинарных книг из каталога кулинарных книг означает создание отдельных репозиториев для каждой кулинарной книги и в зависимости от них с помощью Berksfile верхнего уровня (в корне вашего chef-repo).
Для типичного репозитория vagrant+chef для веб-приложения (называемого coolwebapp) я обычно имел бы:
.
+-- cmp-cookbooks
| +-- cmp-coolwebapp (this is only cookbook stored in this repo, and this repo exists because of this cookbook)
+-- data_bags
| +-- users
| | +-- mysql.json
| | +-- os.json
| | +-- admins.json
| +-- private_keys
| +-- deployment.json
+-- environments
| +-- production.rb
| +-- staging.rb
| +-- qa.rb
| +-- integration.rb
| +-- local.rb
+-- nodes (but this should not be stored in your repo I guess)
| +-- ip_here.json
| +-- other_ip_here.json
+-- Berksfile
+-- Vagrantfile
Berksfile будет содержать:
cookbook "cmp-coolwebapp", "~>0.3.0", path: "./cmp-cookbooks/cmp-coolwebapp"
cookbook "cmp-provisioning", "~>0.7.0", git: _priv_provisioning_cookbook_repo_
cookbook "cmp-role-db", "~>0.7.0", git: _priv_role1_cookbook_repo_
cookbook "cmp-role-www", "~>0.8.0", git: _priv_role2_cookbook_repo_
cookbook "cmp-role-devops", "~>0.7.0", git: _priv_role3_cookbook_repo_
"cmp" обозначает название нашей компании. Наши кулинарные книги хранятся в частных репозиториях и поддерживаются индивидуально.
Например, в "Кулинарной книге" cmp-role-www в Berksfile в качестве зависимостей будут в основном поваренные книги сообщества, а в репозитории хранятся наши собственные кулинарные книги обертки cmp-apache2, cmp-nginx, cmp-varnish.
Отвечая на ваш последний вопрос: "Как Chef узнает, где они хранятся, или вам нужно изменить свой"knife.rb"и указать на определенный каталог?"
Если вы управляете зависимостями поваренной книги с помощью Berkshelf, вы можете включить поваренную книгу из любого места, которое вы предпочитаете:
cookbook "artifact", path: "/Users/reset/code/artifact-cookbook"
cookbook "mysql", git: "https://github.com/opscode-cookbooks/mysql.git", branch: "foodcritic"
cookbook "rightscale", git: "https://github.com/rightscale/rightscale_cookbooks.git", rel: "cookbooks/rightscale"
Последнее полезно, когда вы храните несколько кулинарных книг компании в одном хранилище. http://berkshelf.com/ Раздел " Параметры источника".