reworked timer install logic

This commit is contained in:
Frank Dornheim 2023-03-08 15:20:04 +01:00
parent 7414f85e39
commit ea619be53f
2 changed files with 161 additions and 0 deletions

View File

@ -0,0 +1,71 @@
---
- name: Add cron-job for borgmatic (large repo, create and check separate)
when:
- install_backup is not defined or install_backup
- borgmatic_timer is defined and borgmatic_timer == "cron"
- borgmatic_large_repo
tags:
- install_backup
block:
# I don't like to re-do the installation of packages here, but cron
# should not be one of the automatically installed packages since there
# is systemd-timer as an alternative.
- name: Install general dependencies (cron)
ansible.builtin.package:
name: "{{ borg_cron_package }}"
state: present
- name: Add cron job for regular create and prune
cron:
name: "{{ borgmatic_timer_cron_name }}"
hour: "{{ borgmatic_timer_hour }}"
minute: "{{ borgmatic_timer_minute }}"
user: "{{ borgbackup_user }}"
cron_file: "{{ borgmatic_timer_cron_name }}"
job: "/usr/local/bin/borgmatic -C -p -c /etc/borgmatic/{{ borgmatic_config_name }}"
- name: Add cron job for infrequent checks
cron:
name: "{{ borgmatic_timer_cron_name }}-check"
day: "{{ borgmatic_timer_checks_day }}"
hour: "{{ borgmatic_timer_checks_hour }}"
minute: "{{ borgmatic_timer_checks_minute }}"
user: "{{ borgbackup_user }}"
cron_file: "{{ borgmatic_timer_cron_name }}"
job: "/usr/local/bin/borgmatic -k -c /etc/borgmatic/{{ borgmatic_config_name }}"
- name: Add cron-job for borgmatic (normal-sized repo)
when:
- install_backup is not defined or install_backup
- borgmatic_timer is defined and borgmatic_timer == "cron"
- not borgmatic_large_repo
tags:
- install_backup
block:
- name: Add cron job for create, check and prune
cron:
name: "{{ borgmatic_timer_cron_name }}"
hour: "{{ borgmatic_timer_hour }}"
minute: "{{ borgmatic_timer_minute }}"
user: "{{ borgbackup_user }}"
cron_file: "{{ borgmatic_timer_cron_name }}"
job: "/usr/local/bin/borgmatic -c /etc/borgmatic/{{ borgmatic_config_name }}"
- name: Ensure separate check cron job is absent
cron:
name: "{{ borgmatic_timer_cron_name }}-check"
state: absent
- name: Set PATH for borgmatic cron job.
when:
- install_backup is not defined or install_backup
- borgmatic_timer is defined and borgmatic_timer == "cron"
tags:
- install_backup
cron:
user: "{{ borgbackup_user }}"
cron_file: "{{ borgmatic_timer_cron_name }}"
name: PATH
env: yes
value: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
...

View File

@ -0,0 +1,90 @@
---
- name: Create borgbackup timer
when:
- install_backup is not defined or install_backup
- borgmatic_timer is defined and borgmatic_timer == "systemd"
tags:
- install_backup
block:
- name: Add systemd.timer for borgmatic (large repo, create and check separate)
when: borgmatic_large_repo
block:
- name: Copy systemd files
ansible.builtin.template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: root
group: root
backup: true
mode: "{{ item.mode }}"
with_items:
- { src: "backup_large_repo_check.timer.j2", dest: "/usr/lib/systemd/system/backup_large_repo_check.timer", mode: "0644" }
- { src: "backup_large_repo_check.service.j2", dest: "/usr/lib/systemd/system/backup_large_repo_check.service", mode: "0644" }
- { src: "backup_large_repo.timer.j2", dest: "/usr/lib/systemd/system/backup_large_repo.timer", mode: "0644" }
- { src: "backup_large_repo.service.j2", dest: "/usr/lib/systemd/system/backup_large_repo.service", mode: "0644" }
- name: Populate service facts (large repo, create and check separate)
ansible.builtin.service_facts:
- name: Restart borgmatic services (large repo, create and check separate)
ansible.builtin.systemd:
name: "{{ item }}"
state: restarted
enabled: true
masked: false
daemon_reload: true
when: "item in services"
with_items:
- "backup_large_repo_check.service"
- "backup_large_repo.service"
# bug: Need own section without masked else the timer are skipped
- name: Restart borgmatic timers (large repo, create and check separate)
ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: true
daemon_reload: true
with_items:
- "backup_large_repo_check.timer"
- "backup_large_repo.timer"
- name: Add systemd.timer for borgmatic (normal-sized repo)
when: not borgmatic_large_repo
block:
- name: Copy systemd files (normal-sized repo)
ansible.builtin.template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: root
group: root
backup: true
mode: "{{ item.mode }}"
with_items:
- { src: "backup_normal_repo.timer.j2", dest: "/usr/lib/systemd/system/backup_normal_repo.timer", mode: "0644" }
- { src: "backup_normal_repo.service.j2", dest: "/usr/lib/systemd/system/backup_normal_repo.service", mode: "0644" }
- name: Populate service facts
ansible.builtin.service_facts:
- name: Restart borgmatic services (normal-sized repo)
ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: true
masked: false
daemon_reload: true
when: "item in services"
with_items:
- backup_normal_repo.service
# bug: Need own section without masked else the timer ar skipped
- name: Restart borgmatic timers (normal-sized repo)
ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: true
daemon_reload: true
with_items:
- "backup_normal_repo.timer"
...