对于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
请有人帮忙
答案 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/"来源选项"部分。