MongoDBユーザを作成するレシピを書こうとしたら手こずった。
公式レシピではユーザを作成するようなリソースはないようだ。
なのでしょうがないくbashリソースを使って作成することにした。
それが以下だ。
bash 'create MongoDB user' do user 'vagrant' group 'vagrant' cwd '/home/vagrant' code <<-EOC mongod --fork -f mongod.conf sleep 10s #mongoが立ち上がるまで少し待つ.. mongo localhost:27017/test --eval 'if(db.system.users.find({"user":"myuser" }).count()==0){db.addUser({user:"myuser", pwd:"pass", roles:["readWrite"]})}' mongo localhost:27017/admin --eval 'if(db.system.users.find({"user":"adminuser"}).count()==0){db.addUser({user:"adminuser", pwd:"pass", roles:["clusterAdmin", "userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase" ]})}' EOC end
中々酷いコードだ。。もっとスマートにやりたいが他に方法はあるのだろうか?
ちなみにmongod.conf内でauth=trueにしている。
なので、管理者ユーザは最後に作るようにしているのがポイント。
※もしかしたらもうすぐmongo_userリソースが入るかもしれない:)