Files
Ansible-roles/common/tasks/disk_maintenance.yml
T

66 lines
2.1 KiB
YAML

- name: Pin the fstrim timer
when: disk_maintenance.fstrim_on_calendar | default(none) is not none
block:
- name: Create the fstrim timer drop-in directory
file:
path: /etc/systemd/system/fstrim.timer.d
state: directory
- name: Set the fstrim timer schedule
copy:
dest: /etc/systemd/system/fstrim.timer.d/schedule.conf
content: |
[Timer]
OnCalendar=
OnCalendar={{ disk_maintenance.fstrim_on_calendar }}
RandomizedDelaySec=0
# A catch-up run after a boot or a timezone change would land at any time.
Persistent=false
register: fstrim_timer
- name: Restart the fstrim timer
when: fstrim_timer.changed
systemd:
name: fstrim.timer
daemon_reload: yes
state: restarted
- name: Create the fstrim service drop-in directory
when: disk_maintenance.fstrim_mountpoints | default(none) is not none
file:
path: /etc/systemd/system/fstrim.service.d
state: directory
- name: Set the fstrim mountpoints
when: disk_maintenance.fstrim_mountpoints | default(none) is not none
copy:
dest: /etc/systemd/system/fstrim.service.d/mountpoints.conf
content: |
[Service]
ExecStart=
{% for m in disk_maintenance.fstrim_mountpoints %}
ExecStart=/sbin/fstrim --verbose --quiet-unsupported {{ m }}
{% endfor %}
register: fstrim_mountpoints
- name: Trim every fstab filesystem
when: disk_maintenance.fstrim_mountpoints | default(none) is none
file:
path: /etc/systemd/system/fstrim.service.d/mountpoints.conf
state: absent
register: fstrim_mountpoints_removed
- name: Reload systemd for the fstrim mountpoints
when: fstrim_mountpoints.changed or fstrim_mountpoints_removed.changed
systemd:
daemon_reload: yes
- name: Schedule the monthly ZFS trim and scrub
when: disk_maintenance.zfs_cron_time | default(none) is not none
lineinfile:
path: /etc/cron.d/zfsutils-linux
regexp: '^\S+ \S+ (\S+ \* \* root .*/usr/lib/zfs-linux/{{ item }};.*)$'
line: '{{ disk_maintenance.zfs_cron_time }} \1'
backrefs: yes
loop: [trim, scrub]