From dd2d39297ed2439b21f3e89a3a97c0256219bc0d Mon Sep 17 00:00:00 2001
From: Yohann D'ANELLO <ynerant@crans.org>
Date: Wed, 31 Mar 2021 12:22:46 +0200
Subject: [PATCH] =?UTF-8?q?[galene]=20Deploy=20Gal=C3=A8ne?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
---
 plays/galene.yml                              |  2 +-
 roles/galene/handlers/main.yml                |  5 ++
 roles/galene/tasks/main.yml                   | 77 +++++++++++++++++++
 .../systemd/system/galene.service.j2          | 16 ++++
 .../templates/update-motd.d/05-service.j2     |  3 +
 5 files changed, 102 insertions(+), 1 deletion(-)
 create mode 100644 roles/galene/handlers/main.yml
 create mode 100644 roles/galene/tasks/main.yml
 create mode 100644 roles/galene/templates/systemd/system/galene.service.j2
 create mode 100755 roles/galene/templates/update-motd.d/05-service.j2

diff --git a/plays/galene.yml b/plays/galene.yml
index a60aaf31..fb5de458 100755
--- a/plays/galene.yml
+++ b/plays/galene.yml
@@ -8,4 +8,4 @@
   roles:
     - certbot
     - nginx
-  # - galene
+    - galene
diff --git a/roles/galene/handlers/main.yml b/roles/galene/handlers/main.yml
new file mode 100644
index 00000000..cf0b5792
--- /dev/null
+++ b/roles/galene/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: Restart galène
+  systemd:
+    name: galene
+    state: restarted
diff --git a/roles/galene/tasks/main.yml b/roles/galene/tasks/main.yml
new file mode 100644
index 00000000..6b33c661
--- /dev/null
+++ b/roles/galene/tasks/main.yml
@@ -0,0 +1,77 @@
+---
+- name: Install golang and git
+  apt:
+    update_cache: true
+    install_recommends: false
+    name:
+      - git
+      - golang
+  register: apt_result
+  retries: 3
+  until: apt_result is succeeded
+
+- name: Create galene account
+  user:
+    name: galene
+    comment: Galène
+    home: ""
+    create_home: false
+
+- name: Create Galène directory
+  file:
+    path: /var/local/galene
+    state: directory
+    owner: galene
+    group: galene
+    mode: u+rw,g+rws,o+r
+
+- name: Clone Galène
+  git:
+    repo: https://github.com/jech/galene.git
+    dest: /var/local/galene
+  register: git_result
+  become_user: galene
+
+- name: Build galene
+  when: git_result.changed
+  shell: "go build -ldflags='-s -w'"
+  args:
+    chdir: /var/local/galene
+  environment:
+    CGO_ENABLED: 0
+  notify: Restart galène
+
+- name: Install systemd unit
+  template:
+    src: systemd/system/galene.service.j2
+    dest: /etc/systemd/system/galene.service
+    owner: root
+    group: root
+    mode: 0644
+  notify: Restart galène
+
+- name: Enable systemd unit
+  systemd:
+    name: galene
+    enabled: yes
+    daemon_reload: yes
+    state: started
+
+- name: Create directory for streaming front page
+  file:
+    path: /var/www/galene-stream-frontend
+    state: directory
+    owner: www-data
+    group: www-data
+    mode: u+rw,g+rws,o+r
+
+- name: Clone stream front
+  git:
+    repo: https://gitlab.adm.crans.org/erdnaxe/galene-stream-frontend.git
+    dest: /var/www/galene-stream-frontend
+
+- name: Indicate role in motd
+  template:
+    src: update-motd.d/05-service.j2
+    dest: /etc/update-motd.d/05-galene
+    mode: 0755
diff --git a/roles/galene/templates/systemd/system/galene.service.j2 b/roles/galene/templates/systemd/system/galene.service.j2
new file mode 100644
index 00000000..8e967e44
--- /dev/null
+++ b/roles/galene/templates/systemd/system/galene.service.j2
@@ -0,0 +1,16 @@
+{{ ansible_header }}
+
+[Unit]
+Description=Galene
+After=network.target
+
+[Service]
+Type=simple
+WorkingDirectory=/var/local/galene
+User=galene
+Group=galene
+ExecStart=/var/local/galene/galene --insecure
+LimitNOFILE=65536
+
+[Install]
+WantedBy=multi-user.target
diff --git a/roles/galene/templates/update-motd.d/05-service.j2 b/roles/galene/templates/update-motd.d/05-service.j2
new file mode 100755
index 00000000..ede51c43
--- /dev/null
+++ b/roles/galene/templates/update-motd.d/05-service.j2
@@ -0,0 +1,3 @@
+#!/usr/bin/tail +14
+{{ ansible_header | comment }}
+> Galène a été déployé sur cette machine. Voir /var/local/galene/.
-- 
GitLab