【问题标题】:Problems with using non-community cookbooks with berkshelf在 berkshelf 中使用非社区食谱的问题
【发布时间】:2013-12-27 01:36:35
【问题描述】:

但是 Opscode PHP 食谱似乎不支持 php-fpm 但我注意到这个支持:https://github.com/priestjim/chef-php 我签入了一个名为“chef-php”的食谱文件夹

在我添加的 nginx+php 食谱的 Berksfile 中:

cookbook 'chef-php', path: "../chef-php"

site :opscode

metadata 

如果我在那本食谱中运行berks install,那么我会看到

 Using chef-php (1.2.0) at '../chef-php'

包含在输出中,表明一切正常。

因此,如果我随后转到包含以下 Berksfile 的应用程序说明书:

cookbook 'pogo-nginx-php', path: "../pogo-nginx-php"

site :opscode

metadata 

然后运行berks install 我得到以下错误:

Cookbook 'chef-php' not found in any of the default locations

我读到,当解决依赖关系的依赖关系时,Berkshelf 使用 metadata.rb 而不是 Berksfile,如果这是真的,那么解决此类问题的正确方法是什么?还是我刚刚犯了一些愚蠢的错误(完全有可能!)

谢谢。

【问题讨论】:

    标签: chef-infra berkshelf


    【解决方案1】:

    Berkshelf 目前不支持嵌套的 Berksfiles。

    我认为 metadata.rb 文件用于解决 child 食谱的依赖关系是正确的。这意味着您将无法指定源,因为 metadata.rb 不包含超出食谱名称和版本限制的任何内容

    在 Berkshelf 存储库中的拉取请求中有一个有趣的discussion,关于避免嵌套 Berksfiles 的原因(如何解决与食谱冲突的路径以及其他问题)。

    我使用 Chef 的方式与您类似,但遇到了同样的问题。我正在使用的解决方法是拥有一个“应用程序”Berksfile。该文件包含整个应用程序的所有依赖项。在此文件上调用 berks upload 会将您的所有依赖项上传到 Chef 服务器。

    在拉取请求讨论中提出的解决方法是在您的 Berksfile 中使用 chef_api :config 之前的 site :opscode。在查看 opscode 社区站点以获取食谱之前,这将查看您的私人 Chef 服务器。这样做的一个后果是,您需要先上传您的自定义食谱,然后再尝试上传需要它的食谱。

    【讨论】:

    • 感谢您的回复,很遗憾嵌套文件的阻力如此之大,至少它使 berkshelf 有点没用,除非您需要的所有食谱都在 opscode 网站上。
    【解决方案2】:

    以下 Berks 文件:

    site :opscode
    
    cookbook "chef-php", github: "priestjim/chef-php"
    

    下载以下食谱:

    $ berks install
    Installing chef-php (1.2.0) from git: 'git://github.com/priestjim/chef-php.git' with branch: 'master' at ref: '19a5474e14ae2d9d05fc670aeb0cf122c3859acb'
    Installing build-essential (1.4.2) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'
    Installing xml (1.2.0) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'
    Installing yumrepo (2.0.0) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'
    Installing yum (2.4.4) from site: 'http://cookbooks.opscode.com/api/v1/cookbooks'
    

    【讨论】:

    • 我遗漏了一些东西 - 这是什么意思?
    • @DerekMorrison 我很久以前写过这个。我认为这意味着我无法重现报告的问题。
    猜你喜欢
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多