# 1. INSTALL MongoDB PACKAGES OR BINARIES # 2019-02-02: Sugarizer with Node.js 10.x requires MongoDB 2.6+ so # https://andyfelong.com/2017/08/mongodb-3-0-14-for-raspbian-stretch/ is # being used on Raspbian, all I found! (Raspbian's apt pkg is MongoDB 2.4.14) # # mongodb_stretch_3_0_14_core.zip (20M) & mongodb_stretch_3_0_14_tools.zip (15M) # were backed up from andyfelong.com to http://download.iiab.io/packages/ # # CLARIF: mongodb_stretch_3_0_14_core.zip IS IN FACT 3.0.14 (core) BUT... # mongodb_stretch_3_0_14_tools.zip IS REALLY 3.0.15 (tools) - block: - name: Create dir /tmp/mongodb-3.0.1x (aarch32) file: path: /tmp/mongodb-3.0.1x state: directory - name: Download & unzip 20MB http://download.iiab.io/packages/mongodb_stretch_3_0_14_core.zip to /tmp/mongodb-3.0.1x (aarch32) unarchive: remote_src: yes src: "{{ iiab_download_url }}/mongodb_stretch_3_0_14_core.zip" dest: /tmp/mongodb-3.0.1x - name: Install (move) its 3 CORE binaries from /tmp/mongodb-3.0.1x/core to /usr/bin (aarch32) shell: mv /tmp/mongodb-3.0.1x/core/* /usr/bin - name: Download & unzip 15MB http://download.iiab.io/packages/mongodb_stretch_3_0_14_tools.zip [IN FACT THIS ONE'S 3.0.15] to /tmp/mongodb-3.0.1x (aarch32) unarchive: remote_src: yes src: "{{ iiab_download_url }}/mongodb_stretch_3_0_14_tools.zip" dest: /tmp/mongodb-3.0.1x - name: Install (move) its 9 TOOLS binaries from /opt/iiab/downloads/mongodb-3.0.1x/tools to /usr/bin (aarch32) shell: mv /tmp/mongodb-3.0.1x/tools/* /usr/bin - name: Create Linux group mongodb (aarch32) group: name: mongodb state: present - name: Create Linux user mongodb (aarch32) user: name: mongodb group: mongodb # primary group groups: mongodb home: /var/lib/mongodb shell: /usr/sbin/nologin - name: Install /etc/mongod.conf from template (aarch32) template: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: root group: root mode: "{{ item.mode }}" with_items: - { src: 'mongod.conf.j2', dest: "{{ mongodb_conf }}", mode: '0644' } # i.e. /etc/mongod.conf # end block when: not (ansible_architecture == "x86_64" or ansible_architecture == "aarch64") # 32 bit OS's get caught above should handle aarch32 including 32-bit ubuntu # from https://ubuntu.com/download/raspberry-pi. 20.4-32bit might fail untested # 32bit intel might puke as this was orginally deployed for raspbian. Haven't # see bootable 32bit intel installers for a while now. # 64 bit OS's proceed below. - block: - name: Add mongodb.org signing key (only 64-bit support available) shell: wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - args: warn: false - name: Use mongodb-org's Debian repo for Debian (only amd64 support available) apt_repository: # 2020-10-28: http://repo.mongodb.org/apt/debian/dists/ supports only # {buster 10, stretch 9, jessie 8, wheezy 7} # so Debian 11 "Bullseye" (testing branch) can revert to buster for now: repo: deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main #repo: deb http://repo.mongodb.org/apt/debian {{ ansible_distribution_release }}/mongodb-org/4.4 main state: present filename: mongodb-org when: is_debian and (ansible_architecture == "x86_64") # Debian 10 aarch64 might work below but is blocked in main.yml - name: Use mongodb-org's Ubuntu bionic repo for RaspOS-aarch64 apt_repository: repo: deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse state: present filename: mongodb-org when: is_raspbian and (ansible_architecture == "aarch64") - name: Use mongodb-org's Ubuntu focal repo for Linux Mint - 64bit only apt_repository: repo: deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse state: present filename: mongodb-org when: is_linuxmint - name: Use mongodb-org's Ubuntu repo for all non-Mint Ubuntu - 64bit only apt_repository: # 2020-10-27: https://repo.mongodb.org/apt/ubuntu/dists/ supports only # {focal 20.04, bionic 18.04, xenial 16.04, trusty 14.04, precise 12.04} # so other Ubuntu's like groovy 20.10 need to revert to recent LTS repo: repo: deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse #repo: deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu {{ ansible_distribution_release }}/mongodb-org/4.4 multiverse state: present filename: mongodb-org when: is_ubuntu and not is_linuxmint - name: "Install packages: mongodb-org, mongodb-org-server" package: name: - mongodb-org - mongodb-org-server state: present - name: Change the mongodb port to 27018 lineinfile: path: /etc/mongod.conf regexp: 'port: 27017' backrefs: yes line: ' port: 27018' # end block when: (ansible_architecture == "aarch64") or (ansible_architecture == "x86_64") # 2. CONFIGURE MongoDB FOR IIAB - name: 'Create 3 dirs for MongoDB: /var/lib/mongodb, /var/log/mongodb, {{ mongodb_db_path }}' file: state: directory path: "{{ item }}" owner: mongodb group: mongodb with_items: #- { path: '/var/run/mongodb' } - /var/lib/mongodb - /var/log/mongodb - "{{ mongodb_db_path }}" # i.e. /library/dbdata/mongodb/ - name: Install mongodb.service, /usr/bin/iiab-mongodb-repair-if-no-lock from templates template: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: root group: root mode: "{{ item.mode }}" with_items: - { src: 'mongodb.service.j2', dest: '/etc/systemd/system/mongodb.service', mode: '0644' } - { src: 'iiab-mongodb-repair-if-no-lock.j2', dest: '/usr/bin/iiab-mongodb-repair-if-no-lock', mode: '0755' } # daemon_reload is used to force systemd to recognize a newly installed .service file # restarted here to ensure the port has been changed - name: Disable 'mongodb' systemd service - started on demand by sugarizer systemd: name: mongodb daemon_reload: yes enabled: no state: restarted # 3. RECORD MongoDB AS INSTALLED - name: "Set 'mongodb_installed: True'" set_fact: mongodb_installed: True - name: "Add 'mongodb_installed: True' to {{ iiab_state_file }}" lineinfile: path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml regexp: '^mongodb_installed' line: 'mongodb_installed: True'