Ansible和硬件检查

时间:2016-06-25 23:57:23

标签: ansible ansible-playbook

我必须使用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做我想做的事情?

感谢您的回答。

1 个答案:

答案 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
      - ...