mirror of
				https://github.com/spantaleev/matrix-docker-ansible-deploy.git
				synced 2025-10-24 17:13:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| ---
 | |
| 
 | |
| # 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"
 | |
| 
 | |
| # We should stop Postgres first, before building a list of files,
 | |
| # as to ignore any `postmaster.pid` files, etc.
 | |
| - name: Ensure matrix-postgres is stopped
 | |
|   service:
 | |
|     name: matrix-postgres
 | |
|     state: stopped
 | |
|     daemon_reload: yes
 | |
|   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_groupname }}"
 | |
|   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: "{{ matrix_systemd_path }}/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" |