--- - name: Establish some role-related facts set_fact: mongodb_major_version: "{{ mongodb_version[0:3] }}" - name: Disable transparent huge pages on systemd systems include_tasks: disable_transparent_hugepages.yml when: - mongodb_disable_transparent_hugepages | bool - ansible_service_mgr == "systemd" - name: Add APT key apt_key: keyserver: "{{ mongodb_apt_keyserver }}" id: "{{ mongodb_apt_key_id[mongodb_major_version] }}" when: mongodb_package == 'mongodb-org' - name: Fail when used wrong mongodb_version variable with Debian Stretch fail: msg: "mongodb_version variable should be '3.6' or '4.0' or '4.2' for Debian Stretch" when: - mongodb_package == 'mongodb-org' - (mongodb_major_version != '3.6' and mongodb_major_version != '4.0' and mongodb_major_version != '4.2') - ansible_distribution_release == 'stretch' - name: Fail when used wrong mongodb_version variable with Ubuntu 18.04 fail: msg: "mongodb_version variable should be '4.0' or '4.2', or else mongodb_package should be 'mongodb' for Ubuntu 18.04" when: - mongodb_package == 'mongodb-org' - (mongodb_major_version != '4.0' and mongodb_major_version != '4.2') - ansible_distribution_release == "bionic" - name: Fail when used wrong mongodb_version variable fail: msg: "mongodb_version variable should be '3.4', '3.6' or '4.0' or '4.2'" when: (mongodb_package == 'mongodb-org' and (mongodb_version is not defined or mongodb_repository[mongodb_major_version] is not defined)) - name: Add APT repository apt_repository: repo: "{{ mongodb_repository[version_item] }}" update_cache: true with_items: "{{ mongodb_major_version }}" loop_control: loop_var: version_item when: mongodb_package == 'mongodb-org' - name: Install MongoDB package apt: name: "{{ mongodb_package }}{% if (mongodb_version | length > 3) %}={{ mongodb_version }}{% endif %}" state: "{{ mongodb_package_state }}" update_cache: true - name: Install numactl package apt: name: numactl state: present - name: Add systemd configuration if present template: src: mongodb.service.j2 dest: "/lib/systemd/system/{{mongodb_daemon_name}}.service" owner: root group: root mode: '0644' when: - ansible_service_mgr == "systemd" - mongodb_manage_systemd_unit | bool notify: - reload systemd - name: Add symlink for systemd file: src: "/lib/systemd/system/{{mongodb_daemon_name}}.service" dest: "/etc/systemd/system/multi-user.target.wants/{{mongodb_daemon_name}}.service" state: link when: - ansible_service_mgr == "systemd" - mongodb_manage_systemd_unit | bool notify: - reload systemd - name: Install PyMongo package apt: name: python-pymongo when: not mongodb_pymongo_from_pip - name: Install PIP apt: pkg: - python-dev - python-pip when: mongodb_pymongo_from_pip | bool - name: Install setuptools (required for ansible 2.7+) apt: pkg: - python-setuptools when: mongodb_pymongo_from_pip | bool - name: Install PyMongo from PIP pip: name: pymongo state: "{{ mongodb_pymongo_pip_version is defined | ternary('present', 'latest') }}" version: "{{ mongodb_pymongo_pip_version | default(omit) }}" when: mongodb_pymongo_from_pip | bool