我是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非常适合开发个人食谱
  • 图书管理员可以很好地管理顶级业务流程

  • 我对/错吗?你们如何使用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将为您自动查找并解析所有必要的食谱。

    这有意义吗?

    10-08 04:31