使用 Puppet+Vagrant 安装 PHP 的 Mongo 驱动程序

使用 Puppet+Vagrant 安装 PHP 的 Mongo 驱动程序

我正在使用 Vagrant 和 Puppet,为基于 Apache/PHP/Mongo 的项目配置一台开发机器。

我已经正确设置了所有组件(使用来自 Puppet Forge 的模块),但我无论如何都无法弄清楚如何让 PHP 与 Mongo 对话。phpinfo()显示未安装 Mongo 驱动程序 - 这很有意义,因为我不知道如何安装它。

我用来安装 PHP 的 puppet 模块来自 Lab42,可从以下网址获取http://github.com/lermit/puppet-php。自述文件演示了如何切换模块但不是驱动程序(据我所知,Mongo 连接是通过驱动程序而不是模块建立的)。

任何帮助、提示或.pp实际执行此操作的文件链接都将非常受欢迎。谢谢!

更新:

想出了这条神奇的线:php::pecl::module { "mongo": }

基本上是通过 PECL 添加 Mongo 支持。但是当 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. 为什么找不到该软件包?我应该添加哪个 repo 才能使其工作?

再次感谢。

答案1

我确信这两个问题的答案都在您正在使用的 puppet 模块中。

使用其他人开发的模块当然具有很大的优势,因为您可以从他们嵌入在模块中的知识中获益,但我建议您:

首先,弄清楚如何手动安装(即不使用 puppet)

其次,创建一个简单的 Puppet 模块来自动化

第三,尝试使用您找到的 puppet 模块,尤其是在 puppetforge 上:https://forge.puppetlabs.com/看看它们是否运行得更好或者是否提供附加功能。

关于 Vagrant 和 Puppet 有很多很好的资源,但我最喜欢的是部署 Railshttp://pragprog.com/book/cbdepra/deploying-rails- 显然专注于 Ruby on Rails,但它从头开始构建了一个听起来很像你的 Vagrant/Puppet/VirtualBox 测试环境。

答案2

对我来说答案是参数use_package

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

现在它非常好用!

相关内容