はじめに
作った。
いろいろMongoDBをガチャガチャ動かしたくて、まぁDockerで動かすのも普通にできたが、どうせだしReplicaSetも作ろうと思ったので組んだ。
存在は知っていたものの、今回はじめてVagrantのGuest/Hostのhostsを自動設定してくれるやつを使った。
guestのhostsはこんな感じになる。
vagrant@mongo0:~$ cat /etc/hosts 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts 127.0.1.1 mongo0 mongo0 ## vagrant-hostmanager-start 192.168.33.202 mongo2 192.168.33.201 mongo1 192.168.33.200 mongo0 ## vagrant-hostmanager-end
Vagrantfileにはこのへんの設定が必要。
config.hostmanager.enabled = true config.hostmanager.manage_host = true config.hostmanager.ignore_private_ip = false config.hostmanager.include_offline = false
mongodbのreplicasetのinitiate処理だけは全部終わってから、特定の1台であてなきゃならんので別の処理とした。mongo shellのコマンドをどうやってbash scriptから渡したもんかなと思ったが、普通に標準入力で渡してやればいい。
vagrant@mongo0:~$ cat /vagrant/repl.js | mongo
$ cat repl.js rs.initiate() rs.add('mongo1:27017') rs.add('mongo2:27017') rs.status() cfg = rs.conf() cfg.members[2].hidden = true cfg.members[2].priority = 0 rs.reconfig(cfg)
mongo shellにわたすものなので # でコメントが書けない。 jsなんで // で書けばいいんだろうけど。
おわりに
おもちゃができたのでガンガン遊んでいく。
MongoDB In Actionの2nd Editionが出ていて買ったので、Wired Tigerの章読んで何か書くかも。
しかしいつになってもVagrantは好きだ。。。こわして作る、再現性があるのがいい。