通过 ansible playbook 启用 mongo 身份验证
Posted
技术标签:
【中文标题】通过 ansible playbook 启用 mongo 身份验证【英文标题】:Enabling mongo authentication by ansible playbook 【发布时间】:2018-11-22 00:17:01 【问题描述】:我尝试在我的服务器上安装 mongodb 并启用身份验证。但我坚持为身份验证添加用户。当我尝试执行 playbook 时,它在 Add user 任务中失败并输出:
任务执行期间发生异常。要查看完整的回溯,请使用 -vvv。错误是:pymongo.errors.OperationFailure:没有经过身份验证的用户 致命:[***]:失败! => "changed": false, "msg": "无法连接到数据库:没有经过身份验证的用户"
我该如何解决?
playbook.yml
- name: Install mongodb
apt:
name: mongodb-org
update_cache: yes
state: present
- name: Set config
template:
src: templates/mongodb.yml
dest: /etc/mongod.conf
notify: restart mongodb
- name: Install pymongo
pip:
name: pymongo
state: present
- name: Add user
mongodb_user:
database: " mongodb_name "
name: " mongodb_user "
password: " mongodb_password "
login_host: " mongodb_bind_ip "
login_port: " mongodb_port "
state: present
mongodb.yml
net:
port: mongodb_port
bindIp: mongodb_bind_ip
unixDomainSocket:
enabled: false
security:
authorization: enabled
【问题讨论】:
【参考方案1】:如果您的数据库中没有管理员用户,您需要使用禁用的security.authorization
启动它,添加管理员用户,然后使用启用的security.authorization
重新启动 mongodb:https://docs.mongodb.com/manual/tutorial/enable-authentication/#procedure
之后,您可以使用管理员凭据添加更多用户:
- name: Add user
mongodb_user:
database: " mongodb_name "
name: " mongodb_user "
password: " mongodb_password "
login_host: " mongodb_bind_ip "
login_port: " mongodb_port "
login_user: " admin_login "
login_password: " admin_password "
state: present
https://docs.ansible.com/ansible/2.4/mongodb_user_module.html
【讨论】:
以上是关于通过 ansible playbook 启用 mongo 身份验证的主要内容,如果未能解决你的问题,请参考以下文章