我是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
cookbook?如果仅创建一个新的
berks cookbook sp-mediawiki
,它将类似于库食谱。使用
librarian-chef
可以很好地完成这种流程,这是我在另一个项目上使用的。所以,我想写一行:
我对/错吗?你们如何使用Berkshelf来管理Org的厨师仓库?
最佳答案
正如我在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将为您自动查找并解析所有必要的食谱。这有意义吗?