5

我是 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. Librarian-chef 擅长管理顶层编排

我是对/错吗?你们是如何使用 Berkshelf 来管理 Org 的 chef-repo 的?

4

2 回答 2

3

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

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

例如,假设我正在编写一个依赖于 apache2 说明书的应用程序说明书。我会添加到我的Berksfile

site :opscode

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

并运行berks install命令安装此说明书。因为它是一个库,所以它安装在你的机器上“某处”,你不应该费心去寻找它。现在,您生成了您的应用程序手册(我们称之为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 会自动为您查找并解析所有必要的说明书。

这有意义吗?

于 2013-12-21T04:32:52.193 回答
1

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

于 2013-07-17T03:51:36.580 回答