From 00fe348e929c6af61901874744bb51301e9338ef Mon Sep 17 00:00:00 2001
From: Alexandre Iooss <erdnaxe@crans.org>
Date: Sat, 15 Jan 2022 14:48:06 +0100
Subject: [PATCH] Add matrix-synapse role

---
 plays/matrix.yml                              |  5 ++++
 roles/matrix-synapse/handlers/main.yml        |  5 ++++
 roles/matrix-synapse/tasks/main.yml           | 29 +++++++++++++++++++
 .../apt/sources.list.d/backports.list.j2      |  1 +
 .../conf.d/app_service_config_files.yaml.j2   |  1 +
 .../matrix-synapse/conf.d/database.yaml.j2    |  9 ++++++
 .../matrix-synapse/conf.d/listeners.yaml.j2   | 14 +++++++++
 .../conf.d/report_stats.yaml.j2               |  2 ++
 .../matrix-synapse/conf.d/server_name.yaml.j2 |  2 ++
 9 files changed, 68 insertions(+)
 create mode 100755 plays/matrix.yml
 create mode 100644 roles/matrix-synapse/handlers/main.yml
 create mode 100644 roles/matrix-synapse/tasks/main.yml
 create mode 100644 roles/matrix-synapse/templates/apt/sources.list.d/backports.list.j2
 create mode 100644 roles/matrix-synapse/templates/matrix-synapse/conf.d/app_service_config_files.yaml.j2
 create mode 100644 roles/matrix-synapse/templates/matrix-synapse/conf.d/database.yaml.j2
 create mode 100644 roles/matrix-synapse/templates/matrix-synapse/conf.d/listeners.yaml.j2
 create mode 100644 roles/matrix-synapse/templates/matrix-synapse/conf.d/report_stats.yaml.j2
 create mode 100644 roles/matrix-synapse/templates/matrix-synapse/conf.d/server_name.yaml.j2

diff --git a/plays/matrix.yml b/plays/matrix.yml
new file mode 100755
index 00000000..60543aa8
--- /dev/null
+++ b/plays/matrix.yml
@@ -0,0 +1,5 @@
+#!/usr/bin/env ansible-playbook
+---
+- hosts: trinity.adm.crans.org
+  roles:
+    - matrix-synapse
diff --git a/roles/matrix-synapse/handlers/main.yml b/roles/matrix-synapse/handlers/main.yml
new file mode 100644
index 00000000..aab51dae
--- /dev/null
+++ b/roles/matrix-synapse/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: Restart matrix-synapse
+  service:
+    name: matrix-synapse
+    state: restarted
diff --git a/roles/matrix-synapse/tasks/main.yml b/roles/matrix-synapse/tasks/main.yml
new file mode 100644
index 00000000..83a6d6ef
--- /dev/null
+++ b/roles/matrix-synapse/tasks/main.yml
@@ -0,0 +1,29 @@
+---
+- name: Configure Debian backports repository
+  template:
+    src: apt/sources.list.d/backports.list.j2
+    dest: /etc/apt/sources.list.d/backports.list
+
+- name: Install matrix-synapse
+  apt:
+    update_cache: true
+    default_release: "{{ ansible_lsb.codename }}-backports"
+    name: matrix-synapse
+  register: apt_result
+  retries: 3
+  until: apt_result is succeeded
+
+- name: Configure matrix-synapse
+  template:
+    src: "matrix-synapse/conf.d/{{ item }}.j2"
+    dest: "/etc/matrix-synapse/conf.d/{{ item }}"
+    mode: 0640
+    owner: matrix-synapse
+    group: nogroup
+  loop:
+    - app_service_config_files.yaml
+    - database.yaml
+    - listeners.yaml
+    - report_stats.yaml
+    - server_name.yaml
+  notify: Restart matrix-synapse
diff --git a/roles/matrix-synapse/templates/apt/sources.list.d/backports.list.j2 b/roles/matrix-synapse/templates/apt/sources.list.d/backports.list.j2
new file mode 100644
index 00000000..6326b3e4
--- /dev/null
+++ b/roles/matrix-synapse/templates/apt/sources.list.d/backports.list.j2
@@ -0,0 +1 @@
+deb     {{ debian_mirror }} {{ ansible_lsb.codename }}-backports main contrib non-free
diff --git a/roles/matrix-synapse/templates/matrix-synapse/conf.d/app_service_config_files.yaml.j2 b/roles/matrix-synapse/templates/matrix-synapse/conf.d/app_service_config_files.yaml.j2
new file mode 100644
index 00000000..7ed59eac
--- /dev/null
+++ b/roles/matrix-synapse/templates/matrix-synapse/conf.d/app_service_config_files.yaml.j2
@@ -0,0 +1 @@
+app_service_config_files: ["/var/local/matrix-appservice-irc/registration.yaml"]
diff --git a/roles/matrix-synapse/templates/matrix-synapse/conf.d/database.yaml.j2 b/roles/matrix-synapse/templates/matrix-synapse/conf.d/database.yaml.j2
new file mode 100644
index 00000000..f03b840a
--- /dev/null
+++ b/roles/matrix-synapse/templates/matrix-synapse/conf.d/database.yaml.j2
@@ -0,0 +1,9 @@
+database:
+  name: "psycopg2"
+  args:
+    user: "{{ matrix_synapse.database_user }}"
+    password: "{{ matrix_synapse.database_password }}"
+    database: "{{ matrix_synapse.database_name }}"
+    host: "{{ matrix_synapse.database_host }}"
+    cp_min: 5
+    cp_max: 10
diff --git a/roles/matrix-synapse/templates/matrix-synapse/conf.d/listeners.yaml.j2 b/roles/matrix-synapse/templates/matrix-synapse/conf.d/listeners.yaml.j2
new file mode 100644
index 00000000..a37ad8f6
--- /dev/null
+++ b/roles/matrix-synapse/templates/matrix-synapse/conf.d/listeners.yaml.j2
@@ -0,0 +1,14 @@
+listeners:
+  - port: 8008
+    tls: false
+    bind_addresses:
+      - '::'
+      - '0.0.0.0'
+    type: http
+    x_forwarded: true
+    resources:
+      - names: [client]
+        compress: true
+      - names: [federation]
+        compress: false
+
diff --git a/roles/matrix-synapse/templates/matrix-synapse/conf.d/report_stats.yaml.j2 b/roles/matrix-synapse/templates/matrix-synapse/conf.d/report_stats.yaml.j2
new file mode 100644
index 00000000..47d71ee0
--- /dev/null
+++ b/roles/matrix-synapse/templates/matrix-synapse/conf.d/report_stats.yaml.j2
@@ -0,0 +1,2 @@
+report_stats: false
+
diff --git a/roles/matrix-synapse/templates/matrix-synapse/conf.d/server_name.yaml.j2 b/roles/matrix-synapse/templates/matrix-synapse/conf.d/server_name.yaml.j2
new file mode 100644
index 00000000..0da924aa
--- /dev/null
+++ b/roles/matrix-synapse/templates/matrix-synapse/conf.d/server_name.yaml.j2
@@ -0,0 +1,2 @@
+server_name: crans.org
+
-- 
GitLab