1. ホーム
  2. process

[解決済み] ansibleを使用して実行中のプロセスを強制終了するには?

2022-02-10 11:26:20

質問内容

実行中のプロセスを kill する ansible playbook を持っていて、ほとんどの場合うまくいっています!しかし、時々、どうしても kill できないプロセスを見つけると、" wait_for" がタイムアウトになり、エラーをスローしてプロセスを停止してしまいます。

現在の回避策は、手動でボックスに入って "kill -9" を使い、再度 ansible playbook を実行することです。

現在、私が抱えているタスクです。

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

ありがとうございました。

解決方法は?

のエラーを無視することができます。 wait_for を登録し、失敗した項目を強制終了させる。

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