私は Vagrant と Puppet を試しながら、Apache/PHP/Mongo ベースのプロジェクト用の開発マシンをプロビジョニングしています。
すべてのコンポーネントを正しく設定しましたが (Puppet Forge のモジュールを使用)、PHP を Mongo と通信させる方法がどうしてもわかりません。Mongophpinfo()
ドライバーがインストールされていないと表示されますが、インストール方法がわからないため、当然のことです。
PHPのインストールに使用したpuppetモジュールはLab42のもので、以下から入手可能です。http://github.com/lermit/puppet-phpREADMEでは切り替え方法を説明しますモジュールだがしかし運転手(私の知る限り、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
それで、これについて私が理解していないことがいくつかあります:
- Puppet に PECL 経由でモジュールをインストールするように指示したのに、なぜ apt-get 経由でインストールするのでしょうか?
- なぜそのパッケージが見つからないのでしょうか? 動作させるにはどのリポジトリを追加すればよいのでしょうか?
再度、感謝します。
答え1
両方の質問に対する答えは、使用している Puppet モジュールにあるはずです。
他の人が開発したモジュールを使用すると、モジュールに埋め込まれた知識を活用できるため、確かに大きな利点がありますが、次のことをお勧めします。
まず、手動で(つまり、Puppetなしで)インストールする方法を理解します。
次に、それを自動化するシンプルなPuppetモジュールを作成します。
3 番目に、特に puppetforge で見つけた puppet モジュールを使用してみます。https://forge.puppetlabs.com/より適切に機能するか、追加機能が提供されるかを確認します。
VagrantとPuppetに関する優れたリソースはたくさんありますが、私のお気に入りはDeploying Railsです。http://pragprog.com/book/cbdepra/deploying-rails- 明らかに Ruby on Rails に重点を置いていますが、Vagrant/Puppet/VirtualBox のテスト環境をゼロから構築します。これは、皆さんの環境とよく似ています。
答え2
私にとっての答えはパラメータでしたuse_package
:
php::pecl::module { "mongo": use_package => 'no', }
今では完璧に動作します!