From 91425f54387b5984e65f56fd7e798174d64341b5 Mon Sep 17 00:00:00 2001 From: Arthur BOUDREAULT <arthur@lydra.fr> Date: Thu, 16 Jun 2022 14:55:58 +0200 Subject: [PATCH] feat: add external backup on borg --- roles/ynh_backup/meta/main.yml | 13 ++++++- roles/ynh_backup/tasks/borg.yml | 65 +++++++++++++++++++++++++++++++++ roles/ynh_backup/tasks/main.yml | 7 ++++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 roles/ynh_backup/tasks/borg.yml diff --git a/roles/ynh_backup/meta/main.yml b/roles/ynh_backup/meta/main.yml index c68ab81..2f1c019 100644 --- a/roles/ynh_backup/meta/main.yml +++ b/roles/ynh_backup/meta/main.yml @@ -15,4 +15,15 @@ galaxy_info: - cloud - web -dependencies: [] +dependencies: + - role: m3nu.ansible_role_borgbackup + vars: + borg_source_directories: "{{ borg_ynh_src_dir }}" + borg_repository: "{{ borg_ynh_remote_repo }}" + borgmatic_config_name: "{{ borgmatic_conf_name }}" + borg_encryption_passphrase: "{{ borg_remote_repo_encryption_passphrase }}" + borg_retention_policy: + keep_daily: "{{ borg_days_to_keep }}" + keep_weekly: "{{ borg_weeks_to_keep }}" + keep_monthly: "{{ borg_months_to_keep }}" + borgmatic_cron_name: "{{ borgmatic_ynh_cron_name }}" diff --git a/roles/ynh_backup/tasks/borg.yml b/roles/ynh_backup/tasks/borg.yml new file mode 100644 index 0000000..a56683d --- /dev/null +++ b/roles/ynh_backup/tasks/borg.yml @@ -0,0 +1,65 @@ +--- +#-----------------------------------------------------------------------------# +# ansible-yunohost allows to deploy Yunohost using Ansible # +# Copyright 2021-present 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: Configure host for Borg Remote repository + block: + - name: deploy ssh public key for BorgBackup + ansible.builtin.copy: + src: "{{ borg_ssh_keys_src }}.pub" + dest: "{{ borg_ssh_keys_dest }}.pub" + owner: "{{ admin_user }}" + group: "{{ admin_user }}" + mode: 0600 + + - name: deploy ssh private key for BorgBackup + ansible.builtin.copy: + src: "{{ borg_ssh_keys_src }}" + dest: "{{ borg_ssh_keys_dest }}" + owner: "{{ admin_user }}" + group: "{{ admin_user }}" + mode: 0600 + + - name: change ssh command in "/etc/borgmatic/{{ borgmatic_config_name }}" + ansible.builtin.lineinfile: + path: "/etc/borgmatic/{{ borgmatic_config_name }}" + regexp: "# ssh_command: ssh -i ~/.ssh/id_ed25519" + line: " ssh_command: ssh -p 7410 -o StrictHostKeychecking=no -i {{ borg_ssh_keys_dest }}" + state: present + + - name: change archive name in "/etc/borgmatic/{{ borgmatic_config_name }}" + ansible.builtin.lineinfile: + path: "/etc/borgmatic/{{ borgmatic_config_name }}" + regexp: "archive_name_format:" + line: " archive_name_format: {{ borg_archive_name_format }}" + state: present + + - name: Create borg command in /usr/local/bin + ansible.builtin.copy: + content: | + #!/bin/bash + . /opt/borgmatic/bin/activate + borg "$@" + dest: /usr/local/bin/borg + owner: root + group: root + mode: "0755" + + - name: Initialize a new Borg remote repository + ansible.builtin.command: "{{ borg_init_command }}" diff --git a/roles/ynh_backup/tasks/main.yml b/roles/ynh_backup/tasks/main.yml index 3b41dc2..5486d4e 100644 --- a/roles/ynh_backup/tasks/main.yml +++ b/roles/ynh_backup/tasks/main.yml @@ -23,3 +23,10 @@ when: ynh_backup.scheduled tags: - backup + +- name: Use Borg Backup with YunoHost + ansible.builtin.include_tasks: borg.yml + when: ynh_backup.scheduled + tags: + - backup + - borg -- GitLab