2013-12-09 39 views
1

我想创建一个食谱,将安装nginx + php-fpm与一些很好的默认选项,然后可以由我的应用食谱使用。使用非社区食谱与berkshelf的问题

但Opscode公司PHP食谱似乎不支持PHP-FPM但我注意到这一个作用:https://github.com/priestjim/chef-php我签出到名为“厨师PHP”

在Berksfile我nginx的食谱文件夹+ PHP食谱我说:

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

site :opscode 

metadata 

如果我运行berks install那里面食谱然后我看到

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

包含在T他的输出表明一切正常。

所以,如果我当时头向它具有以下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,如果这是真的,那么解决这类问题的正确方法是什么?或者我只是做了一些愚蠢的错误(完全可能!)

谢谢。

回答

3

Berkshelf目前不支持嵌套Berksfiles。

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

Berkshelf存储库中的拉取请求有一个有趣的discussion,避免嵌套Berksfiles的推理(如何解决烹饪书籍之间的冲突路径等)。

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

拉请求讨论中提出的解决方法是在Berksfile中的site :opscode之前使用chef_api :config。在查看opscode社区网站的食谱之前,这将查看您的私人厨师服务器。 Onc的影响是,你需要上传你的自定义食谱,然后尝试上传你的食谱,需要它。

+0

感谢您的回应,对于嵌套文件有如此多的抵制,至少这会让berkshelf变得无用,除非您需要的所有食谱都在opscode网站上。 – pogo

3

以下Berksfile:

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' 
+0

我错过了什么 - 这是什么意思? –

+0

@DerekMorrison我写了很久以前。我认为这意味着我无法重现所报告的问题。 –