2013-05-17 29 views
5

我是Berkshelf的忠实粉丝,我已经发布了几本使用它的社区烹饪书,它很棒。如何使用Berkshelf管理组织回购?

现在,我开始了一个新的厨师项目,我也为Berkshelf做了这个。

但我发现一些混淆/困难使用它的项目。

以下是在Berksfile:

site :opscode 

cookbook 'mediawiki', github: 'millisami/chef-mediawiki' 
cookbook 'sp-mediawiki', path: 'site-cookbooks/sp-mediawiki' 

我产生site-cookbooks文件夹内我的应用程序的食谱。

当我做berks install,它的错误了:

An error occurred while reading the Berksfile: no metadata.rb or metadata.json found at \ 
/Users/millisami/Code/chef-sp/site-cookbooks/sp-mediawiki 

现在我想知道我在哪里产生我的应用程序sp-mediawiki食谱?

如果只是创建一个新的berks cookbook sp-mediawiki,它将类似于图书馆的食谱。

这种流程完全使用librarian-chef完成,我正在使用另一个项目。

所以,我试图把一个行:

  1. Berkshelf好制定个人食谱
  2. 馆员厨师是很好的管理顶层编排

我是对/错?您如何使用Berkshelf来管理您的Org的厨师回购?

+0

您是否找到解决此问题的解决方案?回答你自己的问题是可以的。请不要忘记标记答案是正确的! :) – sethvargo

回答

3

正如我在GitHub上回应称:

如果你有一个Berksfilechef-repo的顶部,您可以在Berkshelf管理所有的食谱依赖关系。

例如,假设我正在编写一个依赖于apache2食谱的应用食谱。我想补充我的Berksfile

site :opscode 

cookbook 'apache2', '~> x.x.x' # optional version constraint 

并运行berks install命令来安装这个食谱。因为它是一个图书馆,它安装在你的机器上“某个地方”,你不应该费心寻找它。现在,您生成您的应用程序的食谱(我们称之为my-apache2):

$ berks cookbook my-apache2 

,这将创建骨架为您服务。然后你就可以在metadata.rb这种新食谱添加apache2作为一个依赖:

name 'my-apache2' 
# suppressed 
version '1.0.0' 

depends 'apache2' 

而且你的目录结构如下:

chef-repo 
    | Berksfile 
    |_ cookbooks 
    |_ my-apache2 

通知的apache食谱是不存在的。图书馆的食谱都住在~/.berkshelf/cookbooks,但你不应该担心这一点。它们会自动拉入并添加到您的路径中。

如果另一个队友想要使用厨师回购,只需让他们运行berks install并且所有必需的依赖关系也将安装在他们的机器上。

当您运行诸如berks upload之类的命令时,Berkshelf会自动为您找到并解决所有必要的烹饪书。

这是否有意义?

+0

我知道这个问题和答案现在差不多两年了,但我还不清楚如何使用Berkshelf和* organization * repo。你在答案中使用应用食谱作为例子,但对我来说这并不明显,这对于这个问题是如何适用的(特别是对于厨师零)。 Berkshelf是否需要一本食谱?是否没有办法创建一个不包含任何食谱(直接)本身的组织回购协议? –