Настройка путаницы Chef-Repo Berkshelf

Я тааак смущен, когда дело доходит до Chef / Berkshelf, и мне нужна помощь и совет.

Что я нашел / прочитал, есть подчеркивающее предположение о некоторых вещах с Berkshelf, и для новичка есть немного серой области, которую нужно заполнить.

Попробую объяснить:

Я следовал типичному пути шеф-повара

Создайте Chef-repo в каталоге пользователя

C:\Users\itsmeofcourse\chef-repo

затем подключил это к внутреннему git-репозиторию и с радостью написал основные кулинарные книги для Windows и загрузил все в это git-репозиторий.

в нынешнем виде каждая поваренная книга находится в папке «поваренная книга» в моем репозитории шеф-повара.

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.

пожалуйста, может кто-нибудь помочь


person stravze    schedule 07.03.2014    source источник


Ответы (1)


Да, это правильно, и вы обычно перемещаете свои поваренные книги в отдельный репозиторий.

Одна загвоздка, которую я обнаружил во время чтения этой статьи: http://www.prashantrajan.com/posts/2013/06/leveling-up-chef-best-practices/ и часть "Единое репо на кулинарную книгу". Прочитайте все, это хорошо!

Кажется, вы ничего не упускаете. Перемещение ваших поваренных книг из каталога поваренных книг означает создание отдельных репозиториев для каждой поваренной книги и в зависимости от них использование Berksfile верхнего уровня (в корне вашего поварского репозитория).

Для типичного репозитория 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" означает название нашей компании. Наши кулинарные книги хранятся в частных репозиториях и ведутся индивидуально.

Cookbook 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/ "Параметры источника".

person jkulak    schedule 16.11.2014