51312b8250
As suggested in #63 (Github issue), splitting the playbook's logic into multiple roles will be beneficial for maintainability. This patch realizes this split. Still, some components affect others, so the roles are not really independent of one another. For example: - disabling mxisd (`matrix_mxisd_enabled: false`), causes Synapse and riot-web to reconfigure themselves with other (public) Identity servers. - enabling matrix-corporal (`matrix_corporal_enabled: true`) affects how reverse-proxying (by `matrix-nginx-proxy`) is done, in order to put matrix-corporal's gateway server in front of Synapse We may be able to move away from such dependencies in the future, at the expense of a more complicated manual configuration, but it's probably not worth sacrificing the convenience we have now. As part of this work, the way we do "start components" has been redone now to use a loop, as suggested in #65 (Github issue). This should make restarting faster and more reliable.
107 lines
3.9 KiB
YAML
107 lines
3.9 KiB
YAML
---
|
|
|
|
#
|
|
# Generic tasks, no matter what kind of server we're using (internal/external)
|
|
#
|
|
|
|
- import_tasks: "{{ role_path }}/tasks/migrate_postgres_data_directory.yml"
|
|
|
|
- import_tasks: "{{ role_path }}/tasks/util/detect_existing_postgres_version.yml"
|
|
|
|
# If we have found an existing version (installed from before), we use its corresponding Docker image.
|
|
# If not, we install using the latest Postgres.
|
|
#
|
|
# Upgrading is supposed to be performed separately and explicitly (see `upgrade_postgres.yml`).
|
|
- set_fact:
|
|
matrix_postgres_docker_image_to_use: "{{ matrix_postgres_docker_image_latest if matrix_postgres_detected_version_corresponding_docker_image == '' else matrix_postgres_detected_version_corresponding_docker_image }}"
|
|
|
|
- name: Warn if on an old version of Postgres
|
|
debug:
|
|
msg: "NOTE: Your setup is on an old Postgres version ({{ matrix_postgres_docker_image_to_use }}), while {{ matrix_postgres_docker_image_latest }} is supported. You can upgrade using --tags=upgrade-postgres"
|
|
when: "matrix_postgres_docker_image_to_use != matrix_postgres_docker_image_latest"
|
|
|
|
# Even if we don't run the internal server, we still need this for running the CLI
|
|
- name: Ensure postgres Docker image is pulled
|
|
docker_image:
|
|
name: "{{ matrix_postgres_docker_image_to_use }}"
|
|
|
|
# We always create these directories, even if an external Postgres is used,
|
|
# because we store environment variable files there.
|
|
- name: Ensure Postgres paths exist
|
|
file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
mode: 0700
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
with_items:
|
|
- "{{ matrix_postgres_base_path }}"
|
|
- "{{ matrix_postgres_data_path }}"
|
|
|
|
- name: Ensure Postgres environment variables file created
|
|
template:
|
|
src: "{{ role_path }}/templates/{{ item }}.j2"
|
|
dest: "{{ matrix_postgres_base_path }}/{{ item }}"
|
|
mode: 0640
|
|
with_items:
|
|
- "env-postgres-psql"
|
|
- "env-postgres-server"
|
|
|
|
- name: Ensure matrix-postgres-cli script created
|
|
template:
|
|
src: "{{ role_path }}/templates/usr-local-bin/matrix-postgres-cli.j2"
|
|
dest: "/usr/local/bin/matrix-postgres-cli"
|
|
mode: 0750
|
|
|
|
- name: Ensure matrix-make-user-admin script created
|
|
template:
|
|
src: "{{ role_path }}/templates/usr-local-bin/matrix-make-user-admin.j2"
|
|
dest: "/usr/local/bin/matrix-make-user-admin"
|
|
mode: 0750
|
|
|
|
#
|
|
# Tasks related to setting up an internal postgres server
|
|
#
|
|
|
|
- name: Ensure matrix-postgres.service installed
|
|
template:
|
|
src: "{{ role_path }}/templates/systemd/matrix-postgres.service.j2"
|
|
dest: "/etc/systemd/system/matrix-postgres.service"
|
|
mode: 0644
|
|
when: "not matrix_postgres_use_external"
|
|
|
|
#
|
|
# Tasks related to getting rid of the internal postgres server (if it was previously enabled)
|
|
#
|
|
|
|
- name: Check existence of matrix-postgres service
|
|
stat:
|
|
path: "/etc/systemd/system/matrix-postgres.service"
|
|
register: matrix_postgres_service_stat
|
|
when: matrix_postgres_use_external
|
|
|
|
- name: Ensure matrix-postgres is stopped
|
|
service:
|
|
name: matrix-postgres
|
|
state: stopped
|
|
daemon_reload: yes
|
|
when: "matrix_postgres_use_external and matrix_postgres_service_stat.stat.exists"
|
|
|
|
- name: Ensure matrix-postgres.service doesn't exist
|
|
file:
|
|
path: "/etc/systemd/system/matrix-postgres.service"
|
|
state: absent
|
|
when: "matrix_postgres_use_external and matrix_postgres_service_stat.stat.exists"
|
|
|
|
- name: Check existence of matrix-postgres local data path
|
|
stat:
|
|
path: "{{ matrix_postgres_data_path }}"
|
|
register: matrix_postgres_data_path_stat
|
|
when: matrix_postgres_use_external
|
|
|
|
# We just want to notify the user. Deleting data is too destructive.
|
|
- name: Notify if matrix-postgres local data remains
|
|
debug:
|
|
msg: "Note: You are not using a local PostgreSQL database, but some old data remains from before in {{ matrix_postgres_data_path }}. Feel free to delete it."
|
|
when: "matrix_postgres_use_external and matrix_postgres_data_path_stat.stat.exists"
|