--- - name: Ensure download directory is present ansible.builtin.file: path: "/home/debian/restic-{{ restic_version }}" state: directory mode: '0755' - name: Ensure compressed binary is downloaded ansible.builtin.get_url: url: "https://github.com/restic/restic/releases/download/v{{ restic_version }}/restic_{{ restic_version }}_linux_arm64.bz2" dest: "/home/debian/restic-{{ restic_version }}/restic-{{ restic_version }}.bz2" register: res - name: Ensure binary is decompressed ansible.builtin.shell: cmd: "bunzip2 -k /home/debian/restic-{{ restic_version }}/restic-{{ restic_version }}.bz2" when: 'res.changed' - name: Ensure binary is copied to correct location ansible.builtin.copy: src: "/home/debian/restic-{{ restic_version }}/restic-{{ restic_version }}" remote_src: true dest: '/usr/local/bin/restic' owner: 'root' group: 'root' mode: '0755' when: 'res.changed' - name: Ensure backup scripts directory is present ansible.builtin.file: path: '/etc/backups' state: directory mode: '0755' - name: Ensure Restic backups password file is present ansible.builtin.copy: src: 'restic_backups_passwd' dest: '/etc/backups/restic_backups_passwd' owner: root group: root mode: '0600' - name: Ensure backup-all script is present ansible.builtin.template: src: "backup-all.sh.j2" dest: '/etc/backups/backup-all.sh' owner: root group: root mode: '0644' - name: Ensure backup cronjob is enabled ansible.builtin.cron: name: 'Perform nightly backups' minute: '0' hour: '2' job: '/usr/bin/bash /etc/backups/backup-all.sh'