ansible-role-mongodb-install

Ansible role for installing MongoDB Community Edition on RedHat/CentOS and Debian/Ubuntu

MIT License

Stars
1
Committers
2

Ansible Role: mongodb_install

This role installs the MongoDB Community edition server metapackage, mongodb-org, via the OS's package manager (default) or the server binaries via tar file. It currently defaults to installing the latest release from version 4, you can install a newer major version by setting mongodb_version: 6.0.16, see 'Tested Platforms and Versions' section for a compatibility matrix.

Alternatively, you can install the MongoDB server binaries - mongo, mongod, mongos, by setting mongodb_pkg_install: false and the role will download the latest tarball from version 4 or a newer major version by setting mongodb_version. If you would like to install the binary from your local Ansible control host, download the appropriate tar file, mongodb-linux-x86_64-{DISTRO}-{VERSION}.tgz, to your files directory and set the following two variables in your playbook:

  • mongodb_tar_src: mongodb-linux-x86_64-{DISTRO}-{VERSION}.tgz
  • mongodb_tar_src_remote: false

See 'Example Playbooks' section for working examples. This role does not configure the server, it uses the default configuration values and minimal recommended ulimit settings. Its recommended to configure the server for production use, for details see: https://www.mongodb.com/docs/manual/administration/production-notes/

Install the Role

You can install this role with the Ansible Galaxy CLI:

ansible-galaxy install trfore.mongodb_install

You can also include it in a requirements.yml file and install it with ansible-galaxy install -r requirements.yml, using the format:

---
roles:
  - trfore.mongodb_install

Tested Platforms and Versions

MongoDB Community 7.0.12

  • CentOS Stream 8 & 9
  • Debian 11 & 12
  • Ubuntu 20.04 & 22.04

MongoDB Community 6.0.16

  • CentOS Stream 8 & 9
  • Debian 10 & 11
  • Ubuntu 20.04 & 22.04

MongoDB Community 5.0.28

  • CentOS Stream 8
  • Debian 10 & 11
  • Ubuntu 20.04

MongoDB Community 4.4.29

  • CentOS Stream 8
  • Debian 10
  • Ubuntu 20.04

Requirements

  • ansible-core>=2.14.0

Dependencies

  • community.general.yum_versionlock (for CentOS & RHEL target host)

    ansible-galaxy collection install community.general
    

Role Variables

Common Variables

Common variables are listed below, along with default values (see defaults/main.yml):

Variable Default Description Required
mongodb_pkg_install true Boolean, true to install MongoDB via package manager No
mongodb_version 4.4.29 MongoDB Community stable releases v4.4, v5, v6, v7 No
mongodb_version_maj Automatic Extracts major value from mongodb_version Automatic
mongodb_version_maj_minor Automatic Extracts major and minor values from mongodb_version Automatic

Package Install Variables

defaults/main.yml:

Variable Default Description Required
mongodb_gpg_key URL MongoDB GPG Key No
mongodb_pkg_hold true Boolean, true to hold package version No
mongodb_pkg_hold_list MongoDB Packages List of MongoDB packages installed from mongodb-org, v4.4 to v7 No

Binary Install Variables

defaults/main.yml:

Variable Default Description Required
mongodb_tar_src URL URL or relative PATH, MongoDB Community binary tar file (tar install) No
mongodb_tar_src_remote true Boolean, true if downloading from URL (tar install) No
mongodb_path_exec /usr/bin PATH, MongoDB binary path (tar install) No

Other OS Specific Variables

vars/debian.yml:

Variable Default Description Required
mongodb_path_db /var/lib/mongodb PATH, MongoDB database folder (tar install) No
mongodb_path_log /var/log/mongodb PATH, MongoDB log folder (tar install) No
mongodb_dependencies ["libcurl4","openssl","liblzma5"] Required packages for MongoDB (tar install) No
mongodb_pkg_hold_list MongoDB Packages List of MongoDB packages installed from mongodb-org (pkg install) No

vars/redhat.yml and vars/redhat_mongo_v{4-6}.yml:

Variable Default Description Required
mongodb_path_db /var/lib/mongo PATH, MongoDB database folder (tar install) No
mongodb_path_log /var/log/mongodb PATH, MongoDB log folder (tar install) No
mongodb_dependencies ["libcurl-minimal","openssl","xz-libs"] Required packages for MongoDB (tar install) No
mongodb_pkg_hold_list MongoDB Packages List of MongoDB packages installed from mongodb-org (pkg install) No

Example Playbooks

  • Package install via distribution's package manager.
- hosts: servers
  become: true
  roles:
    - name: Install MongoDB
      role: trfore.mongodb_install
- hosts: servers
  become: true
  vars:
    mongodb_pkg_install: true
    mongodb_version: "6.0.16"
  roles:
    - name: Install MongoDB
      role: trfore.mongodb_install
  • Binary install from tar file.
- hosts: servers
  become: true
  vars:
    mongodb_pkg_install: false
    mongodb_version: "6.0.16"
  roles:
    - name: Install MongoDB
      role: trfore.mongodb_install
  • Binary install from tar file, if you manually download the tarball to your control host.
- hosts: servers
  become: true
  vars:
    mongodb_pkg_install: false
    mongodb_tar_src: mongodb-linux-x86_64-debian10-4.4.29.tgz
    mongodb_tar_src_remote: false
  roles:
    - name: Install MongoDB
      role: trfore.mongodb_install

License

This Ansible role is MIT.

MongoDB Community is Server Side Public License software from MongoDB, Inc. For additional information see: https://www.mongodb.com/licensing/server-side-public-license

Author Information

Taylor Fore (https://github.com/trfore)

Related Roles & Playbooks

Github Ansible Galaxy
ansible-role-jsvc trfore.jsvc
ansible-role-mongodb-install trfore.mongodb_install
ansible-role-omada-install trfore.omada_install

References

MongoDB