it-swarm.com.de

Wie kann ich einen laufenden Prozess mit ansible beenden?

Ich habe ein ansible Playbook, um laufende Prozesse zu beenden, und es funktioniert die meiste Zeit großartig! Von Zeit zu Zeit finden wir jedoch Prozesse, die einfach nicht beendet werden können. "Wait_for" erreicht das Timeout, löst einen Fehler aus und es stoppt der Prozess.

Die aktuelle Problemumgehung besteht darin, manuell in die Box zu gehen, "kill -9" zu verwenden und das Ansible-Playbook erneut auszuführen. Ich habe mich also gefragt, ob es eine Möglichkeit gibt, dieses Szenario von Ansible aus zu handhaben benutze kill -9 von Anfang an, aber ich habe vielleicht eine Möglichkeit, mit dem Timeout umzugehen ?, auch um kill -9 nur dann zu verwenden, wenn der Prozess in 300 Sekunden nicht beendet wurde? aber wie geht das am besten?

Das sind die Aufgaben, die ich derzeit habe:

- 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 }}"

Vielen Dank!

14
Julio Fernandez

Sie können Fehler in wait_for Ignorieren und das Ergebnis registrieren, um das Löschen fehlgeschlagener Elemente zu erzwingen:

- 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 }}"
33
Eric Citaire