mirror of
				https://github.com/spantaleev/matrix-docker-ansible-deploy.git
				synced 2025-10-30 23:07:57 +01:00 
			
		
		
		
	With this change, the following roles are now only dependent on the minimal `matrix-base` role: - `matrix-corporal` - `matrix-coturn` - `matrix-mailer` - `matrix-mxisd` - `matrix-postgres` - `matrix-riot-web` - `matrix-synapse` The `matrix-nginx-proxy` role still does too much and remains dependent on the others. Wiring up the various (now-independent) roles happens via a glue variables file (`group_vars/matrix-servers`). It's triggered for all hosts in the `matrix-servers` group. According to Ansible's rules of priority, we have the following chain of inclusion/overriding now: - role defaults (mostly empty or good for independent usage) - playbook glue variables (`group_vars/matrix-servers`) - inventory host variables (`inventory/host_vars/matrix.<your-domain>`) All roles default to enabling their main component (e.g. `matrix_mxisd_enabled: true`, `matrix_riot_web_enabled: true`). Reasoning: if a role is included in a playbook (especially separately, in another playbook), it should "work" by default. Our playbook disables some of those if they are not generally useful (e.g. `matrix_corporal_enabled: false`).
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| ---
 | |
| 
 | |
| # Pre-checks
 | |
| 
 | |
| - name: Fail if Postgres not enabled
 | |
|   fail:
 | |
|     msg: "Postgres via the matrix-postgres role is not enabled (`matrix_postgres_enabled`). Cannot import."
 | |
|   when: "not matrix_postgres_enabled"
 | |
| 
 | |
| - name: Fail if playbook called incorrectly
 | |
|   fail:
 | |
|     msg: "The `server_path_postgres_dump` variable needs to be provided to this playbook, via --extra-vars"
 | |
|   when: "server_path_postgres_dump is not defined or server_path_postgres_dump.startswith('<')"
 | |
| 
 | |
| - name: Check if the provided Postgres dump file exists
 | |
|   stat:
 | |
|     path: "{{ server_path_postgres_dump }}"
 | |
|   register: result_server_path_postgres_dump_stat
 | |
| 
 | |
| - name: Fail if provided Postgres dump file doesn't exists
 | |
|   fail:
 | |
|     msg: "File cannot be found on the server at {{ server_path_postgres_dump }}"
 | |
|   when: not result_server_path_postgres_dump_stat.stat.exists
 | |
| 
 | |
| - import_tasks: tasks/util/detect_existing_postgres_version.yml
 | |
| 
 | |
| - name: Abort, if no existing Postgres version detected
 | |
|   fail:
 | |
|     msg: "Could not find existing Postgres installation"
 | |
|   when: "not matrix_postgres_detected_existing"
 | |
| 
 | |
| 
 | |
| # Defaults
 | |
| 
 | |
| - name: Set postgres_start_wait_time, if not provided
 | |
|   set_fact:
 | |
|     postgres_start_wait_time: 15
 | |
|   when: "postgres_start_wait_time|default('') == ''"
 | |
| 
 | |
| 
 | |
| # Actual import work
 | |
| 
 | |
| - name: Ensure matrix-postgres is started
 | |
|   service:
 | |
|     name: matrix-postgres
 | |
|     state: started
 | |
|     daemon_reload: yes
 | |
| 
 | |
| - name: Wait a bit, so that Postgres can start
 | |
|   wait_for:
 | |
|     timeout: "{{ postgres_start_wait_time }}"
 | |
|   delegate_to: 127.0.0.1
 | |
|   become: false
 | |
| 
 | |
| - name: Perform Postgres database import
 | |
|   command: |
 | |
|     /usr/bin/docker run --rm --name matrix-postgres-import \
 | |
|     --network={{ matrix_docker_network }} \
 | |
|     --env-file={{ matrix_postgres_base_path }}/env-postgres-psql \
 | |
|     -v {{ server_path_postgres_dump }}:{{ server_path_postgres_dump }}:ro \
 | |
|     --entrypoint=/bin/sh
 | |
|     {{ matrix_postgres_docker_image_latest }}
 | |
|     -c 'cat {{ server_path_postgres_dump }} | \
 | |
|     {{ 'gunzip |' if server_path_postgres_dump.endswith('.gz') else '' }}
 | |
|     psql -v ON_ERROR_STOP=1 -h matrix-postgres'
 |