MongoDBユーザを作成するChefレシピ
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リソースが入るかもしれない:)