From 2ebe521d094525bb87316d25e091324962db1107 Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Sun, 23 May 2021 21:03:32 +0000 Subject: [PATCH] supervisor files - templated supervisor files - defaults supervisor into play --- roles/lokole/defaults/main.yml | 8 ++-- roles/lokole/tasks/install.yml | 47 +++++++------------ roles/lokole/tasks/main.yml | 20 ++------ .../lokole/templates/lokole_celery_beat.conf | 10 ++-- .../templates/lokole_celery_worker.conf | 10 ++-- roles/lokole/templates/lokole_gunicorn.conf | 10 ++-- roles/lokole/templates/lokole_restarter.conf | 8 ++-- 7 files changed, 47 insertions(+), 66 deletions(-) diff --git a/roles/lokole/defaults/main.yml b/roles/lokole/defaults/main.yml index 153fef682..0045b8aad 100644 --- a/roles/lokole/defaults/main.yml +++ b/roles/lokole/defaults/main.yml @@ -20,14 +20,16 @@ lokole_admin_password: changeme lokole_install_path: "{{ content_base }}/lokole" # /library/lokole lokole_venv: "{{ lokole_install_path }}/venv" # /library/lokole/venv +lokole_confd: /etc/supervisor/conf.d # Info needed to run Lokole: lokole_user: lokole lokole_url: /lokole lokole_uid: "2000" -lokole_run_directory: /home/{{ lokole_user }}/state -lokole_log_directory: /home/{{ lokole_user }}/log -lokole_domain_socket: "{{ lokole_run_directory }}/lokole_gunicorn.sock" +lokole_home_dir: /home/{{ lokole_user }} +lokole_run_dir: "{{ lokole_home_dir }}/state" +lokole_log_dir: "{{ lokole_home_dir }}/logs" +lokole_domain_socket: "{{ lokole_run_dir }}/lokole_gunicorn.sock" lokole_sim_type: LocalOnly lokole_full_url: "http://{{ iiab_hostname }}.{{ iiab_domain }}{{ lokole_url }}" # http://box.lan/lokole diff --git a/roles/lokole/tasks/install.yml b/roles/lokole/tasks/install.yml index b5aec38ff..bdd9b0c75 100644 --- a/roles/lokole/tasks/install.yml +++ b/roles/lokole/tasks/install.yml @@ -25,6 +25,7 @@ - libjpeg-dev - libssl-dev - libopenjp2-7 # 2020-02-01: To solve bug #2221 + - supervisor state: present # For development purposes -- To install Lokole from a given commit, add the @@ -75,47 +76,47 @@ ansible.builtin.user: state: present name: "{{ lokole_user }}" + group: "{{ lokole_user }}" system: yes uid: "{{ lokole_uid }}" - home: /home/{{ lokole_user }} + home: "{{ lokole_home_dir }}" -- name: mkdir {{ lokole_run_directory }} +- name: mkdir {{ lokole_run_dir }} file: state: directory - path: "{{ lokole_run_directory }}" + path: "{{ lokole_run_dir }}/lokole_restarter" group: "{{ lokole_user }}" owner: "{{ lokole_user }}" mode: g+rw -- name: mkdir /{{ lokole_user }}/log +- name: mkdir {{ lokole_log_dir }} file: state: directory - path: "{{ lokole_log_directory }}" + path: "{{ lokole_log_dir }}" group: "{{ lokole_user }}" owner: "{{ lokole_user }}" mode: g+rw -- name: Install {{ lokole_run_directory }}/settings.env +- name: Install {{ lokole_run_dir }}/settings.env template: src: settings.env.j2 - dest: "{{ lokole_run_directory }}/settings.env" + dest: "{{ lokole_run_dir }}/settings.env" group: "{{ lokole_user }}" owner: "{{ lokole_user }}" mode: a+rw -- name: Install {{ lokole_run_directory }}/webapp_secrets.sh from template, to configure Lokole +- name: Install {{ lokole_confd }} templates 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: - src: webapp.sh.j2 - dest: "{{ lokole_run_directory }}/webapp.sh" + src: "{{ item.src }}" + dest: "{{ lokole_confd }}" group: "{{ lokole_user }}" owner: "{{ lokole_user }}" - mode: a+x + mode: 0644 + with_items: + - { src: 'lokole_gunicorn.conf' } + - { src: 'lokole_celery_beat.conf' } + - { src: 'lokole_celery_worker.conf' } + - { src: 'lokole_restarter.conf' } - name: Create Lokole admin user with password, for http://box{{ lokole_url }} # http://box/lokole shell: | @@ -129,18 +130,6 @@ mode: 0644 when: apache_install -- name: Install unit files {lokole.service, celery.service, celerybeat.service, lokole_restarter.service} into /etc/systemd/system, from template - template: - 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 - name: "Set 'lokole_installed: True'" diff --git a/roles/lokole/tasks/main.yml b/roles/lokole/tasks/main.yml index 9f186a60e..d1955d82c 100644 --- a/roles/lokole/tasks/main.yml +++ b/roles/lokole/tasks/main.yml @@ -24,34 +24,24 @@ when: lokole_installed is undefined -- name: Do a 'systemctl daemon-reload' if lokole_enabled +- name: Do a 'systemctl daemon-reload' systemd: daemon_reload: yes when: lokole_enabled -- name: Enable & Restart {lokole, celery, celerybeat, lokole_restarter} systemd services, if lokole_enabled +- name: Enable & Restart supervisor systemd service, if lokole_enabled systemd: - name: "{{ item }}" + name: supervisor enabled: yes state: restarted when: lokole_enabled - with_items: - - lokole - - celery - - celerybeat - - lokole_restarter -- name: Disable & Stop all 4 (above) systemd services, if not lokole_enabled +- name: Disable & Stop supervisor systemd service, if not lokole_enabled systemd: - name: "{{ item }}" + name: supervisor 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: SHIM FOR NOW SO ALWAYS DO THE...Enable/Disable/Restart Apache - name: Enable/Disable/Restart Apache if primary diff --git a/roles/lokole/templates/lokole_celery_beat.conf b/roles/lokole/templates/lokole_celery_beat.conf index 471cd96fb..517055c32 100644 --- a/roles/lokole/templates/lokole_celery_beat.conf +++ b/roles/lokole/templates/lokole_celery_beat.conf @@ -1,10 +1,10 @@ [program:lokole_celery_beat] -command="/home/ubuntu/lokole/venv/bin/celery" --app=opwen_email_client.webapp.tasks beat --pidfile="/home/ubuntu/lokole/state/lokole_celery_beat.pid" --loglevel=error +command="{{ lokole_venv }}/bin/celery" --app=opwen_email_client.webapp.tasks beat --pidfile="{{ lokole_run_dir }}/lokole_celery_beat.pid" --loglevel=error autostart=true autorestart=true startretries=3 stopasgroup=true -stderr_logfile=/home/ubuntu/lokole/logs/lokole_celery_beat.stderr.log -stdout_logfile=/home/ubuntu/lokole/logs/lokole_celery_beat.stdout.log -user=ubuntu -environment=OPWEN_SETTINGS=/home/ubuntu/lokole/state/settings.env \ No newline at end of file +stderr_logfile={{ lokole_log_dir }}/lokole_celery_beat.stderr.log +stdout_logfile={{ lokole_log_dir }}/lokole_celery_beat.stdout.log +user={{ lokole_user }} +environment=OPWEN_SETTINGS={{ lokole_run_dir }}/settings.env diff --git a/roles/lokole/templates/lokole_celery_worker.conf b/roles/lokole/templates/lokole_celery_worker.conf index 3a88fec0c..85eb61ee0 100644 --- a/roles/lokole/templates/lokole_celery_worker.conf +++ b/roles/lokole/templates/lokole_celery_worker.conf @@ -1,10 +1,10 @@ [program:lokole_celery_worker] -command="/home/ubuntu/lokole/venv/bin/celery" --app=opwen_email_client.webapp.tasks worker --loglevel=error --concurrency=2 +command="{{ lokole_venv }}/bin/celery" --app=opwen_email_client.webapp.tasks worker --loglevel=error --concurrency=2 autostart=true autorestart=true startretries=3 stopasgroup=true -stderr_logfile=/home/ubuntu/lokole/logs/lokole_celery_worker.stderr.log -stdout_logfile=/home/ubuntu/lokole/logs/lokole_celery_worker.stdout.log -user=ubuntu -environment=OPWEN_SETTINGS=/home/ubuntu/lokole/state/settings.env \ No newline at end of file +stderr_logfile={{ lokole_log_dir }}/lokole_celery_worker.stderr.log +stdout_logfile={{ lokole_log_dir }}/lokole_celery_worker.stdout.log +user="{{ lokole_user }}" +environment=OPWEN_SETTINGS={{ lokole_run_dir }}/settings.env diff --git a/roles/lokole/templates/lokole_gunicorn.conf b/roles/lokole/templates/lokole_gunicorn.conf index a7f652c10..9d927ae30 100644 --- a/roles/lokole/templates/lokole_gunicorn.conf +++ b/roles/lokole/templates/lokole_gunicorn.conf @@ -1,10 +1,10 @@ [program:lokole_gunicorn] -command="/home/ubuntu/lokole/venv/bin/gunicorn" --bind="unix:/home/ubuntu/lokole/state/lokole_gunicorn.sock" --timeout=300 --workers=3 --log-level=error opwen_email_client.webapp:app +command="{{ lokole_venv }}/bin/gunicorn" --bind="unix:{{ lokole_run_dir }}/lokole_gunicorn.sock" --timeout=300 --workers=3 --log-level=error opwen_email_client.webapp:app autostart=true autorestart=true startretries=3 stopasgroup=true -stderr_logfile=/home/ubuntu/lokole/logs/lokole_gunicorn.stderr.log -stdout_logfile=/home/ubuntu/lokole/logs/lokole_gunicorn.stdout.log -user=ubuntu -environment=OPWEN_SETTINGS=/home/ubuntu/lokole/state/settings.env \ No newline at end of file +stderr_logfile={{ lokole_log_dir }}/lokole_gunicorn.stderr.log +stdout_logfile={{ lokole_log_dir }}/lokole_gunicorn.stdout.log +user={{ lokole_user }} +environment=OPWEN_SETTINGS={{ lokole_run_dir }}/settings.env diff --git a/roles/lokole/templates/lokole_restarter.conf b/roles/lokole/templates/lokole_restarter.conf index 1cea4f04d..a17133113 100644 --- a/roles/lokole/templates/lokole_restarter.conf +++ b/roles/lokole/templates/lokole_restarter.conf @@ -1,10 +1,10 @@ [program:lokole_restarter] -command="/home/ubuntu/lokole/venv/bin/manage.py" restarter --directory="/home/ubuntu/lokole/state/lokole_restarter" +command="{{ lokole_venv }}/bin/manage.py" restarter --directory="{{ lokole_run_dir }}/lokole_restarter" autostart=true autorestart=true startretries=3 stopasgroup=true -stderr_logfile=/home/ubuntu/lokole/logs/lokole_restarter.stderr.log -stdout_logfile=/home/ubuntu/lokole/logs/lokole_restarter.stdout.log +stderr_logfile={{ lokole_log_dir }}/lokole_restarter.stderr.log +stdout_logfile={{ lokole_log_dir }}/lokole_restarter.stdout.log user=root -environment= \ No newline at end of file +environment=