2016-08-23 102 views
0

之前,我想Ansible端到尾端的日誌文件,並等待空閒時間 - 比方說XX秒,其中日誌是空閒的那段時間。Ansible:輪詢空閒時間日誌文件服務器重啓

如果日誌不是XX秒內閒置,請繼續等待,直到我們有空閒時間XX秒。

如果空閒時間,則Ansible將重新啓動服務器。

空閒時間可以通過檢查的最後2個日誌條目,它們之間的時間差來計算。

我怎樣才能用Ansible實現這一目標?

+0

將Ansible模塊拼湊起來以實現這一點是沒有意義的(並且沒有現成的模塊並且可能永遠不會)。您可以用任何語言編寫腳本,並從劇本中調用腳本。 – techraf

回答

2

沒有必要等待兩個日誌條目相距XX秒,而不是等到最後一個日誌條目後的XX秒,因爲如果您已經超過了XX秒,則下一次寫入將符合您的條件。

並在此基礎上,只是這樣做(例如目的XX = 5)

- find: paths="/tmp" patterns="logfile" age="5s" age_stamp="mtime" 
    register: modified 
    until: modified.matched == 1 
    retries: 20 
    delay: 5 

只需確保路徑和模式規範僅匹配您的日誌文件。

+0

該解決方案適用於我們的要求。謝謝你的幫助! –

+0

@ O.Elhelou很高興聽到它,謝謝你的反饋。 –

1

如果你有一個命令來打印在幾秒鐘的時間差,你可以使用:

- shell: /opt/myscripts/log_difference.sh 
    register: result 
    until: result.stdout | int > 60 
    retries: 5 
    delay: 10 

這將執行log_difference.sh直到超過重試次數或標準輸出數大於60