如何使用“php”食谱的厨师的“php_pear”提供程序

当使用Vagrant(以及后来的Chef)时,我使用Zend Server CEconfiguration我的虚拟机,它会自动安装通常的* AMP堆栈。

我想通过PEAR安装一些包,“php”食谱已经有一个“pear”和“pear_channel”提供程序。 但是,通过调用require_recipe("php")default.rb会自动运行,尝试重新安装PHP

我只想利用less数提供者而不执行default.rb

有没有办法做到这一点?

你需要确保你所有的厨师食谱对你的环境都是幂等的和无损的。 当您需要或包含食谱时,厨师总是会运行default.rb。

两种方法来解决这个问题:

  1. 让你的PHP配方检查安装的PHP二进制文件,如果发现它们什么也不做
  2. 将安装步骤移至default.rb之外的新配方文件

第一是最好的解决scheme,但如果你确实有你想要使用PEAR的情况,但没有厨师pipe理PHP,你可以做第二个。

你可以指定你的食谱取决于opscode php cookbook,通过添加depends'php depends 'php'到你的食谱的metadata.rb。 通过使用依赖,你不必实际运行PHP食谱。 请参阅http://wiki.opscode.com/display/chef/Metadata#Metadata-depends

然后,假设你的厨师服务器提供了php的食谱,一个厨师 – 客户端的运行会拉下php的食谱,这样php_pear和php_pear_channel资源就可以使用了。 在你自己的食谱中,只需根据php食谱添加说明:

 php_pear "DB" do action :install end