diff --git a/roles/lokole/tasks/install.yml b/roles/lokole/tasks/install.yml index dcb4c1106..247224f4f 100644 --- a/roles/lokole/tasks/install.yml +++ b/roles/lokole/tasks/install.yml @@ -72,14 +72,16 @@ - "{{ lokole_venv }}/lib/python${python_version}/site-packages/opwen_email_client/webapp" - name: mkdir {{ lokole_run_directory }} - file: + file: state: directory path: "{{ lokole_run_directory }}" + #mode: a+x # Not nec, given above 'state: directory' - name: Install {{ lokole_run_directory }}/webapp_secrets.sh from template, to configure Lokole template: src: webapp_secrets.sh.j2 dest: "{{ lokole_run_directory }}/webapp_secrets.sh" + mode: a+x - name: Install {{ lokole_run_directory }}/webapp.sh from template, to configure Gunicorn template: @@ -96,12 +98,19 @@ template: src: lokole.conf.j2 dest: "/etc/{{ apache_conf_dir }}/lokole.conf" + mode: 0644 when: apache_install | bool -- name: Install /etc/systemd/system/lokole.service unit file from template +- name: Install unit files {lokole.service, celery.service, celerybeat.service, lokole_restarter.service} into /etc/systemd/system, from template template: - src: lokole.service.j2 - dest: /etc/systemd/system/lokole.service + src: "{{ item.src }}" + dest: "{{ item.dest}}" + mode: 0644 + with_items: + - { src: 'lokole.service.j2', dest: '/etc/systemd/system/lokole.service' } + - { src: 'celery.service.j2', dest: '/etc/systemd/system/celery.service' } + - { src: 'celerybeat.service.j2', dest: '/etc/systemd/system/celerybeat.service' } + - { src: 'lokole_restarter.service.j2', dest: '/etc/systemd/system/lokole_restarter.service' } # RECORD Lokole AS INSTALLED diff --git a/roles/lokole/tasks/main.yml b/roles/lokole/tasks/main.yml index 603982713..103848e6d 100644 --- a/roles/lokole/tasks/main.yml +++ b/roles/lokole/tasks/main.yml @@ -24,20 +24,34 @@ when: lokole_installed is undefined -- name: Enable & Restart 'lokole' systemd service, if lokole_enabled +- name: Do a 'systemctl daemon-reload' if lokole_enabled systemd: - name: lokole daemon_reload: yes + when: lokole_enabled | bool + +- name: Enable & Restart {lokole, celery, celerybeat, lokole_restarter} systemd services, if lokole_enabled + systemd: + name: "{{ item }}" enabled: yes state: restarted when: lokole_enabled | bool + with_items: + - lokole + - celery + - celerybeat + - lokole_restarter -- name: Disable & Stop 'lokole' systemd service, if not lokole_enabled +- name: Disable & Stop all 4 (above) systemd services, if not lokole_enabled systemd: - name: lokole + name: "{{ item }}" enabled: no state: stopped when: not lokole_enabled + with_items: # @jvonau prefers reverse starting order, if stopping these 4 + - lokole_restarter + - celerybeat + - celery + - lokole #- name: Enable/Disable/Restart Apache if primary - name: SHIM FOR NOW SO ALWAYS DO THE...Enable/Disable/Restart Apache diff --git a/roles/lokole/templates/celery.service.j2 b/roles/lokole/templates/celery.service.j2 new file mode 100644 index 000000000..e1393892b --- /dev/null +++ b/roles/lokole/templates/celery.service.j2 @@ -0,0 +1,14 @@ +[Unit] +Description=Celery service +After=network.target +After=lokole.service +Before=celerybeat.service + +[Service] +Type=simple +ExecStart={{ lokole_venv }}/bin/celery --app=opwen_email_client.webapp.tasks worker --loglevel=info --concurrency=2 +ExecReload=/bin/kill -s HUP $MAINPID +ExecStop=/bin/kill TERM $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/roles/lokole/templates/celerybeat.service.j2 b/roles/lokole/templates/celerybeat.service.j2 new file mode 100644 index 000000000..07d570590 --- /dev/null +++ b/roles/lokole/templates/celerybeat.service.j2 @@ -0,0 +1,12 @@ +[Unit] +Description=Celery beat timed service +After=network.target +After=celery.service +Before=lokole_restarter.service + +[Service] +Type=simple +ExecStart={{ lokole_venv }}/bin/celery --app=opwen_email_client.webapp.tasks beat --loglevel=info + +[Install] +WantedBy=multi-user.target diff --git a/roles/lokole/templates/lokole_restarter.service.j2 b/roles/lokole/templates/lokole_restarter.service.j2 new file mode 100644 index 000000000..12aa52471 --- /dev/null +++ b/roles/lokole/templates/lokole_restarter.service.j2 @@ -0,0 +1,12 @@ +[Unit] +Description=Lokole webapp restarter +After=network.target +After=celerybeat.service + +[Service] +Type=simple +WorkingDirectory={{ lokole_run_directory }} +ExecStart={{ lokole_venv }}/bin/manage.py restarter --directory={{ lokole_run_directory }} + +[Install] +WantedBy=multi-user.target diff --git a/roles/network/tasks/detected_network.yml b/roles/network/tasks/detected_network.yml index c6d73192f..5b1691ceb 100644 --- a/roles/network/tasks/detected_network.yml +++ b/roles/network/tasks/detected_network.yml @@ -145,6 +145,15 @@ with_items: - "{{ lan_list_result.stdout_lines }}" +- name: Detect wifi gateway active + shell: ip r | grep default | grep {{ discovered_wireless_iface }} | wc -l + when: discovered_wireless_iface != "none" + register: wifi_gateway_found + +- name: Set has_wifi_gateway for {{ discovered_wireless_iface }} if gateway is detected + set_fact: + has_wifi_gateway: True + when: wifi_gateway_found is defined and (wifi_gateway_found.stdout|int > 0) - name: Set iiab_wireless_lan_iface to {{ discovered_wireless_iface }} if not none set_fact: diff --git a/roles/network/tasks/main.yml b/roles/network/tasks/main.yml index 35bd3c66d..fdcb2944d 100644 --- a/roles/network/tasks/main.yml +++ b/roles/network/tasks/main.yml @@ -6,13 +6,17 @@ - name: detected_network include_tasks: detected_network.yml -- name: "Set 'no_net_restart: True' if discovered_wireless_iface == iiab_wan_iface" +#- name: "Set 'no_net_restart: True' if discovered_wireless_iface == iiab_wan_iface" +- name: "Set 'no_net_restart: True' if has_wifi_gateway is defined" set_fact: - no_net_restart: True # 2020-05-09: Var is currently used in 10 files: - # 0-init/defaults/main.yml, network/tasks/main.yml, debian.yml, - # detected_network.yml, down-debian.yml, NM-debian.yml, restart.yml, - # sysd-netd-debian.yml, computed_services.yml, rpi_debian.yml - when: discovered_wireless_iface == iiab_wan_iface + no_net_restart: True # 2020-09-12: + # 0-init/defaults/main.yml - default boolean value of False + # network/tasks/main.yml - changes flag based on conditional present + # Var is currently used in 9 subsequent files, to suppress restarting of + # hostapd, dnsmasq and/or other networking service in computed_services.yml, + # debian.yml, detected_network.yml, down-debian.yml, netplan.yml, + # NM-debian.yml, restart.yml, rpi_debian.yml, sysd-netd-debian.yml + when: has_wifi_gateway is defined - name: computed_network include_tasks: computed_network.yml diff --git a/roles/nginx/README.md b/roles/nginx/README.md index 27e17dcc9..381397476 100644 --- a/roles/nginx/README.md +++ b/roles/nginx/README.md @@ -10,7 +10,7 @@ 2. Without PHP available via FastCGI, any function at all for PHP-based applications validates NGINX. -3. Current state of IIAB App/Service migrations as of 2020-08-24: +3. Current state of IIAB App/Service migrations as of 2020-09-12: 1. These support "Native" NGINX but ***NOT*** Apache * Admin Console @@ -49,4 +49,4 @@ * phpmyadmin [*, requires Apache for now, as in Section iii.] * transmission [*] -[*] The 6 above starred roles could use improvement, as of 2020-08-24. +[*] The 6 above starred roles could use improvement, as of 2020-09-12.