ansible-role-mongodb/tasks/install.debian.yml

110 lines
3.3 KiB
YAML

---
- 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
when: mongodb_use_numa | bool
- 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