Ansible 和硬件检查

标签 ansible

我必须使用 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/

相关文章:

dictionary - 使用 Ansible 将嵌套字典扁平化为键/值对

python - 将文件中的文本替换为值后跟数字

windows - Ansible - 管理 Windows 2003 和 WinRM 连接超时

python - 在提示时将密码传递给 Python 脚本

ansible - 如何让 .stdout_lines/array 中的每一行匹配一个变量

ansible - 使用命令/shell 模块导致 : ValueError: Key name may not begin with an underscore on multiple runs

php - Vagrant 配置和版本控制

regex - 如何在Ansible YAML文件中的字符串中转义冒号?

python-2.7 - Ansible 列表未排序

tomcat - 如何使用ansible运行Tomcat