4c2e1a0588
This is a simplification and a way to make it consistent with
how we do Postgres imports (see 6d89319822
), using
files coming from the server, not from the local machine.
76 lines
2.5 KiB
YAML
76 lines
2.5 KiB
YAML
---
|
|
|
|
# Pre-checks
|
|
|
|
- name: Fail if playbook called incorrectly
|
|
fail: msg="The `server_path_homeserver_db` variable needs to be provided to this playbook, via --extra-vars"
|
|
when: "server_path_homeserver_db is not defined or server_path_homeserver_db.startswith('<')"
|
|
|
|
- name: Check if the provided SQLite homeserver.db file exists
|
|
stat: path="{{ server_path_homeserver_db }}"
|
|
register: result_server_path_homeserver_db_stat
|
|
|
|
- name: Fail if provided SQLite homeserver.db file doesn't exist
|
|
fail: msg="File cannot be found on the local machine at {{ server_path_homeserver_db }}"
|
|
when: not result_server_path_homeserver_db_stat.stat.exists
|
|
|
|
|
|
# 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 stopped
|
|
service: name=matrix-postgres state=stopped daemon_reload=yes
|
|
|
|
- name: Ensure postgres data is wiped out
|
|
file:
|
|
path: "{{ matrix_postgres_data_path }}"
|
|
state: absent
|
|
|
|
- name: Ensure postgres data path exists
|
|
file:
|
|
path: "{{ matrix_postgres_data_path }}"
|
|
state: directory
|
|
mode: 0700
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
|
|
- name: Ensure matrix-postgres is started
|
|
service: name=matrix-postgres state=restarted 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
|
|
|
|
# If the actual migration command (below) fails, it will leave a container behind.
|
|
# Starting it again later will relaunch that one, which may or may not work.
|
|
# To ensure we're starting from a clean state, ensure any such leftovers are removed.
|
|
- name: Cleanup any old leftover migration container
|
|
docker_container:
|
|
name: matrix-synapse-migrate
|
|
state: absent
|
|
|
|
- name: Importing SQLite database into Postgres
|
|
docker_container:
|
|
name: matrix-synapse-migrate
|
|
image: "{{ matrix_synapse_docker_image }}"
|
|
detach: no
|
|
cleanup: yes
|
|
entrypoint: /usr/local/bin/python
|
|
command: "/usr/local/bin/synapse_port_db --sqlite-database {{ server_path_homeserver_db }} --postgres-config /data/homeserver.yaml"
|
|
user: "{{ matrix_user_uid }}:{{ matrix_user_gid }}"
|
|
volumes:
|
|
- "{{ matrix_synapse_config_dir_path }}:/data"
|
|
- "{{ matrix_synapse_run_path }}:/matrix-run"
|
|
- "{{ server_path_homeserver_db }}:/{{ server_path_homeserver_db }}:ro"
|
|
networks:
|
|
- name: "{{ matrix_docker_network }}"
|