我必须使用 ansible 检查 Linux 机器上的不同硬件和配置元素,我完全不确定该怎么做(RAM、磁盘空间、DNS、CPU...),我明白我几乎可以在 ansible facts 中找到我想要的一切,但我不明白如何使用它。
例如,我必须检查 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 做我想做的事?
感谢您的回答。
最佳答案
您发布的代码段有一些问题。
您的缩进已关闭。
tasks
需要与hosts
处于同一缩进级别。when
条件需要成为fail
任务 block 的一部分,而不是单独的列表项。一般来说,您不需要在
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
- ...
关于Ansible 和硬件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38033996/