2016-06-25 43 views
0

我必須檢查Linux機器上不同的硬件和配置元素,使用ansible,我不確定如何去做(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來做我想做的事情?

謝謝你的回答。

回答

2

您發佈的代碼段存在一些問題。

  • 您的縮進已關閉。 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 
     - ... 
+0

所以它是如何工作的! (是的,你的代碼工作) 對不起縮進,它只是一個失敗的複製/粘貼。我嘗試了assert模塊,這是一種誘人的方式來做我想做的事情,但失敗/當看起來更適應我的想法。 目前,我會繼續我所有我想檢查的事情的測試,但我開始瞭解Ansible如何工作。謝謝 ! – Matthew