community.mongodb.mongodb – lookup info from MongoDB

Note

This plugin is part of the community.mongodb collection (version 1.3.2).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install community.mongodb.

To use it in a playbook, specify: community.mongodb.mongodb.

New in version 1.0.0: of community.mongodb

Synopsis

  • The MongoDB lookup runs the find() command on a given collection on a given MongoDB server.

  • The result is a list of jsons, so slightly different from what PyMongo returns. In particular, timestamps are converted to epoch integers.

Requirements

The below requirements are needed on the local controller node that executes this lookup.

  • pymongo >= 2.4 (python library)

Parameters

Parameter Choices/Defaults Configuration Comments
collection
string / required
Name of the collection which the query will be made
connect_string
string
Default:
"mongodb://localhost/"
Can be any valid MongoDB connection string, supporting authentication, replica sets, etc.
database
string / required
Name of the database which the query will be made
extra_connection_parameters
dictionary
Default:
"{}"
Extra connection parameters that to be sent to pymongo.MongoClient
Check the example to see how to connect to mongo using an SSL certificate.
filter
dictionary
Default:
"{}"
Criteria of the output
limit
integer
How many results should be shown
projection
dictionary
Default:
"{}"
Fields you want returned
skip
integer
How many results should be skipped
sort
list / elements=string
Default:
"[]"
Sorting rules.
Please use the strings ASCENDING and DESCENDING to set the order.
Check the example for more information.

Examples

- hosts: localhost
  gather_facts: false
  vars:
    mongodb_parameters:
      #mandatory parameters
      database: 'local'
      collection: "startup_log"
      #optional
      connection_string: "mongodb://localhost/"
      # connection_string: "mongodb://username:[email protected]:27017/"
      # extra_connection_parameters: { "ssl" : True , "ssl_certfile": /etc/self_signed_certificate.pem" }
      #optional query  parameters, we accept any parameter from the normal mongodb query.
      # filter:  { "hostname": "u18" }
      projection: { "pid": True    , "_id" : False , "hostname" : True }
      skip: 0
      limit: 1
      sort:  [ [ "startTime" , "ASCENDING" ] , [ "age", "DESCENDING" ] ]
  tasks:
    - debug: msg="The PID from MongoDB is {{ lookup('mongodb', mongodb_parameters ).pid }}"

    - debug: msg="The HostName from the MongoDB server is {{ lookup('mongodb', mongodb_parameters ).hostname }}"

    - debug: msg="Mongo DB is stored at {{ lookup('mongodb', mongodb_parameters_inline )}}"
      vars:
        mongodb_parameters_inline:
          database: 'local'
          collection: "startup_log"
          connection_string: "mongodb://localhost/"
          limit: 1
          projection: { "cmdline.storage": True }

      # lookup syntax, does the same as below
    - debug: msg="The hostname is {{ item.hostname }} and the pid is {{ item.pid }}"
      loop: "{{ lookup('mongodb', mongodb_parameters, wantlist=True) }}"

      # query syntax, does the same as above
    - debug: msg="The hostname is {{ item.hostname }} and the pid is {{ item.pid }}"
      loop: "{{ query('mongodb', mongodb_parameters) }}"

    - name: "Raw output from the mongodb lookup (a json with pid and hostname )"
      debug: msg="{{ lookup('mongodb', mongodb_parameters) }}"

    - name: "Yet another mongodb query, now with the parameters on the task itself"
      debug: msg="pid={{item.pid}} hostname={{item.hostname}} version={{ item.buildinfo.version }}"
      with_mongodb:
        - database: 'local'
          collection: "startup_log"
          connection_string: "mongodb://localhost/"
          limit: 1
          projection: { "pid": True    , "hostname": True , "buildinfo.version": True }

    # Please notice this specific query may result more than one result. This is expected
    - name: "Shows the whole output from mongodb"
      debug: msg="{{ item }}"
      with_mongodb:
        - database: 'local'
          collection: "startup_log"
          connection_string: "mongodb://localhost/"

Return Values

Common return values are documented here, the following are the fields unique to this lookup:

Key Returned Description
_list_of_jsons
list / elements=string
success
a list of JSONs with the results of the MongoDB query.



Authors

  • Marcos Diez <marcos (at) unitron.com.br>