---
- name: "Configure restic and backup schedule"
  hosts: all

  vars_files:
    - vars/vars.yml
    - vars/secrets.yml

  tasks:
    - name: "Copy restic shell script"
      ansible.builtin.template:
        src: "files/backups/restic-shell.sh.j2"
        dest: "{{ bin_prefix }}/restic-shell.sh"
        owner: root
        group: root
        mode: "0700"

    - name: "Copy restic backup script"
      ansible.builtin.template:
        src: "files/backups/restic-backup.sh.j2"
        dest: "{{ bin_prefix }}/restic-backup.sh"
        owner: root
        group: root
        mode: "0700"

    - name: "Create gobackup config directory"
      ansible.builtin.file:
        path: "{{ backup_gobackup_config | dirname }}"
        state: directory
        mode: "0755"

    - name: "Copy gobackup config files"
      ansible.builtin.template:
        src: "files/backups/gobackup.yml.j2"
        dest: "{{ backup_gobackup_config }}"
        owner: root
        group: root
        mode: "0700"

    - name: "Setup paths for backup cron file"
      ansible.builtin.cron:
        cron_file: "ansible_restic_backup"
        user: "root"
        env: true
        name: "PATH"
        job: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

    - name: "Setup mail for backup cron file"
      ansible.builtin.cron:
        cron_file: "ansible_restic_backup"
        user: "root"
        env: true
        name: "MAILTO"
        job: ""

    - name: "Creates a cron file for backups under /etc/cron.d"
      ansible.builtin.cron:
        name: "restic backup"
        minute: "0"
        hour: "1"
        job: "/usr/local/bin/restic-backup.sh 2>&1 | logger -t backup"
        cron_file: "ansible_restic_backup"
        user: "root"