web-dev-qa-db-fra.com

Comment tuer un processus en cours en utilisant ansible?

J'ai un playbook ansible pour tuer les processus en cours d'exécution et fonctionne très bien la plupart du temps !, cependant, de temps en temps, nous trouvons des processus qui ne peuvent tout simplement pas être tués, donc "wait_for" arrive à expiration, lance une erreur et s'arrête le processus.

La solution de contournement actuelle consiste à entrer manuellement dans la boîte, à utiliser "kill -9" et à réexécuter le livre de jeu ansible, donc je me demandais s'il y avait un moyen de gérer ce scénario à partir de ansible lui-même?, Je veux dire, je ne veux pas utiliser kill -9 depuis le début, mais je peux peut-être un moyen de gérer le délai d'expiration?, même d'utiliser kill -9 uniquement si le processus n'a pas été tué en 300 secondes? mais quelle serait la meilleure façon de le faire?

Ce sont les tâches que j'ai actuellement:

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

Merci!

14
Julio Fernandez

Vous pouvez ignorer les erreurs sur wait_for et enregistrez le résultat pour forcer la suppression des éléments ayant échoué:

- 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