如何始终为任务返回“已更改”或“确定”

时间:2019-05-01 21:36:37

标签: ansible

我正在运行一本剧本来杀死进程。当没有要杀死的进程时,“立即杀死”任务不会返回任何内容。如何强制它返回“已更改”或“确定”?

我已经尝试设置'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

1 个答案:

答案 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中是否有项目,这将始终报告一次“确定”。