Chef-Repo Berkshelf混乱设置

时间:2014-03-07 15:34:09

标签: windows git berksfile

对于Chef / Berkshelf来说,我很困惑,需要帮助和建议。

我发现/阅读的内容是对Berkshelf的一些事情的强调假设,对于新手来说,有一些需要填充的灰色区域

让我试着解释一下:

我遵循典型的厨师路径

在用户目录中创建Chef-repo

C:\用户\ itsmeofcourse \厨师回购

然后把它挂进一个内部的git-repo 并愉快地为Windows编写基本菜谱并将所有内容上传到git-repo

因为它的每个食谱都存在于我的chef-repo的“cookbook”文件夹中。

C:\Users\itsmeofcourse\chef-repo
                            /cookbook

然后我沿着社区食谱编写封面食谱的路径,所以看起来像

client_iis - 取决于 department_iis - 取决于 global_iis - 取决于 iis - 社区食谱

这使我们可以在基础架构中的某些不同级别进行IIS更改。

现在我感觉文件倒塌了,是不是每个人都说要将你的食谱从“食谱”文件夹中移出

所以我理解,“你的”厨师回购将存在于git-repo中,但只是为了更改子文件夹,如环境/数据包/角色/证书等?然后,食谱是单独的项目是正确与否?

你将食谱移到哪里?你机器上/你的用户%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

我能问一下我错过了什么

或者你将berks文件放在我的chef-repo的根目录中然后做什么?管理我的cookbook文件夹中的所有内容?

我已阅读https://github.com/berkshelf/berkshelf/issues/535

请有人帮忙

1 个答案:

答案 0 :(得分:0)

是的,它是正确的,您通常会将您的食谱移到一个单独的存储库中。

我有一个 gotcha ,正在读这篇文章:http://www.prashantrajan.com/posts/2013/06/leveling-up-chef-best-practices/和"单回购每本食谱"部分。阅读整件事,这很好!

好像你没有遗漏任何东西。将您的食谱从cookbook目录中移出,意味着每个食谱创建单独的repos,并使用顶级Berksfile(在chef-repo的根目录中)依赖它们。

对于网络应用程序(称为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包装器库存储在其repo中。

回答你的上一个问题" "厨师如何知道这些存储的位置,或者你必须修改你的" 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/"来源选项"部分。