我是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
完美地完成了这种流程。
所以,我试图写一句:
我是对还是错?你们如何使用Berkshelf来管理你的Org厨师回购?
答案 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)