diff --git a/iiab-install b/iiab-install index d3dcb4df9..ec6a128c9 100755 --- a/iiab-install +++ b/iiab-install @@ -12,7 +12,25 @@ OS=${OS//\"/} MIN_RPI_KERN=4.9.59-v7+ MIN_ANSIBLE_VER=2.5.6 -export ANSIBLE_LOG_PATH="$CWD/iiab-install.log" +if [ ! -f /etc/iiab/local_vars.yml ]; then + echo -e "\nEXITING: /opt/iiab/iiab/iiab-install REQUIRES /etc/iiab/local_vars.yml\n" >&2 + echo -e "(1) Please read http://wiki.iiab.io/local_vars.yml to learn more" >&2 + echo -e "(2) MIN/MEDIUM/BIG samples are included in /opt/iiab/iiab/vars" >&2 + echo -e "(3) NO TIME FOR DETAILS? RUN INTERNET-IN-A-BOX'S FRIENDLY 1-LINE INSTALLER:\n" >&2 + echo -e ' http://download.iiab.io (click on "6.6" or a more recent version!)\n' >&2 + #case $OS in + # OLPC | fedora) + # echo -e "Please examine /opt/iiab/iiab/vars/local_vars_olpc.yml for XO laptops.\n" >&2 + # ;; + # centos | debian | ubuntu | raspbian) + # echo -e "Please consider /opt/iiab/iiab/vars/local_vars_medium.yml or similar.\n" >&2 + # ;; + # *) + # echo -e "EXITING: IIAB requires Raspbian, Debian, Ubuntu, CentOS or OLPC/Fedora.\n" >&2 + # ;; + #esac + exit 1 +fi echo -e "\n\n./iiab-install $* BEGUN IN $CWD\n" @@ -120,28 +138,11 @@ if [ "$STAGE" -lt 2 ] && [ "$1" == "--debug" ]; then echo -e "\n'--debug' *ignored* as STAGE (counter) < 2." fi -# If /etc/iiab/local_vars.yml is missing, put a default file in place. -if [ ! -f /etc/iiab/local_vars.yml ]; then - case $OS in - OLPC | fedora) - cp ./vars/local_vars_olpc.yml /etc/iiab/local_vars.yml - echo -e "\n/etc/iiab/local_vars.yml created from /opt/iiab/iiab/vars/local_vars_olpc.yml defaults." - ;; - centos | debian | ubuntu | raspbian) - cp ./vars/local_vars_medium.yml /etc/iiab/local_vars.yml - echo -e "\n/etc/iiab/local_vars.yml created from /opt/iiab/iiab/vars/local_vars_medium.yml defaults." - echo "See MIN/MEDIUM/BIG options @ http://wiki.iiab.io/local_vars.yml" - ;; - *) - echo -e "\nEXITING: IIAB requires Raspbian, Debian, Ubuntu, CentOS or OLPC/Fedora." - exit 1 - ;; - esac -fi - echo -e "\nTRY TO RERUN './iiab-install' IF IT FAILS DUE TO CONNECTIVITY ISSUES ETC!" echo -e "\nRunning local playbooks....Stage 0 will now run....followed by Stages $(($STAGE + 1))-9" +export ANSIBLE_LOG_PATH="$CWD/iiab-install.log" + ansible -m setup -i $INVENTORY localhost --connection=local >> /dev/null ansible-playbook -i $INVENTORY $PLAYBOOK ${ARGS} --connection=local diff --git a/roles/mongodb/defaults/main.yml b/roles/mongodb/defaults/main.yml index 6aed9834a..61d1d951f 100644 --- a/roles/mongodb/defaults/main.yml +++ b/roles/mongodb/defaults/main.yml @@ -1,5 +1,6 @@ mongodb_install: False mongodb_enabled: False -mongodb_db_path: "{{ content_base }}/dbdata/mongodb" # == /library/dbdata/mongodb/ mongodb_conf: /etc/mongod.conf +mongodb_db_path: "{{ content_base }}/dbdata/mongodb" # == /library/dbdata/mongodb/ +mongodb_db_lock_file: "{{ mongodb_db_path }}/mongod.lock" diff --git a/roles/mongodb/tasks/main.yml b/roles/mongodb/tasks/main.yml index c4c5cafde..e52e10360 100644 --- a/roles/mongodb/tasks/main.yml +++ b/roles/mongodb/tasks/main.yml @@ -25,10 +25,11 @@ dest: "{{ item.dest }}" owner: root group: root - mode: 0644 + mode: "{{ item.mode }}" with_items: - - { src: 'mongod.conf.j2', dest: "{{ mongodb_conf }}" } - - { src: 'mongodb.service.j2', dest: '/etc/systemd/system/mongodb.service' } + - { src: 'mongod.conf.j2', dest: "{{ mongodb_conf }}", mode: '0644' } + - { 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' } - name: Enable+restart systemd service if mongodb_enabled, with "systemctl daemon-reload" (in case mongodb.service changed?) systemd: diff --git a/roles/mongodb/templates/iiab-mongodb-repair-if-no-lock.j2 b/roles/mongodb/templates/iiab-mongodb-repair-if-no-lock.j2 new file mode 100644 index 000000000..790748103 --- /dev/null +++ b/roles/mongodb/templates/iiab-mongodb-repair-if-no-lock.j2 @@ -0,0 +1,7 @@ +#!/bin/bash + +if [ -f {{ mongodb_db_lock_file }} ]; then + echo '"mongod --repair" cannot run when {{ mongodb_db_lock_file }} present.' >&2 # Output to STDERR but keep going, so /etc/systems/system/mongodb.service continues +else + /usr/bin/mongod --repair --dbpath {{ mongodb_db_path }} +fi diff --git a/roles/mongodb/templates/mongodb.service.j2 b/roles/mongodb/templates/mongodb.service.j2 index 4407efddc..1ae050ae8 100644 --- a/roles/mongodb/templates/mongodb.service.j2 +++ b/roles/mongodb/templates/mongodb.service.j2 @@ -1,14 +1,20 @@ [Unit] Description=High-performance, schema-free document-oriented database After=syslog.target network.target - + [Service] Type=simple User=mongodb Group=mongodb -ExecStartPre=/usr/bin/mongod --repair --dbpath {{ mongodb_db_path }} +# FAILS (after power failures, etc) as --repair cannot run when lock file exists: (https://github.com/iiab/iiab/issues/942) +#ExecStartPre=/usr/bin/mongod --repair --dbpath /library/dbdata/mongodb +# FAILS as systemd cannot run bash here: +#ExecStartPre=if [ ! -f /library/dbdata/mongodb/mongod.lock ]; then /usr/bin/mongod --repair --dbpath {{ mongodb_db_path }}; fi +ExecStartPre=/usr/bin/iiab-mongodb-repair-if-no-lock ExecStart=/usr/bin/mongod -f {{ mongodb_conf }} ExecStop=/usr/bin/killall mongod - +# killall's SIGTERM (15) seems fine, to induce a graceful stop. This would work too: +#ExecStop=mongod --dbpath {{ mongodb_db_path }} --shutdown + [Install] WantedBy=multi-user.target diff --git a/roles/nextcloud/tasks/main.yml b/roles/nextcloud/tasks/main.yml index 136bfea1a..05ebee138 100644 --- a/roles/nextcloud/tasks/main.yml +++ b/roles/nextcloud/tasks/main.yml @@ -18,7 +18,7 @@ url: "{{ nextcloud_dl_url }}/{{ nextcloud_orig_src_file }}" dest: "{{ downloads_dir }}/{{ nextcloud_src_file }}" force: yes - validate_certs: False # TEMPORARY ON/AFTER 2018-07-22 AS download.nextcloud.com CERT EXPIRED: https://github.com/iiab/iiab/issues/954 + #validate_certs: False # TEMPORARY ON/AFTER 2018-07-22 AS download.nextcloud.com CERT EXPIRED: https://github.com/iiab/iiab/issues/954 timeout: "{{ download_timeout }}" when: internet_available and nextcloud_force_install async: 900 diff --git a/vars/default_vars.yml b/vars/default_vars.yml index 015e9ce46..8f097e95a 100644 --- a/vars/default_vars.yml +++ b/vars/default_vars.yml @@ -342,6 +342,8 @@ pathagar_install: False pathagar_enabled: False # Sugarizer +# Might stall MongoDB on Power Failure: github.com/xsce/xsce/issues/879 +# Sugarizer 1.0.1+ strategies to solve? github.com/iiab/iiab/pull/957 sugarizer_install: True sugarizer_enabled: False sugarizer_port: 8089 diff --git a/vars/local_vars_big.yml b/vars/local_vars_big.yml index 56a81d9e8..7e693f6c3 100644 --- a/vars/local_vars_big.yml +++ b/vars/local_vars_big.yml @@ -190,11 +190,9 @@ pathagar_install: False pathagar_enabled: False # Might stall MongoDB on Power Failure: github.com/xsce/xsce/issues/879 +# Sugarizer 1.0.1+ strategies to solve? github.com/iiab/iiab/pull/957 sugarizer_install: True sugarizer_enabled: True -# sugarizer_enabled is currently IGNORED as basic Sugarizer works w/o Journal! -# https://github.com/iiab/iiab/issues/193 Subsequent "./runrole sugarizer" fail -# https://github.com/iiab/iiab/issues/240 Sugarizer 0.8 to 0.9 ongoing issues # 8-MGMT-TOOLS diff --git a/vars/local_vars_big_vpn.yml b/vars/local_vars_big_vpn.yml index 6911b7c38..33e5aa6e8 100644 --- a/vars/local_vars_big_vpn.yml +++ b/vars/local_vars_big_vpn.yml @@ -190,11 +190,9 @@ pathagar_install: False pathagar_enabled: False # Might stall MongoDB on Power Failure: github.com/xsce/xsce/issues/879 +# Sugarizer 1.0.1+ strategies to solve? github.com/iiab/iiab/pull/957 sugarizer_install: True sugarizer_enabled: True -# sugarizer_enabled is currently IGNORED as basic Sugarizer works w/o Journal! -# https://github.com/iiab/iiab/issues/193 Subsequent "./runrole sugarizer" fail -# https://github.com/iiab/iiab/issues/240 Sugarizer 0.8 to 0.9 ongoing issues # 8-MGMT-TOOLS diff --git a/vars/local_vars_medium.yml b/vars/local_vars_medium.yml index b6be18fed..fd109e255 100644 --- a/vars/local_vars_medium.yml +++ b/vars/local_vars_medium.yml @@ -190,11 +190,9 @@ pathagar_install: False pathagar_enabled: False # Might stall MongoDB on Power Failure: github.com/xsce/xsce/issues/879 +# Sugarizer 1.0.1+ strategies to solve? github.com/iiab/iiab/pull/957 sugarizer_install: True sugarizer_enabled: True -# sugarizer_enabled is currently IGNORED as basic Sugarizer works w/o Journal! -# https://github.com/iiab/iiab/issues/193 Subsequent "./runrole sugarizer" fail -# https://github.com/iiab/iiab/issues/240 Sugarizer 0.8 to 0.9 ongoing issues # 8-MGMT-TOOLS diff --git a/vars/local_vars_medium_vpn.yml b/vars/local_vars_medium_vpn.yml index 11d2af017..b82c44260 100644 --- a/vars/local_vars_medium_vpn.yml +++ b/vars/local_vars_medium_vpn.yml @@ -190,11 +190,9 @@ pathagar_install: False pathagar_enabled: False # Might stall MongoDB on Power Failure: github.com/xsce/xsce/issues/879 +# Sugarizer 1.0.1+ strategies to solve? github.com/iiab/iiab/pull/957 sugarizer_install: True sugarizer_enabled: True -# sugarizer_enabled is currently IGNORED as basic Sugarizer works w/o Journal! -# https://github.com/iiab/iiab/issues/193 Subsequent "./runrole sugarizer" fail -# https://github.com/iiab/iiab/issues/240 Sugarizer 0.8 to 0.9 ongoing issues # 8-MGMT-TOOLS diff --git a/vars/local_vars_min.yml b/vars/local_vars_min.yml index c8ce902db..8f5ee2ba1 100644 --- a/vars/local_vars_min.yml +++ b/vars/local_vars_min.yml @@ -190,11 +190,9 @@ pathagar_install: False pathagar_enabled: False # Might stall MongoDB on Power Failure: github.com/xsce/xsce/issues/879 +# Sugarizer 1.0.1+ strategies to solve? github.com/iiab/iiab/pull/957 sugarizer_install: False sugarizer_enabled: False -# sugarizer_enabled is currently IGNORED as basic Sugarizer works w/o Journal! -# https://github.com/iiab/iiab/issues/193 Subsequent "./runrole sugarizer" fail -# https://github.com/iiab/iiab/issues/240 Sugarizer 0.8 to 0.9 ongoing issues # 8-MGMT-TOOLS diff --git a/vars/local_vars_min_vpn.yml b/vars/local_vars_min_vpn.yml index 31725c58f..015bc0ee0 100644 --- a/vars/local_vars_min_vpn.yml +++ b/vars/local_vars_min_vpn.yml @@ -190,11 +190,9 @@ pathagar_install: False pathagar_enabled: False # Might stall MongoDB on Power Failure: github.com/xsce/xsce/issues/879 +# Sugarizer 1.0.1+ strategies to solve? github.com/iiab/iiab/pull/957 sugarizer_install: False sugarizer_enabled: False -# sugarizer_enabled is currently IGNORED as basic Sugarizer works w/o Journal! -# https://github.com/iiab/iiab/issues/193 Subsequent "./runrole sugarizer" fail -# https://github.com/iiab/iiab/issues/240 Sugarizer 0.8 to 0.9 ongoing issues # 8-MGMT-TOOLS