From 1d5310127e6a22a2d1ec5f66f743a6f3001906b5 Mon Sep 17 00:00:00 2001
From: Benjamin Graillot <graillot@crans.org>
Date: Mon, 8 Feb 2021 14:37:05 +0100
Subject: [PATCH] [linx] Add linx server, role and playbook

---
 group_vars/reverseproxy.yml                   |  1 +
 hosts                                         |  1 +
 plays/linx.yml                                |  9 +++++
 roles/linx/handlers/main.yml                  |  5 +++
 roles/linx/tasks/main.yml                     | 37 +++++++++++++++++++
 roles/linx/templates/linx/server.conf.j2      |  9 +++++
 .../systemd/system/linx-server.service.j2     | 16 ++++++++
 7 files changed, 78 insertions(+)
 create mode 100755 plays/linx.yml
 create mode 100644 roles/linx/handlers/main.yml
 create mode 100644 roles/linx/tasks/main.yml
 create mode 100644 roles/linx/templates/linx/server.conf.j2
 create mode 100644 roles/linx/templates/systemd/system/linx-server.service.j2

diff --git a/group_vars/reverseproxy.yml b/group_vars/reverseproxy.yml
index 5c8fd0d7..6a5d2959 100644
--- a/group_vars/reverseproxy.yml
+++ b/group_vars/reverseproxy.yml
@@ -38,6 +38,7 @@ nginx:
     - {from: roundcube.crans.org, to: 172.16.10.107}
     - {from: hedgedoc.crans.org, to: "172.16.10.128:3000"}
     - {from: owncloud.crans.org, to: 172.16.10.136}
+    - {from: linx.crans.org, to: "172.16.10.119:8080"}
     # - {from: belenios.crans.org, to: 172.16.10.111}
     # - {from: mailman.crans.org, to: 10.231.136.180}
 
diff --git a/hosts b/hosts
index 068bb8d6..2af1b2b7 100644
--- a/hosts
+++ b/hosts
@@ -148,6 +148,7 @@ jitsi.adm.crans.org
 kenobi.adm.crans.org
 kiwi.adm.crans.org
 kiwijuice.adm.crans.org
+linx.adm.crans.org
 monitoring.adm.crans.org
 owl.adm.crans.org
 owncloud.adm.crans.org
diff --git a/plays/linx.yml b/plays/linx.yml
new file mode 100755
index 00000000..80c29864
--- /dev/null
+++ b/plays/linx.yml
@@ -0,0 +1,9 @@
+#!/usr/bin/env ansible-playbook
+---
+- hosts: linx.adm.crans.org
+  vars:
+    linx:
+      ip: "{{ query('ldap', 'ip', 'linx', 'adm') }}"
+      siteurl: "https://linx.crans.org/"
+  roles:
+    - linx
diff --git a/roles/linx/handlers/main.yml b/roles/linx/handlers/main.yml
new file mode 100644
index 00000000..e7565721
--- /dev/null
+++ b/roles/linx/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: Restart linx-server
+  service:
+    name: linx-server
+    state: restarted
diff --git a/roles/linx/tasks/main.yml b/roles/linx/tasks/main.yml
new file mode 100644
index 00000000..60214c53
--- /dev/null
+++ b/roles/linx/tasks/main.yml
@@ -0,0 +1,37 @@
+---
+#- name: Install linx
+
+- name: Create linx user
+  user:
+    create_home: yes
+    home: /var/lib/linx
+    system: yes
+    state: present
+    password: "!"
+    update_password: always
+    name: linx
+
+- name: Create linx config dir
+  file:
+    path: /etc/linx
+    state: directory
+
+- name: Deploy configuration file
+  template:
+    src: "linx/server.conf.j2"
+    dest: "/etc/linx/server.conf"
+    mode: 0644
+
+- name: Install linx systemd unit
+  template:
+    src: "systemd/system/linx-server.service.j2"
+    dest: "/etc/systemd/system/linx-server.service"
+    mode: 0644
+  notify: Restart linx-server
+
+- name: Load and activate linx systemd unit
+  systemd:
+    name: linx-server.service
+    daemon_reload: true
+    enabled: true
+    state: started
diff --git a/roles/linx/templates/linx/server.conf.j2 b/roles/linx/templates/linx/server.conf.j2
new file mode 100644
index 00000000..25af772c
--- /dev/null
+++ b/roles/linx/templates/linx/server.conf.j2
@@ -0,0 +1,9 @@
+{{ ansible_header | comment }}
+
+bind = {{ linx.ip }}:8080
+sitename = CRANS Linx
+siteurl = {{ linx.siteurl }}
+maxsize = 10000000
+maxexpiry = 604800
+filespath = /var/lib/linx/files/
+metapath = /var/lib/linx/meta/
diff --git a/roles/linx/templates/systemd/system/linx-server.service.j2 b/roles/linx/templates/systemd/system/linx-server.service.j2
new file mode 100644
index 00000000..4ce99e25
--- /dev/null
+++ b/roles/linx/templates/systemd/system/linx-server.service.j2
@@ -0,0 +1,16 @@
+{{ ansible_header | comment }}
+
+[Unit]
+Description=Linx
+After=network.target
+
+[Service]
+Type=simple
+User=linx
+Group=linx
+WorkingDirectory=/var/lib/linx/
+ExecStart=/usr/local/sbin/linx-server -config /etc/linx/server.conf
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
-- 
GitLab