我正致力于使用puppetlabs mongodb module启用身份验证。
正如文档所说,要启用身份验证,我应该添加auth =>真正。 但为了使身份验证有效,我have to add a user to the admin database,所以我这样做了:
mongodb::db { 'admin':
user => 'adminuser',
password_hash => 'a15fbfca5e3a758be80ceaf42458bcd8',
}
这适用于第一次运行,但后续运行会导致错误:
Mongodb :: Db [admin] / Mongodb_database [admin]:无法评估: 执行' / usr / bin / mongo --quiet --eval 。db.getMongo()getDBNames()'返回252:3月26日星期三16:28:40未被捕 异常:listDatabases失败:{" errmsg" :"需要登录"," ok" :0 }
这是有道理的,因为它现在无法进行身份验证以检查管理数据库是否已经存在。
如何处理使用此模块配置mongodb密码认证?
答案 0 :(得分:1)
这是我的完整清单文件,使我的部署工作(在Vagrant设置上)。我只想安装Mongo,这就是我所取得的成就。
class {'::mongodb::server':
#port => 27017, #the default port
verbose => true,
auth => true,
bind_ip => ['0.0.0.0'] #Necessary for Vagrant to bind on the correct IP address instead of the loopback 127.0.0.1
}
#if we install a different port this did not work for me
mongodb::db { 'testdb':
user => 'user1',
password_hash => 'a15fbfca5e3a758be80ceaf42458bcd8', #this means pass1
}
include '::mongodb::server'
请记住在modules
文件夹中包含以下模块:
答案 1 :(得分:1)
看起来这个拉取请求(合并23. okt 2015)可能会解决此问题:https://github.com/puppetlabs/puppetlabs-mongodb/pull/194
有了这个,您可以为服务器创建提供管理员用户名和密码,如下所示:
class {'::mongodb::server':
auth => true,
create_admin => true,
admin_username => "admin",
admin_password => "admin"
}
现在,puppet应该能够在后续运行中对mongodb进行身份验证。