使用 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. 為什麼找不到那個包?我應該添加什麼存儲庫才能使其正常工作?

再次感謝。

答案1

我確信這兩個問題的答案都在您正在使用的木偶模組中。

使用其他人開發的模組當然有很大的優勢,因為您可以從他們嵌入模組中的知識中獲得知識,但我建議您:

首先,弄清楚如何手動進行安裝(即不使用 puppet)

其次,建立一個簡單的 Puppet 模組來自動執行該操作

第三,嘗試使用您找到的木偶模組,尤其是。在木偶鍛造上: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', }

現在它就像一個魅力!

相關內容