From 4bd347afb380f00abf5ca0117e9df611a93d4827 Mon Sep 17 00:00:00 2001
From: Arthur BOUDREAULT <boudreaultarthur@ik.me>
Date: Wed, 17 Nov 2021 17:34:30 +0100
Subject: [PATCH] feat: cron tasks for apps backup

---
 defaults/main.yml |  8 ++++++++
 tasks/backup.yml  | 32 ++++++++++++++++++++++++++++++++
 tasks/main.yml    |  4 ++++
 3 files changed, 44 insertions(+)
 create mode 100644 tasks/backup.yml

diff --git a/defaults/main.yml b/defaults/main.yml
index 725285b..c6479cb 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -63,3 +63,11 @@ ynh_apps: null
   #       owner: ttrss # Only provide if different from app name
   #       group: ttrss # Only provide if different from www-data
 
+# Variables for backup
+# ynh_backup:
+#   directory: "/data/backup"
+#   scheduled: "true"
+#   scheduled_hour: 3
+#   scheduled_minute: "*"
+#   scheduled_weekday: "*"
+#   scheduled_month: "*"
diff --git a/tasks/backup.yml b/tasks/backup.yml
new file mode 100644
index 0000000..a199110
--- /dev/null
+++ b/tasks/backup.yml
@@ -0,0 +1,32 @@
+---
+#-----------------------------------------------------------------------------#
+# ansible-yunohost allows to deploy Yunohost using Ansible                    #
+# Copyright 2021-2021 Lydra https://www.lydra.fr/                             #
+#                                                                             #
+# this program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# this program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the                #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program. If not, see <http://www.gnu.org/licenses/>.        #
+#                                                                             #
+#-----------------------------------------------------------------------------#
+
+- name: Create cron tasks under /etc/cron.d to perform auto-backup of apps
+  ansible.builtin.cron:
+    name: "auto-backup {{ item.label }} to {{ ynh_backup.directory }}/{{ item.link }}"
+    month: "{{ ynh_backup.scheduled_month | default('*') }}"
+    weekday: "{{ ynh_backup.scheduled_weekday | default('*') }}"
+    hour: "{{ ynh_backup.scheduled_hour | default('*') }}"
+    minute: "{{ ynh_backup.scheduled_minute | default('*') }}"
+    user: root
+    job: "yunohost backup create --apps {{ item.link }}
+          -o {{ ynh_backup.directory }}/{{ item.link }}"
+    cron_file: ynh_backup_apps
+  loop: "{{ ynh_apps }}"
diff --git a/tasks/main.yml b/tasks/main.yml
index 0480221..97ff37c 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -72,3 +72,7 @@
 - name: Install Yunohost apps
   ansible.builtin.include_tasks: apps.yml
   when: ynh_apps
+
+- name: Enable Yunohost backup
+  ansible.builtin.include_tasks: backup.yml
+  when: ynh_backup.scheduled == 'true'
-- 
GitLab