|
- ---
-
- # We used to store Postgres data directly under `/matrix/postgres` (what is now considered `matrix_postgres_base_path`).
- #
- # From now on, we expect to store Postgres data one directory below now (`/matrix/postgres/data` - `matrix_postgres_data_path`).
- # We wish to use the base directory for other purposes (storing environment variable files, etc.).
- # Mixing those with the Postgres data is no good and it leads to Postgres's `initdb` complaining to initialize
- # a database in a non-empty directory.
- #
- # For this reason, we store the Postgres data in `/matrix/postgres/data` and need to relocate any installations
- # which still store it in the parent directory (`/matrix/postgres`).
-
- - name: Check if old Postgres data directory is used
- stat:
- path: "{{ matrix_postgres_base_path }}/PG_VERSION"
- register: result_pg_old_data_dir_stat
-
- - name: Warn if old Postgres data directory detected
- debug:
- msg: >
- Found that you have Postgres data in `{{ matrix_postgres_base_path }}`.
- From now on, Postgres data is supposed to be stored in `{{ matrix_postgres_data_path }}` instead.
- We'll stop Postgres and relocate the files there for you.
- when: "result_pg_old_data_dir_stat.stat.exists"
-
- - name: Find files and directories in old Postgres data path
- find:
- paths: "{{ matrix_postgres_base_path }}"
- file_type: any
- excludes: ["data"]
- register: "result_pg_old_data_dir_find"
- when: "result_pg_old_data_dir_stat.stat.exists"
-
- - name: Ensure new Postgres data path exists
- file:
- path: "{{ matrix_postgres_data_path }}"
- state: directory
- mode: 0700
- owner: "{{ matrix_user_username }}"
- group: "{{ matrix_user_username }}"
- when: "result_pg_old_data_dir_stat.stat.exists"
-
- - name: Ensure matrix-postgres is stopped
- service:
- name: matrix-postgres
- state: stopped
- daemon_reload: yes
- when: "result_pg_old_data_dir_stat.stat.exists"
-
- - block:
- - name: Relocate Postgres data files from old directory to new
- command: "mv {{ item.path }} {{ matrix_postgres_data_path }}/{{ item.path|basename }}"
- with_items: "{{ result_pg_old_data_dir_find.files }}"
- when: "result_pg_old_data_dir_stat.stat.exists"
-
- # Intentionally not starting matrix-postgres here.
- # It likely needs to be updated to point to the new directory.
- # In fact, let's even get rid of the outdated service, to ensure no one will start it
- # and have it initialize a new database.
-
- - name: Ensure outdated matrix-postgres.service doesn't exist
- file:
- path: "/etc/systemd/system/matrix-postgres.service"
- state: absent
- when: "result_pg_old_data_dir_stat.stat.exists"
-
- - name: Ensure systemd reloaded after getting rid of outdated matrix-postgres.service
- service:
- daemon_reload: yes
- when: "result_pg_old_data_dir_stat.stat.exists"
|