Я экспериментирую с Vagrant и Puppet, подготавливая машину для разработки проекта на базе Apache/PHP/Mongo.
У меня все компоненты настроены правильно (с помощью модулей из Puppet Forge), но я не могу понять, как заставить PHP общаться с Mongo. phpinfo()
показывает, что драйвер Mongo не установлен — что вполне логично, поскольку я понятия не имею, как его установить.
Модуль puppet, который я использую для установки PHP, взят из Lab42 и доступен по адресуhttp://github.com/lermit/puppet-php. В файле readme показано, как переключатьсямодулино нетводители(насколько мне известно, подключение к 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
Итак, есть пара вещей, которые я не понимаю:
- Если я попросил Puppet установить модуль через PECL, почему он делает это через apt-get?
- Почему он не может найти этот пакет? Какой репозиторий мне добавить, чтобы он заработал?
Еще раз спасибо.
решение1
Я уверен, что ответ на оба вопроса кроется в используемом вами модуле puppet.
Безусловно, использование модулей, разработанных другими, имеет большое преимущество, поскольку вы можете извлечь пользу из знаний, которые они заложили в эти модули, но я бы рекомендовал вам:
Сначала разберемся, как выполнить установку вручную (т.е. без puppet)
Во-вторых, создайте простой модуль Puppet, который автоматизирует это.
В-третьих, попробуйте использовать модули puppet, которые вы найдете, особенно на puppetforge:https://forge.puppetlabs.com/чтобы увидеть, работают ли они лучше или предлагают ли дополнительные функции.
Есть много хороших ресурсов по Vagrant и Puppet, но один из моих любимых — Deploying Railshttp://pragprog.com/book/cbdepra/deploying-rails- очевидно, ориентирован на Ruby on Rails, но он создает с нуля среду тестирования Vagrant/Puppet/VirtualBox, которая очень похожа на вашу.
решение2
Для меня ответом был параметр use_package
:
php::pecl::module { "mongo": use_package => 'no', }
Теперь все работает как часы!