Ansible和硬件检查

Mat*_*hew 0 ansible ansible-playbook

我必须使用Ansible检查Linux机器上的不同硬件和配置元素,而且我不确定如何做到(RAM,磁盘空间,DNS,CPU ...),我知道我几乎可以找到我只想了解这些不可思议的事实,但我不知道如何使用它。

例如,我必须检查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
Run Code Online (Sandbox Code Playgroud)

你能告诉我它是如何工作的吗?也许有更好的方法来使用Ansible做我想做的事情?

谢谢您的回答。

aug*_*rar 5

您发布的代码段有些错误。

  • 您的缩进不正确。 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
Run Code Online (Sandbox Code Playgroud)

您也可以使用该assert模块检查条件或条件列表。

- assert:
    that:
      - ansible_memory_mb.real.total >= 4096
      - some other condition
      - ...
Run Code Online (Sandbox Code Playgroud)