Instalando o driver Mongo para PHP usando o Puppet + Vagrant

1

Estou brincando com o Vagrant and Puppet, fornecendo 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 para a vida de mim, 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 de fantoches que eu uso para instalar o PHP é o do Lab42, disponível no link . O leia-me demonstra como alternar módulos , mas não drivers (afaik, a conectividade do Mongo é estabelecida por meio de um driver em vez de um módulo).

Qualquer ajuda, dicas ou links para um arquivo .pp em que isso foi realmente feito seria muito bem-vindo. Obrigado!

Atualização:

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

Basicamente, adicione suporte ao Mongo via PECL. Mas quando o Puppet tenta executá-lo, eu entendo isso:

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 eu não entendo sobre isso:

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

Obrigado novamente.

    
por ezuk 05.09.2013 / 15:36

2 respostas

0

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

Há certamente uma grande vantagem em usar módulos que outros desenvolveram, porque você pode ganhar com o conhecimento que eles embutiram nos módulos, mas eu recomendo que você:

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

Em segundo lugar, crie um módulo Puppet simples que automatize isso

Em terceiro lugar, tente usar os módulos de fantoches que você encontra, esp. na puppetforge: link para ver se funcionam melhor ou oferecem recursos adicionais.

Existem muitos recursos bons no Vagrant e no Puppet, mas um dos meus favoritos é o link do Deploying Rails obviamente focado em Ruby on Rails, mas ele cria um ambiente de teste Vagrant / Puppet / VirtualBox que soa muito parecido com o seu, do zero.

    
por 09.09.2013 / 16:30
2

Para mim, a resposta foi o parâmetro use_package :

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

Agora funciona como um encanto!

    
por 05.06.2014 / 14:32