<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->

Thanks for the great software :)

When setting up a MongoDB database server, one will generally want to create a root user and then create a second, more limited app user. Here is my attempt at this:

```yaml
- name: Add MongoDB admin user
  mongodb_user:
    database: "admin"
    name: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/username', region=region) }}"
    password: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/password', decrypt=true, region=region) }}"
    roles: "root"

- name: Copy config file
  copy:
    src: mongod.conf
    dest: /etc/mongod.conf
    owner: root
    group: root
    mode: 0644

- name: Create /etc/security/limits.d/mongod.conf
  copy:
    src: security-mongod.conf
    dest: /etc/security/limits.d/mongod.conf
    owner: root
    group: root
    mode: 0644

- name: Restart MongoDB
  service:
    name: mongod
    state: restarted

- name: Add MongoDB app user
  mongodb_user:
    login_database: "admin"
    login_user: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/username', region=region) }}"
    login_password: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/password', decrypt=true, region=region) }}"
    name: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/app-user/username', region=region) }}"
    password: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/app-user/password', decrypt=true, region=region) }}"
    roles:
      - db: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/name', region=region) }}"
        role: "readWrite"

- name: Reboot
  reboot:
```

Creating the admin user succeeds, but once I enable authorization, restart MongoDB, and attempt user creation, I receive the following error every time I run the playbook:

```
TASK [mongodb : Add MongoDB admin user] ****************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: pymongo.errors.OperationFailure: command createUser requires authentication
fatal: [3.222.242.183]: FAILED! => {"changed": false, "msg": "Unable to add or update user: command createUser requires authentication"}
	to retry, use: --limit @/root/repo/modules/database/provision.retry
```

However, if I comment out admin user creation

```yaml
# - name: Add MongoDB admin user
#   mongodb_user:
#     database: "admin"
#     name: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/username', region=region) }}"
#     password: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/password', decrypt=true, region=region) }}"
#     roles: "root"
```

and run the playbook again, app user creation succeeds.

Further, I was able to workaround this issue by rebooting the server prior to app user creation:

```yaml
- name: Add MongoDB admin user
  mongodb_user:
    login_database: "admin"
    login_user: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/username', region=region) }}"
    login_password: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/password', decrypt=true, region=region) }}"
    database: "admin"
    name: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/username', region=region) }}"
    password: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/password', decrypt=true, region=region) }}"
    update_password: "on_create"
    roles: "root"

- name: Copy config file
  copy:
    src: mongod.conf
    dest: /etc/mongod.conf
    owner: root
    group: root
    mode: 0644

- name: Create /etc/security/limits.d/mongod.conf
  copy:
    src: security-mongod.conf
    dest: /etc/security/limits.d/mongod.conf
    owner: root
    group: root
    mode: 0644

# Reboot before adding the app user to MongoDB or authentication will fail probably due to connection pooling
# with pymongo which is a problem because authorization was enabled after adding the admin account.
- name: Reboot
  reboot:

- name: Add MongoDB app user
  mongodb_user:
    login_database: "admin"
    login_user: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/username', region=region) }}"
    login_password: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/admin-user/password', decrypt=true, region=region) }}"
    database: "admin"
    name: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/app-user/username', region=region) }}"
    password: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/app-user/password', decrypt=true, region=region) }}"
    update_password: "on_create"
    roles:
      - db: "{{ lookup('aws_ssm', '/app-name/test/database/mongodb/name', region=region) }}"
        role: "readWrite"
```

I believe the new connection details related to creating the app user are ignored. Please see [this discussion](https://github.com/MongoEngine/mongoengine/issues/2010#issuecomment-487317501) for details. If this is true, calling `client.close()` at [the end of the mongodb_user](https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/database/mongodb/mongodb_user.py#L438) as done [at the end of postgresql_table](https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/database/postgresql/postgresql_table.py#L580).

Closing the connection would likely help because once authorization is turned on, authentication is required, so no connection reuse or pooling would occur.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->

mongodb_user

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->

2.8.2

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->

```
DEFAULT_HOST_LIST(/Users/chad/development/projects/app-name/infrastructure/modules/database/ansible.cfg) = ['/Users/chad/development/projects/app-name/infrastructure/modules/database/hosts']
DEFAULT_TRANSPORT(/Users/chad/development/projects/app-name/infrastructure/modules/database/ansible.cfg) = ssh
HOST_KEY_CHECKING(/Users/chad/development/projects/app-name/infrastructure/modules/database/ansible.cfg) = False
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->

MacOS Mojave 10.14 (18A391)

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->

Described above.

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->

Creating a second user account should not fail.

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

Creating the second user account failed.

<!--- Paste verbatim command output between quotes -->

login_password:
        description:
            - The password used to authenticate with
    login_host:
        description:
            - The host running the database
        default: localhost
    login_port:
        description:
            - The port to connect to
        default: 27017
    login_database:
        version_added: "2.0"
        description:
            - The database where login credentials are stored
    replica_set:
        version_added: "1.6"
        description:
            - Replica set to connect to (automatically connects to primary for writes)
    database:
        description:
            - The name of the database to add/remove the user from
        required: true
    name:
        description:
            - The name of the user to add or remove
        required: true
        aliases: [ 'user' ]
    password:
        description: