29 lines
1.8 KiB
YAML
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"
|