Назад | Перейти на главную страницу

Установка драйвера Mongo для PHP с помощью Puppet + Vagrant

Я играю с Vagrant и Puppet, предоставляя машину разработки для проекта, основанного на Apache / PHP / Mongo.

У меня все компоненты настроены правильно (с использованием модулей из Puppet Forge), но, хоть убей, я не могу понять, как заставить PHP разговаривать с Mongo. phpinfo() показывает, что драйвер Mongo не установлен - что имеет смысл только потому, что я понятия не имею, как его установить.

Модуль марионетки, который я использую для установки PHP, - это модуль от Lab42, доступный по адресу http://github.com/lermit/puppet-php . В файле readme показано, как переключать модули но нет водители (afaik, соединение Mongo устанавливается через драйвер, а не через модуль).

Любая помощь, советы или ссылки на .pp файл, в котором это действительно было сделано, будет очень кстати. Спасибо!

Обновить:

Выяснили эту волшебную линию: php::pecl::module { "mongo": }

Чтобы в основном добавить поддержку Mongo через PECL. Но когда Puppet пытается запустить его, я получаю следующее:

err: /Stage[main]/Project/Php::Pecl::Module[mongo]/Package[php-mongo]/ensure: 
change from purged to present failed: 
Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install php5-mongo' 
returned 100: Reading package lists...
Building dependency tree...         
Reading state information...        
E: Couldn't find package php5-mongo 

Итак, я кое-чего не понимаю по этому поводу:

  1. Если я попросил Puppet установить модуль через PECL, почему он сделал это через apt-get?
  2. Почему он не может найти этот пакет? Какое репо нужно добавить, чтобы оно заработало?

Еще раз спасибо.

Для меня ответ был параметром use_package :

php::pecl::module { "mongo": use_package => 'no', }

Теперь это работает как шарм!

Я уверен, что ответ на оба вопроса содержится в используемом вами марионеточном модуле.

Несомненно, есть большое преимущество в использовании модулей, разработанных другими, потому что вы можете извлечь выгоду из знаний, которые они встроили в модули, но я бы рекомендовал вам:

Сначала выясните, как выполнить установку вручную (т. Е. Без марионетки)

Во-вторых, создайте простой модуль Puppet, который автоматизирует это

В-третьих, попробуйте использовать найденные вами марионеточные модули, особенно. на марионеточной кузнице: https://forge.puppetlabs.com/ чтобы узнать, работают ли они лучше или предлагают дополнительные функции.

По Vagrant и Puppet есть много хороших ресурсов, но один из моих любимых - Deploying Rails. http://pragprog.com/book/cbdepra/deploying-rails - очевидно, сосредоточен на Ruby on Rails, но он создает среду тестирования Vagrant / Puppet / VirtualBox, которая очень похожа на вашу, с нуля.