Comment tuer un processus en cours d'exécution à l'aide de ansible?
J'ai un ansible playbook 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é, "wait_for" obtient le délai d'attente, déclenche une erreur et arrête le processus.
La solution actuelle consiste à aller manuellement dans la boîte, utiliser "kill -9" et exécutez l'ansible playbook de nouveau, donc je me demandais si il n'y a aucun moyen de gérer ce scénario à partir d'ansible lui-même?, Je veux dire, je ne veux pas utiliser kill -9 depuis le début, mais j'ai peut-être une façon de gérer le délai d'attente?, même à utiliser kill -9 seulement si le processus n'a pas été tué dans 300 secondes? mais quelle serait la meilleure façon de le faire?
Telles 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!
OriginalL'auteur Julio Fernandez | 2017-10-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ignorer les erreurs sur
wait_for
et inscrivez le résultat à force de tuer des éléments ayant échouées:Puis-je l'utiliser dans une tourbière de la poste? (avec un lien de retour pour cette réponse) @Eric
Btw, ce attendra {{timeout}} secondes par processus, donc 5 processus entraînera 5*{{timeout}}. Je me demande si cela peut être amélioré par async..
OriginalL'auteur Eric Citaire