Edited at

Vagrant VMにMongoDBをインストール(メモ)

More than 5 years have passed since last update.

参考:antonyh/vagrant-mongodb

Vagrant上にMongoDBをインストールする手順について記述します。


必要な環境

以下の環境が必要なので、あらかじめ用意しておきます。


  • Vagrant

  • VirtualBox

  • VMのための空き容量とメモリ


注意事項

デフォルトの設定だと以下の問題があります。

こちらを解決するには後述の「MongoDB設定」を参照してください。


  • 管理画面が有効になっていません

  • ホストOSからのアクセスができません


セットアップ

公開されているboxを利用して起動します。

OSはFedora、Puppetを利用してMongoDBをインストールしています。



  1. antonyh/vagrant-mongodbをダウンロード(またはクローン)

  2. Vagrant起動
    $ vagrant up

  3. Vagrant VMへ接続
    $ vagrant ssh

  4. MongoDBシェルの起動

 [vagrant@localhost ~]$ mongo

MongoDB shell version: 2.4.6
connecting to: test
>

入力待ちとなればセットアップは成功です。

シェルを終了させるにはquit()を実行します


デフォルトの環境


  • OS

[vagrant@localhost ~]$ cat /etc/redhat-release

Fedora release 20 (Heisenbug)


  • MongoDB

[vagrant@localhost ~]$ mongo --version

MongoDB shell version: 2.4.6


  • Puppet

[vagrant@localhost ~]$ puppet --version

3.4.3


MongoDB設定

そのまま起動すると以下の問題があるので、修正します。


ホストから接続出来るようにする

mongodb.confを下記の通り編集して、sudo service mongod restart



#bind_ip = 127.0.0.1

bind_ip = All


管理画面を有効にする

mongodb.confを下記の通り編集して、sudo service mongod restart



# Disable the HTTP interface (Defaults to port+1000).

#nohttpinterface = true
nohttpinterface = false


上記の設定を自動化する

はじめから上記設定になるようPuppetの設定を変更すると便利です。

Puppetで/etc/mongodb.confを生成する設定を追加。


Puppet/modules/mongo/manifests/init.pp

    file { "/etc/mongodb.conf" :

content => "
bind_ip = All
port = 27017
fork = true
pidfilepath = /var/run/mongodb/mongodb.pid
logpath = /var/log/mongodb/mongodb.log
dbpath =/var/lib/mongodb
journal = true
nohttpinterface = false
"
}



確認

ホストOSにMongoDB Clientが入っている場合は接続してみましょう。

ポートはデフォルトのMongoDBのポートがフォワードされているので、そのままホストOSで接続すればOKです。

$ mongo

MongoDB shell version: 2.6.3
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
>

管理画面が有効な場合は、ブラウザで管理画面にアクセスしてみましょう。

http://localhost:28017/


ホストOSから接続出来ない場合

ホストOSから接続出来ない場合は以下を確認してみましょう。


  • Vagrantfile


    • forwarded_portの設定が正しいか?



  • ホストOSでポートが空いているか?


    • 27017,27018,27019,28017

    • 空いていない場合はVagrantofileを編集してホストのポートを変更する



  • mongodb.conf


    • bind_ipでホストOSの接続が許可されているか?



管理画面にアクセス出来ない場合は、上記に加えて以下もチェックします。


  • mongodb.conf



    • nohttpinterface = false に設定されているか?