Instalando o driver Mongo para PHP usando Puppet + Vagrant

Instalando o driver Mongo para PHP usando Puppet + Vagrant

Estou brincando com Vagrant e Puppet, provisionando uma máquina de desenvolvimento para um projeto baseado em Apache/PHP/Mongo.

Eu tenho todos os componentes configurados corretamente (usando módulos do Puppet Forge), mas não consigo descobrir como fazer o PHP falar com o Mongo. phpinfo()mostra que o driver Mongo não está instalado - o que só faz sentido, pois não tenho ideia de como instalá-lo.

O módulo puppet que utilizo para instalar o PHP é o do Lab42, disponível emhttp://github.com/lermit/puppet-php. O leia-me demonstra como alternarmódulosmas nãomotoristas(afaik, a conectividade do Mongo é estabelecida por meio de um driver em vez de um módulo).

Qualquer ajuda, dicas ou links para um .pparquivo onde isso foi realmente feito serão bem-vindos. Obrigado!

Atualizar:

Descobri esta linha mágica:php::pecl::module { "mongo": }

Basicamente, adicionar suporte ao Mongo via PECL. Mas quando o Puppet tenta executá-lo, recebo o seguinte:

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 

Então, algumas coisas que não entendo sobre isso:

  1. Se eu pedi ao Puppet para instalar o módulo via PECL, por que ele está fazendo isso via apt-get?
  2. Por que não consegue encontrar esse pacote? Qual repositório devo adicionar para que funcione?

Obrigado novamente.

Responder1

Tenho certeza de que a resposta para ambas as perguntas está no módulo fantoche que você está usando.

Certamente há uma grande vantagem em usar módulos desenvolvidos por outros, porque você pode obter o conhecimento que eles incorporaram nos módulos, mas eu recomendo que você:

Primeiro, descubra como fazer a instalação manualmente (ou seja, sem fantoche)

Segundo, crie um módulo Puppet simples que automatize isso

Terceiro, tente usar os módulos fantoches que você encontrar, esp. no fantocheforge:https://forge.puppetlabs.com/para ver se eles funcionam melhor ou oferecem recursos adicionais.

Existem muitos recursos bons no Vagrant e no Puppet, mas um dos meus favoritos é Deploying Railshttp://pragprog.com/book/cbdepra/deploying-rails- obviamente focado em Ruby on Rails, mas cria um ambiente de teste Vagrant/Puppet/VirtualBox que se parece muito com o seu, do zero.

Responder2

Para mim a resposta foi parâmetro use_package:

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

Agora isso trabalha como charme!

informação relacionada