2017-10-01 5 views
3

Ich habe ein lustiges Playbook, um laufende Prozesse zu beenden und funktioniert die meiste Zeit !, aber von Zeit zu Zeit finden wir Prozesse, die nicht einfach so beendet werden können, "wait_for" bekommt das Timeout, wirft einen Fehler und es stoppt den Prozess.Wie kann man einen laufenden Prozess mit Ansible beenden?

Die aktuelle Problemumgehung besteht darin, manuell in das Feld zu gehen, "kill -9" zu verwenden und das Ansible-Playbook erneut auszuführen, also fragte ich mich, ob es irgendeinen Weg gibt, dieses Szenario von ansible selbst zu behandeln ?, ich meine Willst du Kill -9 nicht von Anfang an verwenden, aber vielleicht kann ich mit dem Timeout umgehen? Kann ich kill -9 nur verwenden, wenn der Prozess nicht innerhalb von 300 Sekunden beendet wurde? Aber was wäre der beste Weg?

Dies sind die Aufgaben, die ich derzeit haben:

- name: Get running processes 
    shell: "ps -ef | grep -v grep | grep -w {{ PROCESS }} | awk '{print $2}'" 
    register: running_processes 

- name: Kill running processes 
    shell: "kill {{ item }}" 
    with_items: "{{ running_processes.stdout_lines }}" 

- name: Waiting until all running processes are killed 
    wait_for: 
    path: "/proc/{{ item }}/status" 
    state: absent 
    with_items: "{{ running_processes.stdout_lines }}" 

Dank!

Antwort

6

Sie könnten Fehler auf wait_for ignorieren und registrieren das Ergebnis Kill zwingen Artikel fehlgeschlagen:

- name: Get running processes 
    shell: "ps -ef | grep -v grep | grep -w {{ PROCESS }} | awk '{print $2}'" 
    register: running_processes 

- name: Kill running processes 
    shell: "kill {{ item }}" 
    with_items: "{{ running_processes.stdout_lines }}" 

- wait_for: 
    path: "/proc/{{ item }}/status" 
    state: absent 
    with_items: "{{ running_processes.stdout_lines }}" 
    ignore_errors: yes 
    register: killed_processes 

- name: Force kill stuck processes 
    shell: "kill -9 {{ item }}" 
    with_items: "{{ killed_processes.results | select('failed') | map(attribute='item') | list }}" 
+0

Danke, Eric! –

Verwandte Themen