2016-08-23 2 views
0

Ich möchte, dass Ansible eine Protokolldatei erstellt und auf Leerlaufzeit wartet - sagen Sie beispielsweise XX Sekunden, wo die Protokolle für diese Zeit inaktiv sind.Ansible: Abrufen einer Protokolldatei für die Leerlaufzeit vor dem Serverneustart

Wenn die Protokolle innerhalb dieser XX Sekunden nicht inaktiv sind, warten Sie weiter, bis wir XX Sekunden Leerlaufzeit haben.

Wenn die Leerlaufzeit verstrichen ist, startet Ansible den Server neu.

Die Leerlaufzeit kann berechnet werden, indem die letzten zwei Protokolleinträge und der Zeitunterschied zwischen ihnen überprüft werden.

Wie kann ich dies mit Ansible erreichen?

+0

Es macht keinen Sinn, ein Patchwork von Ansible-Modulen zu verwenden, um dies zu erreichen (und es gibt keine vorgefertigten und wahrscheinlich wird es nie). Sie können ein Skript in jeder Sprache schreiben und es aus einem Playbook aufrufen. – techraf

Antwort

2

Es ist nicht notwendig, auf zwei Protokolleinträge im Abstand von XX Sekunden zu warten, anstatt nur bis XX Sekunden nach dem letzten Protokolleintrag zu warten. Wenn Sie länger als XX Sekunden gegangen sind, entspricht der nächste Schreibvorgang Ihrer Bedingung.

Und auf dieser Grundlage nur tun dies (zum Beispiel Zwecke XX = 5)

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

Nur die Wege und Muster Spezifikationen stellen Sie sicher, passen nur Ihre Log-Datei.

+0

Diese Lösung funktionierte für unsere Anforderung. Danke für Ihre Hilfe! –

+0

@ O.Elhelou froh, es zu hören, danke für das Feedback. –

1

Wenn Sie einen Befehl haben die Zeitdifferenz in Sekunden zu drucken, können Sie verwenden:

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

Diese log_difference.sh ausgeführt wird, bis Anzahl der Wiederholungen überschritten wird oder eine Zahl in stdout größer als 60

Verwandte Themen