# 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"