Add (native) Traefik support to synapse-admin

Previously, it had to go through matrix-nginx-proxy.
It's exposed to Traefik directly via container labels now.
This commit is contained in:
Slavi Pantaleev
2023-02-13 15:08:42 +02:00
parent 80935a5194
commit 3d9aa8387e
8 changed files with 133 additions and 9 deletions

View File

@ -1,7 +1,7 @@
---
- block:
- when: matrix_synapse_admin_enabled | bool
- when: matrix_synapse_admin_enabled | bool and matrix_synapse_admin_nginx_proxy_integration_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/inject_into_nginx_proxy.yml"
tags:
- setup-all

View File

@ -1,5 +1,21 @@
---
- name: Ensure matrix-synapse-admin path exist
ansible.builtin.file:
path: "{{ matrix_synapse_admin_base_path }}"
state: directory
mode: 0700
owner: "{{ matrix_user_username }}"
group: "{{ matrix_user_groupname }}"
- name: Ensure matrix-synapse-admin labels file is created
ansible.builtin.template:
src: "{{ role_path }}/templates/labels.j2"
dest: "{{ matrix_synapse_admin_base_path }}/labels"
owner: "{{ matrix_user_username }}"
group: "{{ matrix_user_groupname }}"
mode: 0640
- name: Ensure matrix-synapse-admin image is pulled
community.docker.docker_image:
name: "{{ matrix_synapse_admin_docker_image }}"
@ -35,9 +51,13 @@
pull: true
when: matrix_synapse_admin_container_image_self_build | bool
- name: Ensure matrix-synapse-admin container network is created
community.general.docker_network:
name: "{{ matrix_synapse_admin_container_network }}"
driver: bridge
- name: Ensure matrix-synapse-admin.service installed
ansible.builtin.template:
src: "{{ role_path }}/templates/systemd/matrix-synapse-admin.service.j2"
dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-synapse-admin.service"
mode: 0644
register: matrix_synapse_admin_systemd_service_result

View File

@ -18,3 +18,8 @@
ansible.builtin.file:
path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-synapse-admin.service"
state: absent
- name: Ensure matrix-synapse-admin directory doesn't exist
ansible.builtin.file:
path: "{{ matrix_synapse_admin_base_path }}"
state: absent

View File

@ -10,3 +10,24 @@
- {'old': 'matrix_synapse_admin_docker_repo', 'new': 'matrix_synapse_admin_container_self_build_repo'}
- {'old': 'matrix_synapse_admin_container_self_build', 'new': 'matrix_synapse_admin_container_image_self_build'}
- {'old': 'matrix_synapse_admin_container_self_build_repo', 'new': 'matrix_synapse_admin_container_image_self_build_repo'}
- when: matrix_synapse_admin_container_labels_traefik_enabled | bool
block:
- name: Fail if required matrix-synapse-admin Traefik settings not defined
ansible.builtin.fail:
msg: >-
You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''"
with_items:
- matrix_synapse_admin_container_labels_traefik_hostname
- matrix_synapse_admin_container_labels_traefik_path_prefix
# We ensure it doesn't end with a slash, because we handle both (slash and no-slash).
# Knowing that `matrix_synapse_admin_container_labels_traefik_path_prefix` does not end with a slash
# ensures we know how to set these routes up without having to do "does it end with a slash" checks elsewhere.
- name: Fail if matrix_synapse_admin_container_labels_traefik_path_prefix ends with a slash
ansible.builtin.fail:
msg: >-
matrix_synapse_admin_container_labels_traefik_path_prefix (`{{ matrix_synapse_admin_container_labels_traefik_path_prefix }}`) must not end with a slash.
Example: `/synapse-admin`.
when: "matrix_synapse_admin_container_labels_traefik_path_prefix[-1] == '/'"