Prepare matrix-registation for (SQLite + Postgres) support
Auto-migration and everything seems to work. It's just that matrix-registration cannot load the Python modules required for talking to a Postgres database. Tracked here: https://github.com/ZerataX/matrix-registration/issues/44 Until this gets fixed, we'll continue default to 'sqlite'.
This commit is contained in:
parent
516ccb2b2b
commit
8d74593878
@ -1010,6 +1010,12 @@ matrix_postgres_additional_databases: |
|
|||||||
'password': matrix_bot_matrix_reminder_bot_database_password,
|
'password': matrix_bot_matrix_reminder_bot_database_password,
|
||||||
}] if (matrix_bot_matrix_reminder_bot_enabled and matrix_bot_matrix_reminder_bot_database_engine == 'postgres' and matrix_bot_matrix_reminder_bot_database_hostname == 'matrix-postgres') else [])
|
}] if (matrix_bot_matrix_reminder_bot_enabled and matrix_bot_matrix_reminder_bot_database_engine == 'postgres' and matrix_bot_matrix_reminder_bot_database_hostname == 'matrix-postgres') else [])
|
||||||
+
|
+
|
||||||
|
([{
|
||||||
|
'name': matrix_registration_database_db_name,
|
||||||
|
'username': matrix_registration_database_username,
|
||||||
|
'password': matrix_registration_database_password,
|
||||||
|
}] if (matrix_registration_enabled and matrix_registration_database_engine == 'postgres' and matrix_registration_database_hostname == 'matrix-postgres') else [])
|
||||||
|
+
|
||||||
([{
|
([{
|
||||||
'name': matrix_appservice_discord_database_db_name,
|
'name': matrix_appservice_discord_database_db_name,
|
||||||
'username': matrix_appservice_discord_database_username,
|
'username': matrix_appservice_discord_database_username,
|
||||||
@ -1291,6 +1297,18 @@ matrix_registration_api_validate_certs: "{{ false if matrix_ssl_retrieval_method
|
|||||||
|
|
||||||
matrix_registration_container_image_self_build: "{{ matrix_architecture != 'amd64' }}"
|
matrix_registration_container_image_self_build: "{{ matrix_architecture != 'amd64' }}"
|
||||||
|
|
||||||
|
matrix_registration_systemd_required_services_list: |
|
||||||
|
{{
|
||||||
|
['docker.service']
|
||||||
|
+
|
||||||
|
(['matrix-postgres.service'] if matrix_postgres_enabled else [])
|
||||||
|
}}
|
||||||
|
|
||||||
|
# We'd like to use 'postgres' if matrix_postgres_enabled, but the container image doesn't seem to support that.
|
||||||
|
# Learn more here: https://github.com/ZerataX/matrix-registration/issues/44
|
||||||
|
matrix_registration_database_engine: 'sqlite'
|
||||||
|
matrix_registration_database_password: "{{ matrix_synapse_macaroon_secret_key | password_hash('sha512', 'mx.registr.db') | to_uuid }}"
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
#
|
#
|
||||||
# /matrix-registration
|
# /matrix-registration
|
||||||
|
@ -32,6 +32,36 @@ matrix_registration_systemd_wanted_services_list: []
|
|||||||
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:8767"), or empty string to not expose.
|
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:8767"), or empty string to not expose.
|
||||||
matrix_registration_container_http_host_bind_port: ''
|
matrix_registration_container_http_host_bind_port: ''
|
||||||
|
|
||||||
|
# Database-related configuration fields.
|
||||||
|
#
|
||||||
|
# To use SQLite, stick to these defaults.
|
||||||
|
#
|
||||||
|
# To use Postgres:
|
||||||
|
# - change the engine (`matrix_registration_database_engine: 'postgres'`)
|
||||||
|
# - adjust your database credentials via the `matrix_registration_postgres_*` variables
|
||||||
|
matrix_registration_database_engine: 'sqlite'
|
||||||
|
|
||||||
|
matrix_registration_sqlite_database_path_local: "{{ matrix_registration_data_path }}/db.sqlite3"
|
||||||
|
matrix_registration_sqlite_database_path_in_container: "/data/db.sqlite3"
|
||||||
|
|
||||||
|
matrix_registration_database_username: 'matrix_registration'
|
||||||
|
matrix_registration_database_password: 'some-password'
|
||||||
|
matrix_registration_database_hostname: 'matrix-postgres'
|
||||||
|
matrix_registration_database_port: 5432
|
||||||
|
matrix_registration_database_db_name: 'matrix_registration'
|
||||||
|
|
||||||
|
matrix_registration_database_connection_string: 'postgresql://{{ matrix_registration_database_username }}:{{ matrix_registration_database_password }}@{{ matrix_registration_database_hostname }}:{{ matrix_registration_database_port }}/{{ matrix_registration_database_db_name }}'
|
||||||
|
|
||||||
|
# For some reason, matrix-registraiton expects the `db` field to be like this: `sqlite:////data/db.sqlite3`.
|
||||||
|
# (seems like one too many slashes, but..)
|
||||||
|
matrix_registration_db: "{{
|
||||||
|
{
|
||||||
|
'sqlite': ('sqlite:///' + matrix_registration_sqlite_database_path_in_container),
|
||||||
|
'postgres': matrix_registration_database_connection_string,
|
||||||
|
}[matrix_registration_database_engine]
|
||||||
|
}}"
|
||||||
|
|
||||||
|
|
||||||
# The path at which Matrix Registration will be exposed on `matrix.DOMAIN`
|
# The path at which Matrix Registration will be exposed on `matrix.DOMAIN`
|
||||||
# (only applies when matrix-nginx-proxy is used).
|
# (only applies when matrix-nginx-proxy is used).
|
||||||
matrix_registration_public_endpoint: /matrix-registration
|
matrix_registration_public_endpoint: /matrix-registration
|
||||||
|
@ -1,5 +1,31 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
|
- set_fact:
|
||||||
|
matrix_registration_requires_restart: false
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: Check if an SQLite database already exists
|
||||||
|
stat:
|
||||||
|
path: "{{ matrix_registration_sqlite_database_path_local }}"
|
||||||
|
register: matrix_registration_sqlite_database_path_local_stat_result
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- set_fact:
|
||||||
|
matrix_postgres_db_migration_request:
|
||||||
|
src: "{{ matrix_registration_sqlite_database_path_local }}"
|
||||||
|
dst: "{{ matrix_registration_database_connection_string }}"
|
||||||
|
caller: "{{ role_path|basename }}"
|
||||||
|
engine_variable_name: 'matrix_registration_database_engine'
|
||||||
|
engine_old: 'sqlite'
|
||||||
|
systemd_services_to_stop: ['matrix-registration.service']
|
||||||
|
|
||||||
|
- import_tasks: "roles/matrix-postgres/tasks/util/migrate_db_to_postgres.yml"
|
||||||
|
|
||||||
|
- set_fact:
|
||||||
|
matrix_registration_requires_restart: true
|
||||||
|
when: "matrix_registration_sqlite_database_path_local_stat_result.stat.exists|bool"
|
||||||
|
when: "matrix_registration_database_engine == 'postgres'"
|
||||||
|
|
||||||
- name: Ensure matrix-registration paths exist
|
- name: Ensure matrix-registration paths exist
|
||||||
file:
|
file:
|
||||||
path: "{{ item.path }}"
|
path: "{{ item.path }}"
|
||||||
@ -61,3 +87,9 @@
|
|||||||
service:
|
service:
|
||||||
daemon_reload: yes
|
daemon_reload: yes
|
||||||
when: "matrix_registration_systemd_service_result.changed|bool"
|
when: "matrix_registration_systemd_service_result.changed|bool"
|
||||||
|
|
||||||
|
- name: Ensure matrix-registration.service restarted, if necessary
|
||||||
|
service:
|
||||||
|
name: "matrix-registration.service"
|
||||||
|
state: restarted
|
||||||
|
when: "matrix_registration_requires_restart|bool"
|
||||||
|
@ -18,3 +18,10 @@
|
|||||||
when: "item.old in vars"
|
when: "item.old in vars"
|
||||||
with_items:
|
with_items:
|
||||||
- {'old': 'matrix_registration_docker_repo', 'new': 'matrix_registration_container_image_self_build_repo'}
|
- {'old': 'matrix_registration_docker_repo', 'new': 'matrix_registration_container_image_self_build_repo'}
|
||||||
|
|
||||||
|
- name: Fail if Postgres usage attempted
|
||||||
|
fail:
|
||||||
|
msg: >
|
||||||
|
matrix-registration doesn't support using Postgres just yet.
|
||||||
|
Learn more here: https://github.com/ZerataX/matrix-registration/issues/44
|
||||||
|
when: "matrix_registration_database_engine == 'postgres'"
|
||||||
|
@ -3,7 +3,7 @@ server_name: {{ matrix_registration_server_name|to_json }}
|
|||||||
shared_secret: {{ matrix_registration_shared_secret|to_json }}
|
shared_secret: {{ matrix_registration_shared_secret|to_json }}
|
||||||
admin_secret: {{ matrix_registration_admin_secret|to_json }}
|
admin_secret: {{ matrix_registration_admin_secret|to_json }}
|
||||||
riot_instance: {{ matrix_registration_riot_instance|to_json }}
|
riot_instance: {{ matrix_registration_riot_instance|to_json }}
|
||||||
db: 'sqlite:////data/db.sqlite3'
|
db: {{ matrix_registration_db|to_json }}
|
||||||
host: '0.0.0.0'
|
host: '0.0.0.0'
|
||||||
port: 5000
|
port: 5000
|
||||||
rate_limit: ["100 per day", "10 per minute"]
|
rate_limit: ["100 per day", "10 per minute"]
|
||||||
|
Loading…
Reference in New Issue
Block a user