From 5bd2f0ddaab90262e89a2bbbc3fba93f497ff7d5 Mon Sep 17 00:00:00 2001
From: Thomas Schneider <thomas@fsmpi.rwth-aachen.de>
Date: Sat, 17 Sep 2022 18:38:11 +0200
Subject: [PATCH] mysql: Add options to enable binlog

https://mariadb.com/kb/en/binary-log/
---
 mysql/defaults/main.yml       |  3 +++
 mysql/handlers/main.yml       | 10 ++++++++++
 mysql/tasks/main.yml          | 19 +++++++++++++++++++
 mysql/templates/override.conf |  2 ++
 4 files changed, 34 insertions(+)
 create mode 100644 mysql/handlers/main.yml
 create mode 100644 mysql/templates/override.conf

diff --git a/mysql/defaults/main.yml b/mysql/defaults/main.yml
index 38ce525..996a3c5 100644
--- a/mysql/defaults/main.yml
+++ b/mysql/defaults/main.yml
@@ -8,3 +8,6 @@ mysql_backup_user: "backup"
 mysql_backup_password: "{{ lookup('passwordstore', 'db/{{ ansible_hostname }}-mysql-backup create=true length=20') }}"
 
 mysql_rsnapshot: false
+# It is the admin’s responsibility to further configure binlogs, especially
+# purging them if required.
+mysql_enable_binlog: false
diff --git a/mysql/handlers/main.yml b/mysql/handlers/main.yml
new file mode 100644
index 0000000..1d24e32
--- /dev/null
+++ b/mysql/handlers/main.yml
@@ -0,0 +1,10 @@
+---
+
+- name: Reload systemd
+  systemd:
+    daemon_reload: true
+
+- name: Restart mariadb.service
+  systemd:
+    name: mariadb.service
+    state: restarted
diff --git a/mysql/tasks/main.yml b/mysql/tasks/main.yml
index 999f564..fa4ae7c 100644
--- a/mysql/tasks/main.yml
+++ b/mysql/tasks/main.yml
@@ -62,3 +62,22 @@
       file:
         path: /etc/cron.d/mysql-snapshot
         state: absent
+
+- name: Create mariadb.service override directory
+  file:
+    path: /etc/systemd/system/mariadb.service.d
+    state: directory
+    owner: root
+    group: root
+    mode: '0755'
+
+- name: Configure binlog
+  template:
+    src: override.conf
+    dest: /etc/systemd/system/mariadb.service.d/override.conf
+    owner: root
+    group: root
+    mode: '0644'
+  notify:
+    - Reload systemd
+    - Restart mariadb.service
diff --git a/mysql/templates/override.conf b/mysql/templates/override.conf
new file mode 100644
index 0000000..8db12af
--- /dev/null
+++ b/mysql/templates/override.conf
@@ -0,0 +1,2 @@
+[Service]
+Environment=MYSQLD_OPTS={{ '--log-bin' if mysql_enable_binlog }}
-- 
GitLab