homelab/roles/restic/tasks/main.yml

57 lines
1.6 KiB
YAML

---
- 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'