ansible/tasks/check-disk-free.yml

29 lines
1.8 KiB
YAML

# vim:ts=2:sw=2:et:filetype=ansible
---
- name: test for available disk space
assert:
quiet: true
that:
- not (item.mount == '/' and ( item.size_available < item.size_total - ( item.size_total|float * ((100 - (disk_free_percentage|default(15)))/100) ) ) )
- not (item.mount == '/var' and ( item.size_available < item.size_total - ( item.size_total|float * ((100 - (disk_free_percentage|default(15)))/100) ) ) )
- not (item.mount == '/boot' and ( item.size_available < item.size_total - ( item.size_total|float * ((100 - (disk_free_percentage|default(15)))/100) ) ) )
- not (item.mount == '/boot/efi' and ( item.size_available < item.size_total - ( item.size_total|float * ((100 - (disk_free_percentage|default(15)))/100) ) ) )
success_msg: '{{ item.mount }} available space {{ item.size_available | default(0) | human_readable }} over {{ disk_free_percentage | default(15) }}% '
fail_msg: '{{ item.mount }} available space {{ item.size_available | default(0) | human_readable }} under {{ disk_free_percentage | default(15) }}%. Required: {{ (item.size_total - ( item.size_total|float * ((100 - (disk_free_percentage|default(15)))/100) )) | human_readable }}'
loop: '{{ ansible_mounts }}'
loop_control:
label: '{{ item.mount }}: Available {{ item.size_available | default(0) | human_readable }}, Total {{ item.size_total | default(0) | human_readable }}. Required: {{ (item.size_total - ( item.size_total|float * ((100 - (disk_free_percentage|default(15)))/100) )) | human_readable }} '
ignore_errors: true
register: disk_free
- name: Not enough free disk space
fail:
msg: |
Not enough free space on system:
{% for failed_space in (disk_free.results | selectattr('failed')) %}
{{ failed_space.msg }}
{% endfor %}
Try cleaning up space by removing files / packages
when: "disk_free is failed"