Add (SQLite + Postgres) support and automatic migration to matrix-ma1sd
This commit is contained in:
parent
0ca48f3532
commit
af3ea67bba
@ -835,6 +835,10 @@ matrix_ma1sd_systemd_wanted_services_list: |
|
|||||||
(['matrix-mailer.service'] if matrix_mailer_enabled else [])
|
(['matrix-mailer.service'] if matrix_mailer_enabled else [])
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
# Postgres is the default, except if not using `matrix_postgres` (internal postgres)
|
||||||
|
matrix_ma1sd_database_engine: "{{ 'postgres' if matrix_postgres_enabled else 'sqlite' }}"
|
||||||
|
matrix_ma1sd_database_password: "{{ matrix_synapse_macaroon_secret_key | password_hash('sha512', 'ma1sd.db') | to_uuid }}"
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
#
|
#
|
||||||
# /matrix-ma1sd
|
# /matrix-ma1sd
|
||||||
@ -953,6 +957,12 @@ matrix_postgres_db_name: "homeserver"
|
|||||||
|
|
||||||
matrix_postgres_additional_databases: |
|
matrix_postgres_additional_databases: |
|
||||||
{{
|
{{
|
||||||
|
([{
|
||||||
|
'name': matrix_ma1sd_database_db_name,
|
||||||
|
'username': matrix_ma1sd_database_username,
|
||||||
|
'password': matrix_ma1sd_database_password,
|
||||||
|
}] if (matrix_ma1sd_enabled and matrix_ma1sd_database_engine == 'postgres' and matrix_ma1sd_database_hostname == 'matrix-postgres') else [])
|
||||||
|
+
|
||||||
([{
|
([{
|
||||||
'name': matrix_bot_matrix_reminder_bot_database_db_name,
|
'name': matrix_bot_matrix_reminder_bot_database_db_name,
|
||||||
'username': matrix_bot_matrix_reminder_bot_database_username,
|
'username': matrix_bot_matrix_reminder_bot_database_username,
|
||||||
|
@ -39,6 +39,28 @@ matrix_ma1sd_systemd_wanted_services_list: []
|
|||||||
# Enabling this is discouraged. Learn more here: https://github.com/ma1uta/ma1sd/blob/master/docs/features/identity.md#lookups
|
# Enabling this is discouraged. Learn more here: https://github.com/ma1uta/ma1sd/blob/master/docs/features/identity.md#lookups
|
||||||
matrix_ma1sd_matrixorg_forwarding_enabled: false
|
matrix_ma1sd_matrixorg_forwarding_enabled: false
|
||||||
|
|
||||||
|
|
||||||
|
# Database-related configuration fields.
|
||||||
|
#
|
||||||
|
# To use SQLite, stick to these defaults.
|
||||||
|
#
|
||||||
|
# To use Postgres:
|
||||||
|
# - change the engine (`matrix_ma1sd_database_engine: 'postgres'`)
|
||||||
|
# - adjust your database credentials via the `matrix_ma1sd_postgres_*` variables
|
||||||
|
matrix_ma1sd_database_engine: 'sqlite'
|
||||||
|
|
||||||
|
matrix_ma1sd_sqlite_database_path_local: "{{ matrix_ma1sd_data_path }}/ma1sd.db"
|
||||||
|
matrix_ma1sd_sqlite_database_path_in_container: "/var/ma1sd/ma1sd.db"
|
||||||
|
|
||||||
|
matrix_ma1sd_database_username: 'matrix_ma1sd'
|
||||||
|
matrix_ma1sd_database_password: 'some-password'
|
||||||
|
matrix_ma1sd_database_hostname: 'matrix-postgres'
|
||||||
|
matrix_ma1sd_database_port: 5432
|
||||||
|
matrix_ma1sd_database_db_name: 'matrix_ma1sd'
|
||||||
|
|
||||||
|
matrix_ma1sd_database_connection_string: 'postgresql://{{ matrix_ma1sd_database_username }}:{{ matrix_ma1sd_database_password }}@{{ matrix_ma1sd_database_hostname }}:{{ matrix_ma1sd_database_port }}/{{ matrix_ma1sd_database_db_name }}'
|
||||||
|
|
||||||
|
|
||||||
# ma1sd has serveral supported identity stores.
|
# ma1sd has serveral supported identity stores.
|
||||||
# One of them is storing identities directly in Synapse's database.
|
# One of them is storing identities directly in Synapse's database.
|
||||||
# Learn more here: https://github.com/ma1uta/ma1sd/blob/master/docs/stores/synapse.md
|
# Learn more here: https://github.com/ma1uta/ma1sd/blob/master/docs/stores/synapse.md
|
||||||
|
@ -15,6 +15,36 @@
|
|||||||
|
|
||||||
- import_tasks: "{{ role_path }}/tasks/migrate_mxisd.yml"
|
- import_tasks: "{{ role_path }}/tasks/migrate_mxisd.yml"
|
||||||
|
|
||||||
|
|
||||||
|
# These (SQLite -> Postgres) migration tasks are usually at the top,
|
||||||
|
# but we'd like to run them after `migrate_mxisd.yml`, which requires the ma1sd paths to exist.
|
||||||
|
- set_fact:
|
||||||
|
matrix_ma1sd_requires_restart: false
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: Check if an SQLite database already exists
|
||||||
|
stat:
|
||||||
|
path: "{{ matrix_ma1sd_sqlite_database_path_local }}"
|
||||||
|
register: matrix_ma1sd_sqlite_database_path_local_stat_result
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- set_fact:
|
||||||
|
matrix_postgres_db_migration_request:
|
||||||
|
src: "{{ matrix_ma1sd_sqlite_database_path_local }}"
|
||||||
|
dst: "{{ matrix_ma1sd_database_connection_string }}"
|
||||||
|
caller: "{{ role_path|basename }}"
|
||||||
|
engine_variable_name: 'matrix_ma1sd_database_engine'
|
||||||
|
engine_old: 'sqlite'
|
||||||
|
systemd_services_to_stop: ['matrix-ma1sd.service']
|
||||||
|
pgloader_options: ['--with "quote identifiers"']
|
||||||
|
|
||||||
|
- import_tasks: "roles/matrix-postgres/tasks/util/migrate_db_to_postgres.yml"
|
||||||
|
|
||||||
|
- set_fact:
|
||||||
|
matrix_ma1sd_requires_restart: true
|
||||||
|
when: "matrix_ma1sd_sqlite_database_path_local_stat_result.stat.exists|bool"
|
||||||
|
when: "matrix_ma1sd_database_engine == 'postgres'"
|
||||||
|
|
||||||
- name: Ensure ma1sd image is pulled
|
- name: Ensure ma1sd image is pulled
|
||||||
docker_image:
|
docker_image:
|
||||||
name: "{{ matrix_ma1sd_docker_image }}"
|
name: "{{ matrix_ma1sd_docker_image }}"
|
||||||
@ -102,3 +132,9 @@
|
|||||||
service:
|
service:
|
||||||
daemon_reload: yes
|
daemon_reload: yes
|
||||||
when: "matrix_ma1sd_systemd_service_result.changed|bool"
|
when: "matrix_ma1sd_systemd_service_result.changed|bool"
|
||||||
|
|
||||||
|
- name: Ensure matrix-ma1sd.service restarted, if necessary
|
||||||
|
service:
|
||||||
|
name: "matrix-ma1sd.service"
|
||||||
|
state: restarted
|
||||||
|
when: "matrix_ma1sd_requires_restart|bool"
|
||||||
|
@ -11,9 +11,19 @@ key:
|
|||||||
path: /var/ma1sd/sign.key
|
path: /var/ma1sd/sign.key
|
||||||
|
|
||||||
storage:
|
storage:
|
||||||
|
{% if matrix_ma1sd_database_engine == 'sqlite' %}
|
||||||
|
backend: sqlite
|
||||||
provider:
|
provider:
|
||||||
sqlite:
|
sqlite:
|
||||||
database: /var/ma1sd/ma1sd.db
|
database: {{ matrix_ma1sd_sqlite_database_path_in_container|to_json }}
|
||||||
|
{% elif matrix_ma1sd_database_engine == 'postgres' %}
|
||||||
|
backend: postgresql
|
||||||
|
provider:
|
||||||
|
postgresql:
|
||||||
|
database: //{{ matrix_ma1sd_database_hostname }}:{{ matrix_ma1sd_database_port }}/{{ matrix_ma1sd_database_db_name }}
|
||||||
|
username: {{ matrix_ma1sd_database_username|to_json }}
|
||||||
|
password: {{ matrix_ma1sd_database_password|to_json }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if matrix_ma1sd_dns_overwrite_enabled %}
|
{% if matrix_ma1sd_dns_overwrite_enabled %}
|
||||||
dns:
|
dns:
|
||||||
|
@ -93,7 +93,7 @@
|
|||||||
--entrypoint=/bin/sh
|
--entrypoint=/bin/sh
|
||||||
{{ matrix_postgres_pgloader_docker_image }}
|
{{ matrix_postgres_pgloader_docker_image }}
|
||||||
-c
|
-c
|
||||||
'pgloader /in.db {{ matrix_postgres_db_migration_request.dst }}'
|
'pgloader {{ matrix_postgres_db_migration_request.pgloader_options|default([])|join(' ') }} /in.db {{ matrix_postgres_db_migration_request.dst }}'
|
||||||
|
|
||||||
- name: Archive {{ matrix_postgres_db_migration_request.engine_old }} database ({{ matrix_postgres_db_migration_request.src }} -> {{ matrix_postgres_db_migration_request.src }}.backup)
|
- name: Archive {{ matrix_postgres_db_migration_request.engine_old }} database ({{ matrix_postgres_db_migration_request.src }} -> {{ matrix_postgres_db_migration_request.src }}.backup)
|
||||||
command:
|
command:
|
||||||
|
Loading…
Reference in New Issue
Block a user