From 9c0df22906c3459fcea23786623f289726318e4a Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 16:41:14 -0500 Subject: [PATCH 01/19] use mongodb.org repo --- roles/mongodb/tasks/install.yml | 101 ++++++++++++++++++-------------- roles/mongodb/tasks/main.yml | 14 ++--- 2 files changed, 64 insertions(+), 51 deletions(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index d0e17d32a..c8d5d9a96 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -1,13 +1,5 @@ # 1. INSTALL MongoDB PACKAGES OR BINARIES -- name: "Install packages: mongodb, mongodb-server (not raspbian)" - package: - name: - - mongodb-server - - mongodb # 2019-01-31: this package does not exist on (cannot be installed on) Debian 10, SEE #1437 - state: present - when: internet_available and not is_raspbian - # 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) @@ -18,33 +10,43 @@ # 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) -- name: Create dir /tmp/mongodb-3.0.1x (raspbian) - file: - path: /tmp/mongodb-3.0.1x - state: directory - when: internet_available and is_raspbian +- block: + - name: Create dir /tmp/mongodb-3.0.1x (raspbian) + 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 (raspbian) - unarchive: - remote_src: yes - src: "{{ iiab_download_url }}/mongodb_stretch_3_0_14_core.zip" - dest: /tmp/mongodb-3.0.1x - when: internet_available and is_raspbian + - name: Download & unzip 20MB http://download.iiab.io/packages/mongodb_stretch_3_0_14_core.zip to /tmp/mongodb-3.0.1x (raspbian) + 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 (raspbian) - shell: mv /tmp/mongodb-3.0.1x/core/* /usr/bin - when: internet_available and is_raspbian + - name: Install (move) its 3 CORE binaries from /tmp/mongodb-3.0.1x/core to /usr/bin (raspbian) + 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 (raspbian) - unarchive: - remote_src: yes - src: "{{ iiab_download_url }}/mongodb_stretch_3_0_14_tools.zip" - dest: /tmp/mongodb-3.0.1x - when: internet_available and is_raspbian + - 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 (raspbian) + 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 (raspbian) - shell: mv /tmp/mongodb-3.0.1x/tools/* /usr/bin - when: internet_available and is_raspbian + - name: Install (move) its 9 TOOLS binaries from /opt/iiab/downloads/mongodb-3.0.1x/tools to /usr/bin (raspbian) + shell: mv /tmp/mongodb-3.0.1x/tools/* /usr/bin + + - name: Create Linux group mongodb (raspbian) + group: + name: mongodb + state: present + + - name: Create Linux user mongodb (raspbian) + user: + name: mongodb + group: mongodb # primary group + groups: mongodb + home: /var/lib/mongodb + shell: /usr/sbin/nologin + when: is_raspbian and not (ansible_architecture == aarch64) # OLD WAY / MUCH SLOWER: had put unnec duplicate copies in /opt/iiab/downloads/mongodb-3.0.1x # @@ -84,20 +86,31 @@ # - "{{ downloads_dir }}/mongodb-3.0.1x/tools/*" # when: internet_available and is_raspbian -- name: Create Linux group mongodb (raspbian) - group: - name: mongodb - state: present - when: is_raspbian | bool +- block: + - name: Add mongodb.org signing key + shell: wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - -- name: Create Linux user mongodb (raspbian) - user: - name: mongodb - group: mongodb # primary group - groups: mongodb - home: /var/lib/mongodb - shell: /usr/sbin/nologin - when: is_raspbian | bool + - name: Add mongodb repo for Debian amd64 + apt_repository: + repo: deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main + state: present + filename: mongodb-org + when: is_debian_10 and (ansible_architecture == "amd64") + + - name: Add mongodb repo for Ubuntu + 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: (ansible_architecture == "aarch64") + + - name: "Install packages: mongodb-org, mongodb-org-server" + package: + name: + - mongodb-org + - mongodb-org-server + state: present + when: (ansible_architecture == "aarch64") or ansible_architecture == "amd64") # 2. CONFIGURE MongoDB FOR IIAB diff --git a/roles/mongodb/tasks/main.yml b/roles/mongodb/tasks/main.yml index 0354e808c..eb7623137 100644 --- a/roles/mongodb/tasks/main.yml +++ b/roles/mongodb/tasks/main.yml @@ -31,18 +31,18 @@ - debug: var: is_raspbian -- name: EXIT 'mongodb' ROLE & CONTINUE, IF 'is_debian and not is_raspbian' i.e. TRUE DEBIAN (where MongoDB no longer exists) - fail: # FORCE IT RED THIS ONCE! - msg: ATTEMPTED MongoDB INSTALLATION WITH (TRUE) DEBIAN, which is no longer supported. Nevertheless IIAB will continue (consider this a warning!) - when: is_debian and not is_raspbian - #when: (is_debian and not is_raspbian) and (not is_debian_8) and (not is_debian_9) # Test for Debian 10+ - ignore_errors: yes +#- name: EXIT 'mongodb' ROLE & CONTINUE, IF 'is_debian and not is_raspbian' i.e. TRUE DEBIAN (where MongoDB no longer exists) +# fail: # FORCE IT RED THIS ONCE! +# msg: ATTEMPTED MongoDB INSTALLATION WITH (TRUE) DEBIAN, which is no longer supported. Nevertheless IIAB will continue (consider this a warning!) +# when: is_debian_10 and (ansible_architecture == "aarch64") +# #when: (is_debian and not is_raspbian) and (not is_debian_8) and (not is_debian_9) # Test for Debian 10+ +# ignore_errors: yes # ELSE... - name: Install/Enable/Disable/Record MongoDB (main2.yml) if is_raspbian or not is_debian, i.e. not True Debian include_tasks: main2.yml - when: is_raspbian or not is_debian +# when: is_raspbian or not is_debian # THE block: APPROACH BELOW WORKS JUST LIKE main2.yml ABOVE. # BUT IT VISUALLY POLLUTES: MANY BLUE "skipping:" MESSAGES IN ANSIBLE'S OUTPUT. From ac160747040730d443a1f28c0b42161b83e844e9 Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 16:44:50 -0500 Subject: [PATCH 02/19] better wording --- roles/mongodb/tasks/install.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index c8d5d9a96..c1ccc0378 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -97,7 +97,7 @@ filename: mongodb-org when: is_debian_10 and (ansible_architecture == "amd64") - - name: Add mongodb repo for Ubuntu + - name: Add mongodb repo for Ubuntu all or Debian arm64 apt_repository: repo: deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse state: present From 1d4776ac5941cb3cd4f8973fa5f65699ba378d4c Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 16:49:11 -0500 Subject: [PATCH 03/19] fixes --- roles/mongodb/tasks/install.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index c1ccc0378..3d36a52ba 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -46,7 +46,7 @@ groups: mongodb home: /var/lib/mongodb shell: /usr/sbin/nologin - when: is_raspbian and not (ansible_architecture == aarch64) + when: is_raspbian and not (ansible_architecture == "aarch64") # OLD WAY / MUCH SLOWER: had put unnec duplicate copies in /opt/iiab/downloads/mongodb-3.0.1x # @@ -110,7 +110,7 @@ - mongodb-org - mongodb-org-server state: present - when: (ansible_architecture == "aarch64") or ansible_architecture == "amd64") + when: (ansible_architecture == "aarch64") or (ansible_architecture == "amd64") # 2. CONFIGURE MongoDB FOR IIAB From f709dd6faa1c360cb7aa9755938cf7fe4c1d77f7 Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 17:02:52 -0500 Subject: [PATCH 04/19] spaceout block conditionals --- roles/mongodb/tasks/install.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index 3d36a52ba..10e285325 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -46,6 +46,8 @@ groups: mongodb home: /var/lib/mongodb shell: /usr/sbin/nologin + + # end block when: is_raspbian and not (ansible_architecture == "aarch64") # OLD WAY / MUCH SLOWER: had put unnec duplicate copies in /opt/iiab/downloads/mongodb-3.0.1x @@ -110,6 +112,8 @@ - mongodb-org - mongodb-org-server state: present + + # end block when: (ansible_architecture == "aarch64") or (ansible_architecture == "amd64") From 492c544010b1ac4fd08f65ca22f61be5b8c5636e Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 20:02:40 -0500 Subject: [PATCH 05/19] need bionic for RaspOS-64bit --- roles/mongodb/tasks/install.yml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index 10e285325..40647a64a 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -48,7 +48,7 @@ shell: /usr/sbin/nologin # end block - when: is_raspbian and not (ansible_architecture == "aarch64") + when: not (ansible_architecture == "amd64") or not (ansible_architecture == "aarch64") # OLD WAY / MUCH SLOWER: had put unnec duplicate copies in /opt/iiab/downloads/mongodb-3.0.1x # @@ -92,19 +92,26 @@ - name: Add mongodb.org signing key shell: wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - - - name: Add mongodb repo for Debian amd64 + - name: Add mongodb repo for Debian 10 amd64 apt_repository: repo: deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main state: present filename: mongodb-org when: is_debian_10 and (ansible_architecture == "amd64") - - name: Add mongodb repo for Ubuntu all or Debian arm64 + - name: Add mongodb repo for Ubuntu 18 all or Raspbian-arm64 + 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: (ansible_architecture == "aarch64" and is_raspbian) or is_ubuntu_18 + + - name: Add mongodb repo for Ubuntu 20 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: (ansible_architecture == "aarch64") + when: is_ubuntu_20 and (ansible_architecture == "aarch64" or ansible_architecture == "amd64") - name: "Install packages: mongodb-org, mongodb-org-server" package: From dd07064648268b15494ac8884bc6f5289ba7c90b Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 20:30:39 -0500 Subject: [PATCH 06/19] don't use mongdb.conf from template with apt version --- roles/mongodb/tasks/install.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index 40647a64a..fe94967df 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -47,6 +47,17 @@ home: /var/lib/mongodb shell: /usr/sbin/nologin + - name: Install /etc/mongod.conf from template + 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 == "amd64") or not (ansible_architecture == "aarch64") @@ -138,7 +149,7 @@ - /var/log/mongodb - "{{ mongodb_db_path }}" # i.e. /library/dbdata/mongodb/ -- name: Install /etc/mongod.conf, mongodb.service, /usr/bin/iiab-mongodb-repair-if-no-lock from templates +- name: Install mongodb.service, /usr/bin/iiab-mongodb-repair-if-no-lock from templates template: src: "{{ item.src }}" dest: "{{ item.dest }}" @@ -146,7 +157,6 @@ group: root mode: "{{ item.mode }}" with_items: - - { src: 'mongod.conf.j2', dest: "{{ mongodb_conf }}", mode: '0644' } # i.e. /etc/mongod.conf - { 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' } From c081eb57a9f4f64d94660446c9875e7e7b3f136c Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 20:56:35 -0500 Subject: [PATCH 07/19] change the port --- roles/mongodb/tasks/install.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index fe94967df..5092a5d38 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -131,6 +131,12 @@ - mongodb-org-server state: present + - name: Change the mongodb port to 27018 + lineinfile: + path: /etc/mongod.conf + regexp: '^port:' + line: ' port: 27018' + # end block when: (ansible_architecture == "aarch64") or (ansible_architecture == "amd64") From 0d2bdcb03995c4acde4d666169dbc6a6850b688d Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 21:05:54 -0500 Subject: [PATCH 08/19] fixup --- roles/mongodb/tasks/install.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index 5092a5d38..2d551d48a 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -59,7 +59,7 @@ # end block - when: not (ansible_architecture == "amd64") or not (ansible_architecture == "aarch64") + when: not (ansible_architecture == "amd64" or ansible_architecture == "aarch64") # OLD WAY / MUCH SLOWER: had put unnec duplicate copies in /opt/iiab/downloads/mongodb-3.0.1x # From e32244d032f7733bec397576e4d5c3855a62d7ca Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 21:09:42 -0500 Subject: [PATCH 09/19] shut-up the warning --- roles/mongodb/tasks/install.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index 2d551d48a..0895cce9a 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -102,6 +102,7 @@ - block: - name: Add mongodb.org signing key shell: wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - + warn: false - name: Add mongodb repo for Debian 10 amd64 apt_repository: From 345a1e7a90a3fbc3da6cf27af7a84cee16ed0ef3 Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 21:17:53 -0500 Subject: [PATCH 10/19] tinkering with lineinfile --- roles/mongodb/tasks/install.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index 0895cce9a..05d05c8a6 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -135,7 +135,8 @@ - name: Change the mongodb port to 27018 lineinfile: path: /etc/mongod.conf - regexp: '^port:' + regexp: '^port:$' + backrefs: yes line: ' port: 27018' # end block From e1c1f532c3ff0638bf92dc4e66af54a39626d72f Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 21:55:42 -0500 Subject: [PATCH 11/19] final touchups --- roles/mongodb/tasks/install.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index 05d05c8a6..ccf5af68e 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -102,7 +102,8 @@ - block: - name: Add mongodb.org signing key shell: wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - - warn: false + args: + warn: false - name: Add mongodb repo for Debian 10 amd64 apt_repository: @@ -135,7 +136,7 @@ - name: Change the mongodb port to 27018 lineinfile: path: /etc/mongod.conf - regexp: '^port:$' + regexp: 'port: 27017' backrefs: yes line: ' port: 27018' From ce8d9559f9cbe8780707fb2c4ac053411013fbd2 Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Tue, 25 Aug 2020 22:31:20 -0500 Subject: [PATCH 12/19] don't do 2 pass though mongodb role when disabling --- roles/mongodb/tasks/main2.yml | 7 ++++--- roles/sugarizer/tasks/main.yml | 12 +++++++++--- roles/sugarizer/tasks/main2.yml | 26 ++++++-------------------- 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/roles/mongodb/tasks/main2.yml b/roles/mongodb/tasks/main2.yml index d3ac75edb..c2969695b 100644 --- a/roles/mongodb/tasks/main2.yml +++ b/roles/mongodb/tasks/main2.yml @@ -2,18 +2,19 @@ include_tasks: install.yml when: mongodb_installed is undefined - -- name: Enable & Restart 'mongodb' systemd service if mongodb_enabled, incl daemon-reload (in case mongodb.service changed?) +# daemon_reload is used to force systemd to reconize a newly installed .service file +- name: Restart 'mongodb' systemd service if mongodb_enabled systemd: name: mongodb daemon_reload: yes - enabled: yes + enabled: no state: restarted when: mongodb_enabled | bool - name: Disable & Stop 'mongodb' service, if not mongodb_enabled systemd: name: mongodb + daemon_reload: yes enabled: no state: stopped when: not mongodb_enabled diff --git a/roles/sugarizer/tasks/main.yml b/roles/sugarizer/tasks/main.yml index 3e21e93c3..a99758b90 100644 --- a/roles/sugarizer/tasks/main.yml +++ b/roles/sugarizer/tasks/main.yml @@ -22,12 +22,18 @@ # 3 stanzas moved up from install.yml, so Debian finishes "BIG" IIAB install: # (WITH LOUD RED WARNINGS!) -- name: "Set 'mongodb_install: True' and 'mongodb_enabled: True'" +# If we got here sugarizer_install is True +- name: "Set 'mongodb_install: True'" set_fact: mongodb_install: True - mongodb_enabled: True -- name: MONGODB - run 'mongodb' role (attempt to install & enable MongoDB) +# auto started by sugarizer.service just to record that mongodb should be running +- name: "Set 'mongodb_enabled: True' when sugarizer_enabled" + set_fact: + mongodb_enabled: True + when: sugarizer_enabled + +- name: MONGODB - run 'mongodb' role (attempt to install MongoDB) include_role: name: mongodb diff --git a/roles/sugarizer/tasks/main2.yml b/roles/sugarizer/tasks/main2.yml index 624fce191..8de4160fc 100644 --- a/roles/sugarizer/tasks/main2.yml +++ b/roles/sugarizer/tasks/main2.yml @@ -18,27 +18,13 @@ when: sugarizer_enabled | bool # CONDITION FOR 2-STANZA block: ABOVE -- block: # 3 STANZAS BELOW, CONDITIONED ON 'when: not sugarizer_enabled' - # Stops 'sugarizer' but not 'mongodb' - - name: Disable & Stop 'sugarizer' systemd service, if not sugarizer_enabled - systemd: - name: sugarizer - enabled: no - state: stopped - - # Disable & Stop 'mongodb' via 2 stanzas below - # (meta/main.yml did this in the past) - - - name: "Set 'mongodb_enabled: False' if not sugarizer_enabled" - set_fact: - mongodb_enabled: False - - - name: MONGODB - run 'mongodb' role, to Disable & Stop MongoDB, if not sugarizer_enabled - include_role: - name: mongodb - - when: not sugarizer_enabled # CONDITION FOR 3-STANZA block: ABOVE +- name: Disable & Stop 'sugarizer' systemd service, if not sugarizer_enabled + systemd: + name: sugarizer + enabled: no + state: stopped + when: not sugarizer_enabled - name: Enable/Disable/Restart Apache if primary include_tasks: apache.yml From bc9529c8dea6ec26a27f4a752bdeda1c139e567a Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Wed, 26 Aug 2020 08:52:04 -0500 Subject: [PATCH 13/19] Update roles/mongodb/tasks/main2.yml Co-authored-by: A Holt --- roles/mongodb/tasks/main2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mongodb/tasks/main2.yml b/roles/mongodb/tasks/main2.yml index c2969695b..685271b3f 100644 --- a/roles/mongodb/tasks/main2.yml +++ b/roles/mongodb/tasks/main2.yml @@ -2,7 +2,7 @@ include_tasks: install.yml when: mongodb_installed is undefined -# daemon_reload is used to force systemd to reconize a newly installed .service file +# daemon_reload is used to force systemd to recognize a newly installed .service file - name: Restart 'mongodb' systemd service if mongodb_enabled systemd: name: mongodb From 19b6dd4c71b5263815fb0f61f49632d6505e927c Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Wed, 26 Aug 2020 09:12:57 -0500 Subject: [PATCH 14/19] hide the enabled=no statement in install.yml --- roles/mongodb/tasks/install.yml | 8 ++++++++ roles/mongodb/tasks/main2.yml | 12 ++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index ccf5af68e..5306cba29 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -169,6 +169,14 @@ - { 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 diff --git a/roles/mongodb/tasks/main2.yml b/roles/mongodb/tasks/main2.yml index 685271b3f..49ec6175f 100644 --- a/roles/mongodb/tasks/main2.yml +++ b/roles/mongodb/tasks/main2.yml @@ -2,23 +2,15 @@ include_tasks: install.yml when: mongodb_installed is undefined -# daemon_reload is used to force systemd to recognize a newly installed .service file -- name: Restart 'mongodb' systemd service if mongodb_enabled - systemd: - name: mongodb - daemon_reload: yes - enabled: no - state: restarted - when: mongodb_enabled | bool - - name: Disable & Stop 'mongodb' service, if not mongodb_enabled systemd: name: mongodb - daemon_reload: yes enabled: no state: stopped when: not mongodb_enabled +#'mongodb' systemd service - started on demand by sugarizer +# Just recording that mongodb should be running - name: Add 'mongodb' variable values to {{ iiab_ini_file }} ini_file: From a9db72af816ae88d3c955bb3523c61d2a13fc40d Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Wed, 26 Aug 2020 09:18:16 -0500 Subject: [PATCH 15/19] merge main.yml and main2.yml --- roles/mongodb/tasks/main.yml | 42 ++++++++++++++++++++--------------- roles/mongodb/tasks/main2.yml | 27 ---------------------- 2 files changed, 24 insertions(+), 45 deletions(-) delete mode 100644 roles/mongodb/tasks/main2.yml diff --git a/roles/mongodb/tasks/main.yml b/roles/mongodb/tasks/main.yml index eb7623137..f106a103d 100644 --- a/roles/mongodb/tasks/main.yml +++ b/roles/mongodb/tasks/main.yml @@ -31,24 +31,30 @@ - debug: var: is_raspbian -#- name: EXIT 'mongodb' ROLE & CONTINUE, IF 'is_debian and not is_raspbian' i.e. TRUE DEBIAN (where MongoDB no longer exists) -# fail: # FORCE IT RED THIS ONCE! -# msg: ATTEMPTED MongoDB INSTALLATION WITH (TRUE) DEBIAN, which is no longer supported. Nevertheless IIAB will continue (consider this a warning!) -# when: is_debian_10 and (ansible_architecture == "aarch64") -# #when: (is_debian and not is_raspbian) and (not is_debian_8) and (not is_debian_9) # Test for Debian 10+ -# ignore_errors: yes +- name: Install MongoDB if 'mongodb_installed' not defined, e.g. in {{ iiab_state_file }} # /etc/iiab/iiab_state.yml + include_tasks: install.yml + when: mongodb_installed is undefined -# ELSE... +- name: Disable & Stop 'mongodb' service, if not mongodb_enabled + systemd: + name: mongodb + enabled: no + state: stopped + when: not mongodb_enabled -- name: Install/Enable/Disable/Record MongoDB (main2.yml) if is_raspbian or not is_debian, i.e. not True Debian - include_tasks: main2.yml -# when: is_raspbian or not is_debian +#'mongodb' systemd service - started on demand by sugarizer +# Just recording that mongodb should be running -# THE block: APPROACH BELOW WORKS JUST LIKE main2.yml ABOVE. -# BUT IT VISUALLY POLLUTES: MANY BLUE "skipping:" MESSAGES IN ANSIBLE'S OUTPUT. - -# - block: # ENTIRE BLOCK CONDITIONED ON 'when: is_raspbian or not is_debian' -# -# [MOVED TO main2.yml] -# -# when: is_raspbian or not is_debian # CONDITION FOR ENTIRE ABOVE block: +- name: Add 'mongodb' variable values to {{ iiab_ini_file }} + ini_file: + path: "{{ iiab_ini_file }}" # /etc/iiab/iiab.ini + section: mongodb + option: "{{ item.option }}" + value: "{{ item.value | string }}" + with_items: + - option: name + value: MongoDB + - option: description + value: '"MongoDB is an open-source document database that provides high performance, high availability, and automatic scaling."' + - option: enabled + value: "{{ mongodb_enabled }}" diff --git a/roles/mongodb/tasks/main2.yml b/roles/mongodb/tasks/main2.yml deleted file mode 100644 index 49ec6175f..000000000 --- a/roles/mongodb/tasks/main2.yml +++ /dev/null @@ -1,27 +0,0 @@ -- name: Install MongoDB if 'mongodb_installed' not defined, e.g. in {{ iiab_state_file }} # /etc/iiab/iiab_state.yml - include_tasks: install.yml - when: mongodb_installed is undefined - -- name: Disable & Stop 'mongodb' service, if not mongodb_enabled - systemd: - name: mongodb - enabled: no - state: stopped - when: not mongodb_enabled - -#'mongodb' systemd service - started on demand by sugarizer -# Just recording that mongodb should be running - -- name: Add 'mongodb' variable values to {{ iiab_ini_file }} - ini_file: - path: "{{ iiab_ini_file }}" # /etc/iiab/iiab.ini - section: mongodb - option: "{{ item.option }}" - value: "{{ item.value | string }}" - with_items: - - option: name - value: MongoDB - - option: description - value: '"MongoDB is an open-source document database that provides high performance, high availability, and automatic scaling."' - - option: enabled - value: "{{ mongodb_enabled }}" From acd0312163c5f117acee1f881a53af23f622267e Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Wed, 26 Aug 2020 09:18:59 -0500 Subject: [PATCH 16/19] clean up --- roles/mongodb/tasks/install.yml | 38 --------------------------------- 1 file changed, 38 deletions(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index 5306cba29..72e276398 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -61,44 +61,6 @@ # end block when: not (ansible_architecture == "amd64" or ansible_architecture == "aarch64") -# OLD WAY / MUCH SLOWER: had put unnec duplicate copies in /opt/iiab/downloads/mongodb-3.0.1x -# -#- name: Create dir /opt/iiab/downloads/mongodb-3.0.1x (raspbian) -# file: -# path: "{{ downloads_dir }}/mongodb-3.0.1x" -# state: directory -# when: internet_available and is_raspbian -# -#- name: Download & unzip MongoDB 3.0.14's 3 core binaries to /opt/iiab/downloads/mongodb-3.0.1x (raspbian) -# unarchive: -# remote_src: yes -# src: "{{ iiab_download_url }}/mongodb_stretch_3_0_14_core.zip" -# dest: "{{ downloads_dir }}/mongodb-3.0.1x" -# when: internet_available and is_raspbian -# -#- name: Install (copy) 3 binaries from /opt/iiab/downloads/mongodb-3.0.1x/core to /usr/bin (raspbian) -# copy: -# src: "{{ item }}" -# dest: /usr/bin -# with_fileglob: -# - "{{ downloads_dir }}/mongodb-3.0.1x/core/*" -# when: internet_available and is_raspbian -# -#- name: Download & unzip MongoDB 3.0.15's 9 tools binaries to /opt/iiab/downloads/mongodb-3.0.1x (raspbian) -# unarchive: -# remote_src: yes -# src: "{{ iiab_download_url }}/mongodb_stretch_3_0_14_tools.zip" -# dest: "{{ downloads_dir }}/mongodb-3.0.1x" -# when: internet_available and is_raspbian -# -#- name: Install (copy) 9 binaries from /opt/iiab/downloads/mongodb-3.0.1x/tools to /usr/bin (raspbian) -# copy: -# src: "{{ item }}" -# dest: /usr/bin -# with_fileglob: -# - "{{ downloads_dir }}/mongodb-3.0.1x/tools/*" -# when: internet_available and is_raspbian - - block: - name: Add mongodb.org signing key shell: wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - From f85b3fd5b90ed79e00562f389e1f2df9b2f08a16 Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Wed, 26 Aug 2020 09:41:24 -0500 Subject: [PATCH 17/19] use apt repo for debian-10 aarch64 also --- roles/mongodb/tasks/install.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index 72e276398..ed3997b18 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -79,7 +79,7 @@ repo: deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse state: present filename: mongodb-org - when: (ansible_architecture == "aarch64" and is_raspbian) or is_ubuntu_18 + when: (ansible_architecture == "aarch64" and is_debian_10) or is_ubuntu_18 - name: Add mongodb repo for Ubuntu 20 apt_repository: From 30e798675c8ef17e35b63b5a0bd19585c63c0579 Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Wed, 26 Aug 2020 15:08:07 -0500 Subject: [PATCH 18/19] wording notes is_raspbian_10 only --- roles/mongodb/tasks/install.yml | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/roles/mongodb/tasks/install.yml b/roles/mongodb/tasks/install.yml index ed3997b18..77e596237 100644 --- a/roles/mongodb/tasks/install.yml +++ b/roles/mongodb/tasks/install.yml @@ -11,35 +11,35 @@ # mongodb_stretch_3_0_14_tools.zip IS REALLY 3.0.15 (tools) - block: - - name: Create dir /tmp/mongodb-3.0.1x (raspbian) + - 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 (raspbian) + - 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 (raspbian) + - 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 (raspbian) + - 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 (raspbian) + - 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 (raspbian) + - name: Create Linux group mongodb (aarch32) group: name: mongodb state: present - - name: Create Linux user mongodb (raspbian) + - name: Create Linux user mongodb (aarch32) user: name: mongodb group: mongodb # primary group @@ -47,7 +47,7 @@ home: /var/lib/mongodb shell: /usr/sbin/nologin - - name: Install /etc/mongod.conf from template + - name: Install /etc/mongod.conf from template (aarch32) template: src: "{{ item.src }}" dest: "{{ item.dest }}" @@ -60,28 +60,33 @@ # end block when: not (ansible_architecture == "amd64" 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 + - 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: Add mongodb repo for Debian 10 amd64 + - name: Add mongodb repo for Debian 10 (only amd64 support available) apt_repository: repo: deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main state: present filename: mongodb-org when: is_debian_10 and (ansible_architecture == "amd64") - - name: Add mongodb repo for Ubuntu 18 all or Raspbian-arm64 + # Debian 10 aarch64 might work below but is blocked in main.yml + - name: Add mongodb repo for Ubuntu 18 64bit or Raspbian-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: (ansible_architecture == "aarch64" and is_debian_10) or is_ubuntu_18 + when: (ansible_architecture == "aarch64" and is_raspbian_10) or is_ubuntu_18 - - name: Add mongodb repo for Ubuntu 20 + - name: Add mongodb repo for Ubuntu 20 64bit apt_repository: repo: deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse state: present From a450997aa4842e1df31d8cd51ce31ea5411ffc5d Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Wed, 26 Aug 2020 15:09:28 -0500 Subject: [PATCH 19/19] Bring back the warning with a twist --- roles/mongodb/tasks/main.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/roles/mongodb/tasks/main.yml b/roles/mongodb/tasks/main.yml index f106a103d..fdf726280 100644 --- a/roles/mongodb/tasks/main.yml +++ b/roles/mongodb/tasks/main.yml @@ -31,16 +31,24 @@ - debug: var: is_raspbian +# might be able to lift this once we know using bionic would work +- name: EXIT 'mongodb' ROLE & CONTINUE, IF 'is_debian_10 and aarch64 and not is_raspbian' i.e. TRUE DEBIAN with arch64 + fail: # FORCE IT RED THIS ONCE! + msg: ATTEMPTED MongoDB INSTALLATION WITH (TRUE) DEBIAN aarch64, which is not supported upstream. Nevertheless IIAB will continue (consider this a warning!) + when: (ansible_architecture == "aarch64") and is_debian_10 and not is_raspbian + ignore_errors: yes + +# ELSE... - name: Install MongoDB if 'mongodb_installed' not defined, e.g. in {{ iiab_state_file }} # /etc/iiab/iiab_state.yml include_tasks: install.yml - when: mongodb_installed is undefined + when: mongodb_installed is undefined and not (ansible_architecture == "aarch64" and is_debian_10 and not is_raspbian) - name: Disable & Stop 'mongodb' service, if not mongodb_enabled systemd: name: mongodb enabled: no state: stopped - when: not mongodb_enabled + when: not mongodb_enabled and mongodb_installed is defined #'mongodb' systemd service - started on demand by sugarizer # Just recording that mongodb should be running