之前,我想Ansible端到尾端的日誌文件,並等待空閒時間 - 比方說XX秒,其中日誌是空閒的那段時間。Ansible:輪詢空閒時間日誌文件服務器重啓
如果日誌不是XX秒內閒置,請繼續等待,直到我們有空閒時間XX秒。
如果空閒時間,則Ansible將重新啓動服務器。
空閒時間可以通過檢查的最後2個日誌條目,它們之間的時間差來計算。
我怎樣才能用Ansible實現這一目標?
之前,我想Ansible端到尾端的日誌文件,並等待空閒時間 - 比方說XX秒,其中日誌是空閒的那段時間。Ansible:輪詢空閒時間日誌文件服務器重啓
如果日誌不是XX秒內閒置,請繼續等待,直到我們有空閒時間XX秒。
如果空閒時間,則Ansible將重新啓動服務器。
空閒時間可以通過檢查的最後2個日誌條目,它們之間的時間差來計算。
我怎樣才能用Ansible實現這一目標?
沒有必要等待兩個日誌條目相距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
只需確保路徑和模式規範僅匹配您的日誌文件。
該解決方案適用於我們的要求。謝謝你的幫助! –
@ O.Elhelou很高興聽到它,謝謝你的反饋。 –
如果你有一個命令來打印在幾秒鐘的時間差,你可以使用:
- shell: /opt/myscripts/log_difference.sh
register: result
until: result.stdout | int > 60
retries: 5
delay: 10
這將執行log_difference.sh直到超過重試次數或標準輸出數大於60
將Ansible模塊拼湊起來以實現這一點是沒有意義的(並且沒有現成的模塊並且可能永遠不會)。您可以用任何語言編寫腳本,並從劇本中調用腳本。 – techraf