community.mongodb.mongodb_replicaset – Initialises a MongoDB replicaset.

Note

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

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

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

New in version 1.0.0: of community.mongodb

Synopsis

  • Initialises a MongoDB replicaset in a new deployment.

  • Validates the replicaset name for existing deployments.

  • Advanced replicaset member configuration possible (see examples).

Requirements

The below requirements are needed on the host that executes this module.

  • pymongo

Parameters

Parameter Choices/Defaults Comments
arbiter_at_index
integer
Identifies the position of the member in the array that is an arbiter.
auth_mechanism
string
    Choices:
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-X509
  • GSSAPI
  • PLAIN
Authentication type.
chaining_allowed
boolean
    Choices:
  • no
  • yes ←
When settings.chaining_allowed=true, the replicaset allows secondary members to replicate from other secondary members.
When settings.chaining_allowed=false, secondaries can replicate only from the primary.
connection_options
list / elements=raw
Additional connection options.
Supply as a list of dicts or strings containing key value pairs seperated with '='.
election_timeout_millis
integer
Default:
10000
The time limit in milliseconds for detecting when a replicaset's primary is unreachable.
heartbeat_timeout_secs
integer
Default:
10
Number of seconds that the replicaset members wait for a successful heartbeat from each other.
If a member does not respond in time, other members mark the delinquent member as inaccessible.
The setting only applies when using protocol_version=0. When using protocol_version=1 the relevant setting is settings.election_timeout_millis.
login_database
string
Default:
"admin"
The database where login credentials are stored.
login_host
string
Default:
"localhost"
The host running MongoDB instance to login to.
login_password
string
The password used to authenticate with.
Required when login_user is specified.
login_port
integer
Default:
27017
The MongoDB server port to login to.
login_user
string
The MongoDB user to login with.
Required when login_password is specified.
members
list / elements=raw
Yaml list consisting of the replicaset members.
Csv string will also be accepted i.e. mongodb1:27017,mongodb2:27017,mongodb3:27017.
A dictionary can also be used to specify advanced replicaset member options.
If a port number is not provided then 27017 is assumed.
protocol_version
integer
    Choices:
  • 0
  • 1
Default:
1
Version of the replicaset election protocol.
replica_set
string
Default:
"rs0"
Replicaset name.
ssl
boolean
    Choices:
  • no ←
  • yes
Whether to use an SSL connection when connecting to the database.
ssl_ca_certs
string
The ssl_ca_certs option takes a path to a CA file.
ssl_cert_reqs
string
    Choices:
  • CERT_NONE
  • CERT_OPTIONAL
  • CERT_REQUIRED ←
Specifies whether a certificate is required from the other side of the connection, and whether it will be validated if provided.
ssl_certfile
string
Present a client certificate using the ssl_certfile option.
ssl_crlfile
string
The ssl_crlfile option takes a path to a CRL file.
ssl_keyfile
string
Private key for the client certificate.
ssl_pem_passphrase
string
Passphrase to decrypt encrypted private keys.
validate
boolean
    Choices:
  • no
  • yes ←
Performs some basic validation on the provided replicaset config.

Notes

Note

Examples

# Create a replicaset called 'rs0' with the 3 provided members
- name: Ensure replicaset rs0 exists
  community.mongodb.mongodb_replicaset:
    login_host: localhost
    login_user: admin
    login_password: admin
    replica_set: rs0
    members:
    - mongodb1:27017
    - mongodb2:27017
    - mongodb3:27017
  when: groups.mongod.index(inventory_hostname) == 0

# Create two single-node replicasets on the localhost for testing
- name: Ensure replicaset rs0 exists
  community.mongodb.mongodb_replicaset:
    login_host: localhost
    login_port: 3001
    login_user: admin
    login_password: secret
    login_database: admin
    replica_set: rs0
    members: localhost:3001
    validate: no

- name: Ensure replicaset rs1 exists
  community.mongodb.mongodb_replicaset:
    login_host: localhost
    login_port: 3002
    login_user: admin
    login_password: secret
    login_database: admin
    replica_set: rs1
    members: localhost:3002
    validate: no

- name: Create a replicaset and use a custom priority for each member
  community.mongodb.mongodb_replicaset:
    login_host: localhost
    login_user: admin
    login_password: admin
    replica_set: rs0
    members:
    - host: "localhost:3001"
      priority: 1
    - host: "localhost:3002"
      priority: 0.5
    - host: "localhost:3003"
      priority: 0.5
  when: groups.mongod.index(inventory_hostname) == 0

- name: Create replicaset rs1 with options and member tags
  community.mongodb.mongodb_replicaset:
    login_host: localhost
    login_port: 3001
    login_database: admin
    replica_set: rs1
    members:
    - host: "localhost:3001"
      priority: 1
      tags:
        dc: "east"
        usage: "production"
    - host: "localhost:3002"
      priority: 1
      tags:
        dc: "east"
        usage: "production"
    - host: "localhost:3003"
      priority: 0
      hidden: true
      slaveDelay: 3600
      tags:
        dc: "west"
        usage: "reporting"

Return Values

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

Key Returned Description
mongodb_replicaset
string
success
The name of the replicaset that has been created.



Authors

  • Rhys Campbell (@rhysmeister)