I have to check different hardware and configurations elements on Linux machines using ansible, and I am not sure at all about how to do it (RAM, disk space, DNS, CPU...), I've understood that I can find nearly all I want in the ansible facts, but I do not understand how I can use it.
For example, I have to check if the RAM amount is at least of 4GB and have an alarm if not, so I tried many things, and... nothing works.
Here is an example of what I tried.
- hosts: client
remote_user: user
tasks:
- debug: var=ansible_memory_mb
- debug: msg="total RAM is {{ ansible_memory_mb.real.total }}"
- fail: msg="not enough RAM"t
- when: {{ ansible_memory_mb.real.total }} < 4096
Could you tell me how it works ? and maybe there is a better way to do what I want using Ansible ?
Thank you for your answer.
There are a few things wrong with the snippet you posted.
Your indentation is off. tasks needs to be at the same indentation level as hosts.
The when condition needs to be part of the fail task block, not a separate list item.
In general, you do not need to use {{ ... }} in a when condition, the entire expression will be treated as a Jinja template.
Try this:
- hosts: client
remote_user: user
tasks:
- debug: var=ansible_memory_mb
- debug: msg="total RAM is {{ ansible_memory_mb.real.total }}"
- fail: msg="not enough RAM"
when: ansible_memory_mb.real.total < 4096
You can also use the assert module to check a condition or list of conditions.
- assert:
that:
- ansible_memory_mb.real.total >= 4096
- some other condition
- ...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With