我正在运行一本剧本来杀死进程。当没有要杀死的进程时,“立即杀死”任务不会返回任何内容。如何强制它返回“已更改”或“确定”?
我已经尝试设置'changed_when:True',但是没有用。
- hosts: WORK
gather_facts: no
pre_tasks:
- setup:
gather_subset: min
tasks:
- name: Get running processes @weight 1
shell:
ps -fu `whoami` |grep -v $$ |grep -v PID |grep -v sshd |grep -v ansible |grep -v $$ |awk '{print $2}'
register:
running_processes
- name: Now killing
command:
kill -9 {{ item }}
with_items:
"{{ running_processes.stdout_lines }}"
PLAY [WORK] ******************************************************************************************************************************************************************
TASK [setup] *****************************************************************************************************************************************************************
ok: [tstqat36_qatwrk90]
TASK [Get running processes @weight 1] ***************************************************************************************************************************************
changed: [tstqat36_qatwrk90]
TASK [Now killing] ***********************************************************************************************************************************************************
PLAY RECAP *******************************************************************************************************************************************************************
tstqat36_qatwrk90 : ok=2 changed=1 unreachable=0 failed=0
答案 0 :(得分:0)
我的意思是,您可以这样做,但我认为这不是一个好主意:
- name: Now killing
shell: |
[ "{{ item }}" != __flag__ ] && kill -9 "{{ item }}"
register: result
failed_when: result.rc != 0 and item != "__flag__"
changed_when: result.rc == 0 and item != "__flag__"
with_items:
- __flag__
- "{{ running_processes.stdout_lines }}"
无论running_processes.stdout_lines
中是否有项目,这将始终报告一次“确定”。