From 5d3e11225d2ccac347268aa71aa684f5f11d38a3 Mon Sep 17 00:00:00 2001 From: Daniel Berteaud Date: Mon, 1 Mar 2021 19:00:07 +0100 Subject: [PATCH] Update to 2021-03-01 19:00 --- roles/matrix_synapse/defaults/main.yml | 3 +++ roles/matrix_synapse/tasks/archive_post.yml | 10 ++++++++++ roles/matrix_synapse/tasks/archive_pre.yml | 30 ++++++++++++++++++++++++++++ roles/matrix_synapse/tasks/cleanup.yml | 1 + roles/matrix_synapse/tasks/facts.yml | 10 ++++++++++ roles/matrix_synapse/tasks/install.yml | 7 ++++++- roles/matrix_synapse/tasks/main.yml | 5 +++++ roles/matrix_synapse/tasks/write_version.yml | 5 +++++ 8 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 roles/matrix_synapse/tasks/archive_post.yml create mode 100644 roles/matrix_synapse/tasks/archive_pre.yml create mode 100644 roles/matrix_synapse/tasks/write_version.yml diff --git a/roles/matrix_synapse/defaults/main.yml b/roles/matrix_synapse/defaults/main.yml index d84f576..f4f4b4d 100644 --- a/roles/matrix_synapse/defaults/main.yml +++ b/roles/matrix_synapse/defaults/main.yml @@ -3,6 +3,9 @@ # Synapse version to deploy synapse_version: 1.28.0 +# Should ansible handle Synapse upgrades ? If false, only initial install will be done +synapse_manage_upgrade: True + # Synapse install dir synapse_root_dir: /opt/matrix/synapse diff --git a/roles/matrix_synapse/tasks/archive_post.yml b/roles/matrix_synapse/tasks/archive_post.yml new file mode 100644 index 0000000..5f40c3d --- /dev/null +++ b/roles/matrix_synapse/tasks/archive_post.yml @@ -0,0 +1,10 @@ +--- + +- name: Compress previous version + command: tar cf {{ synapse_root_dir }}/archives/{{ synapse_current_version }}.tar.zst --use-compress-program=zstd ./ + args: + chdir: "{{ synapse_root_dir }}/archives/{{ synapse_current_version }}" + warn: False + environment: + ZSTD_CLEVEL: 10 + tags: matrix diff --git a/roles/matrix_synapse/tasks/archive_pre.yml b/roles/matrix_synapse/tasks/archive_pre.yml new file mode 100644 index 0000000..eabdfc7 --- /dev/null +++ b/roles/matrix_synapse/tasks/archive_pre.yml @@ -0,0 +1,30 @@ +--- + +- name: Create archive dir + file: path={{ synapse_root_dir }}/archives/{{ synapse_current_version }} state=directory + tags: matrix + +- name: Archive previous version + synchronize: + src: "{{ synapse_root_dir }}/{{ item }}" + dest: "{{ synapse_root_dir }}/archives/{{ synapse_current_version }}/" + delete: True + compress: False + loop: + - etc + - res + - venv + delegate_to: "{{ inventory_hostname }}" + tags: matrix + +- name: Archive a database dump + command: > + /usr/pgsql-13/bin/pg_dump + --clean + --host={{ synapse_pg_db_server }} + --port={{ synapse_pg_db_port }} + --username=sqladmin {{ synapse_pg_db_name }} + --file={{ synapse_root_dir }}/archives/{{ synapse_current_version }}/{{ synapse_pg_db_name }}.sql + environment: + - PGPASSWORD: "{{ pg_admin_pass }}" + tags: matrix diff --git a/roles/matrix_synapse/tasks/cleanup.yml b/roles/matrix_synapse/tasks/cleanup.yml index e24ae76..281fb00 100644 --- a/roles/matrix_synapse/tasks/cleanup.yml +++ b/roles/matrix_synapse/tasks/cleanup.yml @@ -11,5 +11,6 @@ - "{{ synapse_root_dir }}/res/synapse_janitor.sql" - "{{ synapse_root_dir }}/venv/bin/synapse_janitor.sh" - /etc/cron.d/matrix_synapse + - "{{ synapse_root_dir }}/archives/{{ synapse_current_version }}" tags: matrix diff --git a/roles/matrix_synapse/tasks/facts.yml b/roles/matrix_synapse/tasks/facts.yml index 7d5c21d..0530e8c 100644 --- a/roles/matrix_synapse/tasks/facts.yml +++ b/roles/matrix_synapse/tasks/facts.yml @@ -7,6 +7,16 @@ - vars/{{ ansible_os_family }}.yml tags: matrix +# Detect installed version (if any) +- block: + - import_tasks: ../includes/webapps_set_install_mode.yml + vars: + - root_dir: "{{ synapse_root_dir }}" + - version: "{{ synapse_version }}" + - set_fact: synapse_install_mode={{ (install_mode == 'upgrade' and not synapse_manage_upgrade) | ternary('none',install_mode) }} + - set_fact: synapse_current_version={{ current_version | default('') }} + tags: matrix + - when: synapse_pg_db_pass is not defined block: - import_tasks: ../includes/get_rand_pass.yml diff --git a/roles/matrix_synapse/tasks/install.yml b/roles/matrix_synapse/tasks/install.yml index 6bf6d7b..4048e68 100644 --- a/roles/matrix_synapse/tasks/install.yml +++ b/roles/matrix_synapse/tasks/install.yml @@ -22,9 +22,14 @@ when: synapse_old_venv.stat.exists tags: matrix +- name: Wipe the venv during upgrades + file: path={{ synapse_root_dir }}/venv state=absent + when: synapse_install_mode == 'upgrade' + tags: matrix + - name: Install or update dependencies in the virtual env pip: - state: latest + state: "{{ (synapse_install_mode == 'upgrade') | ternary('latest','present') }}" virtualenv: "{{ synapse_root_dir }}/venv" virtualenv_command: /usr/bin/virtualenv-3 virtualenv_python: /usr/bin/python3 diff --git a/roles/matrix_synapse/tasks/main.yml b/roles/matrix_synapse/tasks/main.yml index 9b84de6..f0dcc96 100644 --- a/roles/matrix_synapse/tasks/main.yml +++ b/roles/matrix_synapse/tasks/main.yml @@ -3,10 +3,15 @@ - include: user.yml - include: directories.yml - include: facts.yml +- include: archive_pre.yml + when: synapse_install_mode == 'upgrade' - include: install.yml - include: conf.yml - include: iptables.yml when: iptables_manage | default(True) - include: service.yml +- include: write_version.yml +- include: archive_post.yml + when: synapse_install_mode == 'upgrade' - include: cleanup.yml diff --git a/roles/matrix_synapse/tasks/write_version.yml b/roles/matrix_synapse/tasks/write_version.yml new file mode 100644 index 0000000..c76fac9 --- /dev/null +++ b/roles/matrix_synapse/tasks/write_version.yml @@ -0,0 +1,5 @@ +--- + +- name: Write current version + copy: content={{ synapse_version }} dest={{ synapse_root_dir }}/meta/ansible_version + tags: matrix