From 0033ffc4058f8a0a9e6636d955b89cc1987f67ee Mon Sep 17 00:00:00 2001 From: uumas Date: Tue, 25 Apr 2023 21:35:38 +0300 Subject: [PATCH] Make it possible to remove legacy workers --- roles/synapse/handlers/main.yml | 7 ++++ roles/synapse/tasks/worker_instance.yml | 54 ++++++++++++++++++------- roles/synapse/tasks/worker_type.yml | 5 +++ roles/synapse/vars/defaults.yml | 1 + 4 files changed, 52 insertions(+), 15 deletions(-) diff --git a/roles/synapse/handlers/main.yml b/roles/synapse/handlers/main.yml index 1553ab4..7f840dc 100644 --- a/roles/synapse/handlers/main.yml +++ b/roles/synapse/handlers/main.yml @@ -14,6 +14,13 @@ enabled: true state: restarted +- name: Disable worker services + ansible.builtin.systemd: + name: "matrix-synapse-worker@{{ item }}.service" + state: stopped + enabled: false + loop: "{{ synapse_disable_worker_services }}" + - name: Config worker services ansible.builtin.systemd: daemon_reload: true diff --git a/roles/synapse/tasks/worker_instance.yml b/roles/synapse/tasks/worker_instance.yml index 5ac3ad5..9768e1b 100644 --- a/roles/synapse/tasks/worker_instance.yml +++ b/roles/synapse/tasks/worker_instance.yml @@ -4,20 +4,44 @@ ansible.builtin.set_fact: worker: "{{ worker_type }}-{{ worker_index | default('0') }}" -- name: Ensure config in place for {{ worker }} - ansible.builtin.template: - src: worker.yaml.j2 - dest: /etc/matrix-synapse/workers/{{ worker }}.yaml - mode: 0644 - notify: Config worker services +- name: Enable worker {{ worker }} + when: worker_state == 'present' + block: + - name: Ensure config in place for {{ worker }} + ansible.builtin.template: + src: worker.yaml.j2 + dest: /etc/matrix-synapse/workers/{{ worker }}.yaml + mode: 0644 + notify: Config worker services -- name: Ensure logging config in place for {{ worker }} - ansible.builtin.template: - src: log.yaml.j2 - dest: /etc/matrix-synapse/worker-logs/{{ worker }}-log.yaml - mode: 0644 - notify: Config worker services + - name: Ensure logging config in place for {{ worker }} + ansible.builtin.template: + src: log.yaml.j2 + dest: /etc/matrix-synapse/worker-logs/{{ worker }}-log.yaml + mode: 0644 + notify: Config worker services -- name: Add worker to synapse_worker_services variable - ansible.builtin.set_fact: - synapse_worker_services: "{{ synapse_worker_services + [worker] }}" + - name: Add worker to synapse_worker_services variable + ansible.builtin.set_fact: + synapse_worker_services: "{{ synapse_worker_services + [worker] }}" + + +- name: Disable worker {{ worker }} + when: worker_state == 'absent' + block: + - name: Notify the user + ansible.builtin.debug: + msg: "Disabling worker {{ worker }}! Make sure to remove it from your synapse_workers." + + - name: Ensure worker config files not present + ansible.builtin.file: + path: /etc/matrix-synapse/{{ item }}.yaml + state: absent + notify: Disable worker services + loop: + - workers/{{ worker }} + - worker-logs/{{ worker }}-log + + - name: Add worker to synapse_disable_worker_services + ansible.builtin.set_fact: + synapse_disable_worker_services: "{{ synapse_worker_services + [worker] }}" diff --git a/roles/synapse/tasks/worker_type.yml b/roles/synapse/tasks/worker_type.yml index 7acc3bb..660629d 100644 --- a/roles/synapse/tasks/worker_type.yml +++ b/roles/synapse/tasks/worker_type.yml @@ -14,6 +14,11 @@ - "{{ worker_type }}.yml" skip: true +- name: Warn of legacy workers + ansible.builtin.debug: + msg: "You have a deprecated worker type {{ worker_type }} defined. You should remove it from synapse_workers." + when: worker_state == 'absent' + - name: Reset worker_ports variable ansible.builtin.set_fact: worker_ports: [] diff --git a/roles/synapse/vars/defaults.yml b/roles/synapse/vars/defaults.yml index dbd00b1..ec14b62 100644 --- a/roles/synapse/vars/defaults.yml +++ b/roles/synapse/vars/defaults.yml @@ -1,5 +1,6 @@ --- +worker_state: present worker_app: generic_worker worker_listeners: - client