Across a number of different flavors of Linux as well as AIX, I need to clean up our splunkforwarder space. I’ve tried numerous different approaches and am running into errors. This should be rather simple, but it is proving not to be. Below is my latest iteration and some of the relevant errors.
My next approach will to be straight up df -h (df -g for aix) with some awk stuff…also checking if the mount even exists (it doesn’t necessarily on every system). But, I think this should be simpler to do with normal Ansible modules.
Any ideas on the obvious bits I’m missing?
Relevant playbook portion:
`
tasks:
- name: Test for 20% disk space available
assert:
that:
- not {{ item.mount == ‘/opt/splunkforwarder’ and ( item.size_available > (item.size_total|float * 0.6) ) }}
with_items: ‘{{ ansible_mounts }}’
ignore_errors: yes
register: disk_free
-
name: Test for 20% disk space available on {{ mountname }}
assert:
that: mount.size_available > mount.size_total|float * 0.2
msg: Disk space has reached the 80% threshold
register: disk_free -
name: For full systems, run splunk clean
command: “/opt/splunkforwarder/bin/splunk clean all -f”
when: disk_free|failed
vars:
mountname: ‘/opt/splunkforwarder’
mount: “{{ ansible_mounts | selectattr(‘mount’,‘equalto’, mountname) | first }}”
`
Errors:
`
FAILED! => {“msg”: “The conditional check ‘{ mount.size_available > mount.size_total|float * 0.2 }’ failed. The error was: template error while templating string: expected token ‘:’, got ‘}’. String: {% if { mount.size_available > mount.size_total|float * 0.2 } %} True {% else %} False {% endif %}\n\nThe error appears to have been in ‘/app/ansible-playbooks/splunk-clean.yml’: line 18, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: For full systems, run splunk clean\n ^ here\n”}
`
FAILED! => {"msg": "The conditional check 'mount.size_available > mount.size_total|float * 0.2' failed. The error was: error while evaluating conditional (mount.size_available > mount.size_total|float * 0.2): {{ ansible_mounts | selectattr('mount','equalto', mountname) | first }}: No first item, sequence was empty."}