From 98eaeaa53b9cbe7c23424e5a4f30be6c0ff8dd32 Mon Sep 17 00:00:00 2001
From: Yohann D'ANELLO <ynerant@crans.org>
Date: Mon, 22 Feb 2021 02:40:54 +0100
Subject: [PATCH] [gitlab] Install irker from Debian Sid to add IRC webhooks

Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
---
 group_vars/git.yml                            |  3 ++
 plays/gitlab.yml                              |  3 ++
 roles/irker/handlers/main.yml                 |  5 +++
 roles/irker/tasks/main.yml                    | 34 +++++++++++++++++++
 .../templates/apt/preferences.d/irker-sid.j2  | 12 +++++++
 .../templates/apt/sources.list.d/sid.list.j2  |  3 ++
 6 files changed, 60 insertions(+)
 create mode 100644 roles/irker/handlers/main.yml
 create mode 100644 roles/irker/tasks/main.yml
 create mode 100644 roles/irker/templates/apt/preferences.d/irker-sid.j2
 create mode 100644 roles/irker/templates/apt/sources.list.d/sid.list.j2

diff --git a/group_vars/git.yml b/group_vars/git.yml
index cd1a75ed..c44a9f7f 100644
--- a/group_vars/git.yml
+++ b/group_vars/git.yml
@@ -19,3 +19,6 @@ glob_gitlab:
   smtp:
     address: "{{ query('ldap', 'ip', 'redisdead', 'adm') | first }}"
     port: 25
+
+glob_irker:
+  name: GitlabBot
diff --git a/plays/gitlab.yml b/plays/gitlab.yml
index 66806b7c..b8b10e1d 100755
--- a/plays/gitlab.yml
+++ b/plays/gitlab.yml
@@ -11,9 +11,12 @@
   vars:
     certbot: '{{ loc_certbot | default(glob_certbot | default([])) }}'
     gitlab: '{{ glob_gitlab | default({}) | combine(loc_gitlab | default({}), recursive=True) }}'
+    irker: '{{ glob_irker | default({}) | combine(loc_irker | default({})) }}'
+    mirror: '{{ glob_mirror | default({}) | combine(loc_mirror | default({})) }}'
     nginx: '{{ glob_nginx | default({}) | combine(loc_nginx | default({})) }}'
     reverseproxy: '{{ glob_reverseproxy | default({}) | combine(loc_reverseproxy | default({})) }}'
   roles:
     - certbot
     - gitlab
     - nginx
+    - irker
diff --git a/roles/irker/handlers/main.yml b/roles/irker/handlers/main.yml
new file mode 100644
index 00000000..40d97cb4
--- /dev/null
+++ b/roles/irker/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: Reload irker
+  systemd:
+    name: irkerd
+    state: restarted
diff --git a/roles/irker/tasks/main.yml b/roles/irker/tasks/main.yml
new file mode 100644
index 00000000..5e2b1ffc
--- /dev/null
+++ b/roles/irker/tasks/main.yml
@@ -0,0 +1,34 @@
+---
+- name: Pin irker from bullseye
+  template:
+    src: "apt/{{ item }}.j2"
+    dest: "/etc/apt/{{ item }}"
+  loop:
+    - sources.list.d/sid.list
+    - preferences.d/irker-sid
+  when:
+    - ansible_distribution == "Debian"
+    - ansible_distribution_major_version | int <= 11
+    - ansible_distribution_release != "sid"
+
+
+- name: Install Irker for IRC support
+  apt:
+    update_cache: true
+    install_recommends: false
+    name:
+      - irker
+  register: apt_result
+  retries: 3
+  until: apt_result is succeeded
+
+- name: Setup Irker parameters
+  lineinfile:
+    path: /etc/default/irker
+    regexp: "^LAUNCH_AT_STARTUP="
+    line: 'IRKER_OPTIONS="-n {{ irker.name }} -d warning"'
+    create: true
+    owner: root
+    group: root
+    mode: 0644
+  notify: Reload irker
diff --git a/roles/irker/templates/apt/preferences.d/irker-sid.j2 b/roles/irker/templates/apt/preferences.d/irker-sid.j2
new file mode 100644
index 00000000..0fd1f458
--- /dev/null
+++ b/roles/irker/templates/apt/preferences.d/irker-sid.j2
@@ -0,0 +1,12 @@
+{{ ansible_header | comment }}
+
+
+Package: *
+Pin: release n=sid
+Pin-Priority: 1
+
+
+Package: irker
+Pin: release n=sid
+Pin-Priority: 900
+
diff --git a/roles/irker/templates/apt/sources.list.d/sid.list.j2 b/roles/irker/templates/apt/sources.list.d/sid.list.j2
new file mode 100644
index 00000000..346a18cd
--- /dev/null
+++ b/roles/irker/templates/apt/sources.list.d/sid.list.j2
@@ -0,0 +1,3 @@
+{{ ansible_header | comment }}
+
+deb http://{{ mirror.name }}/debian sid main
-- 
GitLab