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