Как указать сертификат CA в модуле Ansible mongodb_user - PullRequest
0 голосов
/ 11 марта 2020

Я пытался создать дополнительных пользователей для AWS DocumentDB с модулем Ansible mongodb_user . Но проблема в том, что модуль не предоставляет возможность указать файл ключа pem, и я получил бы результат, который предложил мне to include ssl_ca_certs (я обнаружил, что сообщение выброшено из pymon go в строке: 301).

Я гуглил с некоторыми ключевыми словами, такими как: Ansible mongodb_user module, конечно, но не повезло.

Ребята, можете ли вы любезно дать совет? Спасибо.

Подробности приведены ниже:

Часть пьесы

  - name: create DocumentDB users for applications
    mongodb_user:
      login_host: "{{ docdb_admin_credential.host }}"
      login_port: "{{ docdb_admin_credential.port }}"
      login_user: "{{ docdb_admin_credential.username }}"
      login_password: "{{ docdb_admin_credential.password }}"
      database: "{{ secrets.docdb.dbClusterIdentifier }}"
      ssl: true
      name: "{{ item.stdout | from_json | json_query('username') }}"
      password: "{{ item.stdout | from_json | json_query('password') }}"
      roles:
        - db: admin
          role: dbAdminAnyDatabase
        - db: admin
          role: readWriteAnyDatabase
        - db: admin
          role: clusterAdmin
      state: present
    loop: "{{ docdb_apps_credential_literal.results }}"

Обратное сообщение

<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /jenkins/.ansible/tmp/ansible-tmp-1583824780.93-93703492324988/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
Traceback (most recent call last):
  File "/tmp/ansible_tkYezV/ansible_module_mongodb_user.py", line 401, in main
    client = MongoClient(**connection_params)
  File "/var/lib/jenkins/jobs/< hidden for stackoverflow >/workspace/env/lib/python2.7/site-packages/pymongo/mongo_client.py", line 315, in __init__
    raise ConfigurationError("If `ssl_cert_reqs` is not "
ConfigurationError: If `ssl_cert_reqs` is not `ssl.CERT_NONE` then you must include `ssl_ca_certs` to be able to validate the server.
failed: [localhost] (item={'_ansible_parsed': True, 'stderr_lines': [], '_ansible_item_result': True, u'end': u'2020-03-10 07:19:40.354132', '_ansible_no_log': False, u'stdout': u'{"dbClusterIdentifier":"< hidden for stackoverflow >","password":"< hidden for stackoverflow >","engine":"mongo","port":"< hidden for stackoverflow >","host":"< hidden for stackoverflow >.us-east-1.docdb.amazonaws.com","ssl":true,"username":"< hidden for stackoverflow >"}', u'cmd': u'aws secretsmanager get-secret-value --secret-id < hidden for stackoverflow > --query SecretString --output text', u'rc': 0, 'item': {u'username': u'< hidden for stackoverflow >', u'cfnname': u'< hidden for stackoverflow >', u'name': u'< hidden for stackoverflow >', u'desc': u'< hidden for stackoverflow >'}, u'delta': u'0:00:00.552866', u'stderr': u'', u'changed': True, u'invocation': {u'module_args': {u'creates': None, u'executable': None, u'_uses_shell': True, u'_raw_params': u'aws secretsmanager get-secret-value --secret-id < hidden for stackoverflow > --query SecretString --output text', u'removes': None, u'warn': True, u'chdir': None, u'stdin': None}}, 'stdout_lines': [u'{"dbClusterIdentifier":"< hidden for stackoverflow >","password":"< hidden for stackoverflow >","engine":"mongo","port":"< hidden for stackoverflow >","host":"< hidden for stackoverflow >.us-east-1.docdb.amazonaws.com","ssl":true,"username":"< hidden for stackoverflow >"}'], u'start': u'2020-03-10 07:19:39.801266', '_ansible_ignore_errors': None, 'failed': False}) => {
    "changed": false, 
    "invocation": {
        "module_args": {
            "database": "< hidden for stackoverflow >", 
            "login_database": null, 
            "login_host": "< hidden for stackoverflow >.us-east-1.docdb.amazonaws.com", 
            "login_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", 
            "login_port": "< hidden for stackoverflow >", 
            "login_user": "< hidden for stackoverflow >", 
            "name": "< hidden for stackoverflow >", 
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", 
            "replica_set": null, 
            "roles": [
                {
                    "db": "admin", 
                    "role": "dbAdminAnyDatabase"
                }, 
                {
                    "db": "admin", 
                    "role": "readWriteAnyDatabase"
                }, 
                {
                    "db": "admin", 
                    "role": "clusterAdmin"
                }
            ], 
            "ssl": true, 
            "ssl_cert_reqs": "CERT_REQUIRED", 
            "state": "present", 
            "update_password": "always"
        }
    }, 
    "item": {
        "changed": true, 
        "cmd": "aws secretsmanager get-secret-value --secret-id < hidden for stackoverflow > --query SecretString --output text", 
        "delta": "0:00:00.552866", 
        "end": "2020-03-10 07:19:40.354132", 
        "failed": false, 
        "invocation": {
            "module_args": {
                "_raw_params": "aws secretsmanager get-secret-value --secret-id < hidden for stackoverflow > --query SecretString --output text", 
                "_uses_shell": true, 
                "chdir": null, 
                "creates": null, 
                "executable": null, 
                "removes": null, 
                "stdin": null, 
                "warn": true
            }
        }, 
        "item": {
            "cfnname": "< hidden for stackoverflow >", 
            "desc": "< hidden for stackoverflow >", 
            "name": "< hidden for stackoverflow >", 
            "username": "< hidden for stackoverflow >"
        }, 
        "rc": 0, 
        "start": "2020-03-10 07:19:39.801266", 
        "stderr": "", 
        "stderr_lines": [], 
        "stdout": "{\"dbClusterIdentifier\":\"< hidden for stackoverflow >\",\"password\":\"< hidden for stackoverflow >*\",\"engine\":\"mongo\",\"port\":\"< hidden for stackoverflow >\",\"host\":\"< hidden for stackoverflow >.us-east-1.docdb.amazonaws.com\",\"ssl\":true,\"username\":\"< hidden for stackoverflow >\"}", 
        "stdout_lines": [
            "{\"dbClusterIdentifier\":\"< hidden for stackoverflow >\",\"password\":\"< hidden for stackoverflow >*\",\"engine\":\"mongo\",\"port\":\"< hidden for stackoverflow >\",\"host\":\"< hidden for stackoverflow >.us-east-1.docdb.amazonaws.com\",\"ssl\":true,\"username\":\"< hidden for stackoverflow >\"}"
        ]
    }, 
    "msg": "unable to connect to database: If `ssl_cert_reqs` is not `ssl.CERT_NONE` then you must include `ssl_ca_certs` to be able to validate the server."
}
...