diff --git a/roles/sugarizer/tasks/main.yml b/roles/sugarizer/tasks/main.yml index 8eb963551..dd52a33bc 100644 --- a/roles/sugarizer/tasks/main.yml +++ b/roles/sugarizer/tasks/main.yml @@ -1,7 +1,74 @@ -- name: Install 'sugarizer' if sugarizer_install and not Debian 10+ - include_tasks: install.yml - when: not sugarizer_installed is defined and sugarizer_install and not ((is_debian and not is_raspbian) and (not is_debian_8) and (not is_debian_9)) +# "How do i fail a task in Ansible if the variable contains a boolean value? +# I want to perform input validation for Ansible playbooks" +# https://stackoverflow.com/questions/46664127/how-do-i-fail-a-task-in-ansible-if-the-variable-contains-a-boolean-value-i-want/46667499#46667499 -- name: Enable 'sugarizer' if sugarizer_enabled - include_tasks: enable.yml - when: (sugarizer_install or sugarizer_installed is defined) and not ((is_debian and not is_raspbian) and (not is_debian_8) and (not is_debian_9)) +# We assume 0-init/tasks/validate_vars.yml has DEFINITELY been run, so no need +# to re-check whether vars are defined here. As Ansible vars cannot be unset: +# https://serverfault.com/questions/856729/how-to-destroy-delete-unset-a-variable-value-in-ansible + +- name: Assert that "sugarizer_install is sameas true" (boolean not string etc) + assert: + that: sugarizer_install is sameas true + fail_msg: "PLEASE SET 'sugarizer_install: True' e.g. IN: /etc/iiab/local_vars.yml" + quiet: yes + +- name: Assert that "sugarizer_enabled | type_debug == 'bool'" (boolean not string etc) + assert: + that: sugarizer_enabled | type_debug == 'bool' + fail_msg: "PLEASE GIVE VARIABLE 'sugarizer_enabled' A PROPER (UNQUOTED) ANSIBLE BOOLEAN VALUE e.g. IN: /etc/iiab/local_vars.yml" + quiet: yes + +- name: EXIT SUGARIZER PLAYBOOK, IF DEBIAN 10+ (where MongoDB doesn't exist) + meta: end_play + when: (is_debian and not is_raspbian) and (not is_debian_8) and (not is_debian_9) + + +- name: Install Sugarizer if 'sugarizer_installed' is not defined in {{ iiab_state_file }} # /etc/iiab/iiab_state.yml + include_tasks: install.yml + when: sugarizer_installed is undefined + + +# Auto-starts mongodb via the requires= line in unit file +- name: Enable & Restart 'sugarizer' systemd service, if sugarizer_enabled + systemd: + name: sugarizer + daemon_reload: yes # in case mongodb.service changed, etc + enabled: yes + state: restarted + when: sugarizer_enabled | bool + +# Stops sugarizer but not mongodb +- name: Disable & Stop 'sugarizer' systemd service, if not sugarizer_enabled + systemd: + name: sugarizer + enabled: no + state: stopped + when: not sugarizer_enabled + +# Stops mongodb (in the past this would've been called via meta/main.yml) +- name: Run mongodb/tasks/enable.yml to stop MongoDB, if not sugarizer_enabled + include_tasks: roles/mongodb/tasks/enable.yml + when: not sugarizer_enabled + +- name: Enable/Disable/Restart Apache if primary + include_tasks: apache.yml + when: not nginx_enabled + +- name: Enable/Disable/Restart NGINX if primary + include_tasks: nginx.yml + when: nginx_enabled | bool + + +- name: Add 'sugarizer' variable values to {{ iiab_ini_file }} + ini_file: + path: "{{ iiab_ini_file }}" + section: sugarizer + option: "{{ item.option }}" + value: "{{ item.value | string }}" + with_items: + - option: name + value: Sugarizer + - option: description + value: '"The Sugar Learning Platform began with the famous One Laptop Per Child project, written in Python. Sugarizer is the new HTML/JavaScript implementation of Sugar, usable in most all browsers."' + - option: sugarizer_enabled + value: "{{ sugarizer_enabled }}"