Ansible git move
[csit.git] / fdio.infra.ansible / roles / cleanup / tasks / kill_process.yaml
diff --git a/fdio.infra.ansible/roles/cleanup/tasks/kill_process.yaml b/fdio.infra.ansible/roles/cleanup/tasks/kill_process.yaml
new file mode 100644 (file)
index 0000000..c7cee37
--- /dev/null
@@ -0,0 +1,37 @@
+---
+# file: roles/cleanup/tasks/kill_process.yaml
+
+- name: Kill Process - {{ process }}
+  block:
+  - name: Get PID Of {{ process }}
+    shell: "ps -ef | grep -v grep | grep -w {{ process }} | awk '{print $2}'"
+    when:
+      - process is defined and process != ""
+    register: running_processes
+    tags:
+      - kill-process
+
+  - name: Safe Kill {{ process }}
+    shell: "kill {{ item }}"
+    with_items: "{{ running_processes.stdout_lines }}"
+    tags:
+      - kill-process
+
+  - wait_for:
+      path: "/proc/{{ item }}/status"
+      state: "absent"
+    with_items: "{{ running_processes.stdout_lines }}"
+    ignore_errors: yes
+    register: killed_processes
+    tags:
+      - kill-process
+
+  - name: Kill Process - Force Kill {{ process }}
+    shell: "kill -9 {{ item }}"
+    with_items: "{{ killed_processes.results | select('failed') | map(attribute='item') | list }}"
+    tags:
+      - kill-process
+
+  rescue:
+  - fail:
+      msg: "Kill process {{ process }} failed!"