我必须使用ansible在Linux机器上检查不同的硬件和配置元素,我不确定如何做(RAM,磁盘空间,DNS,CPU ......),我已经理解了我可以在ansible事实中找到几乎所有我想要的东西,但我不明白我是如何使用它的。
例如,我必须检查RAM量是否至少为4GB并且如果没有则报警,所以我尝试了很多东西,并且......没有任何效果。
这是我尝试过的一个例子。
- 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
你能告诉我它是如何运作的吗?也许有更好的方法来使用Ansible做我想做的事情?
感谢您的回答。
答案 0 :(得分:3)
您发布的代码段存在一些问题。
您的缩进已关闭。 tasks
需要与hosts
处于同一缩进级别。
when
条件必须是fail
任务块的一部分,而不是单独的列表项。
通常,您不需要在{{ ... }}
条件下使用when
,整个表达式将被视为Jinja模板。
试试这个:
- 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
您还可以使用assert
module检查条件或条件列表。
- assert:
that:
- ansible_memory_mb.real.total >= 4096
- some other condition
- ...