При использовании Vagrant (а затем и Chef) я настраиваю свою виртуальную машину с помощью Zend Server CE, который автоматически устанавливает обычно * стек AMP.
Я хотел бы установить некоторые пакеты через PEAR, для которых в кулинарной книге "php" уже есть провайдер "pear" и "pear_channel". Однако, позвонив require_recipe("php")
, default.rb
запускается автоматически и пытается переустановить PHP.
Я просто хочу воспользоваться преимуществами нескольких поставщиков, не выполняя default.rb
.
Есть ли способ сделать это?
Вы можете указать, что ваша кулинарная книга зависит от кулинарной книги opscode php, добавив depends 'php'
в файл metadata.rb вашей кулинарной книги. Используя зависимости, вам не нужно запускать поваренную книгу php. Видеть http://wiki.opscode.com/display/chef/Metadata#Metadata-depends
Затем, предполагая, что поваренная книга php доступна с вашего сервера-повара, запуск chef-client откроет поваренную книгу php, чтобы были доступны ресурсы php_pear и php_pear_channel. В своем собственном рецепте просто добавьте инструкции в соответствии с рецептом php:
php_pear "DB" do
action :install
end
Вы должны убедиться, что все рецепты от шеф-повара идемпотентны и не наносят вреда окружающей среде. Chef всегда запускает default.rb, когда вы требуете или включаете рецепт.
Два способа исправить это:
Номер один - лучшее решение, но если у вас действительно есть ситуации, когда вы хотите использовать PEAR, но не имеете возможности повара управлять php, вы можете сделать второе.