如何使用Berkshelf管理组织回购?

时间:2013-05-17 07:04:48

标签: chef vagrant 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. 图书管理员 - 厨师很高兴管理顶级编排
  3. 我是对还是错?你们如何使用Berkshelf来管理你的Org厨师回购?

2 个答案:

答案 0 :(得分:3)

正如我在GitHub的回复中所说:

如果Berksfile顶部有chef-repo,您可以让Berkshelf为您管理所有食谱依赖项。

例如,让我们说我正在编写一本依赖于apache2 cookbook的应用程序食谱。我会添加到Berksfile

site :opscode

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

运行berks install命令安装此cookbook。因为它是一个图书馆,所以它安装在你的机器上,并且在某个地方"而且你不应该费心去寻找它。现在,您生成应用程序菜谱(让我们称之为my-apache2):

$ berks cookbook my-apache2

这将为你创造骨架。然后,您可以在apache2

中添加metadata.rb作为此新菜谱的依赖项
name 'my-apache2'
# suppressed
version '1.0.0'

depends 'apache2'

您的目录结构如下:

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

请注意apache食谱不存在。图书馆的食谱都存在~/.berkshelf/cookbooks,但您不必担心。它们会自动拉入并添加到您的路径中。

如果其他队友想要使用你的chef-repo,只需让他们运行berks install,所有必要的依赖项也将安装在他们的机器上。

当您运行berks upload之类的命令时,Berkshelf会自动为您找到并解析所有必需的食谱。

这有意义吗?

答案 1 :(得分:1)

我相信这里得到了答案:https://github.com/RiotGames/berkshelf/issues/535