首页 文章

通过ansible playbook启用mongo身份验证

提问于
浏览
0

我尝试在我的服务器上安装mongodb并启用身份验证 . 但我坚持为auth添加用户 . 当我尝试执行playbook时,它输出的 Add user 任务失败:

任务执行期间发生异常 . 要查看完整的回溯,请使用-vvv . 错误是:pymongo.errors.OperationFailure:没有用户认证致命:[***]:失败! => {“已更改”: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 回答

  • 1

    如果数据库中没有admin用户,则需要使用disabled security.authorization 启动它,添加admin用户,然后在启用 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

相关问题