Ansible Shell模块未按预期返回

时间:2018-10-26 15:46:30

标签: shell ansible ps

背景

我正在编写Ansible剧本,以使用Ansible的shell模块检测远程节点上正在运行的进程。

  • 通过Ansible(通过AWX)以root身份运行ps auxpgrep表示该进程运行
  • 通过ssh登录到远程节点时运行运行ps auxpgrep的命令提升为root提示进程正在运行(预期结果)

问题

为什么通过Ansible运行ps auxpgrep与在远程节点中运行这些命令相比,会产生不同的结果?

此外,为什么通过Ansible运行ps aux | grep running_process会每行显示两次,但是ID不同?

我最关心的是在这里了解Ansible / shell的运行情况(尽管如果我能找到检测运行过程的解决方案也很好)。

剧本任务

- name: grep for running_process
  shell: ps aux | grep running_process
  ignore_errors: yes
  become: yes
  check_mode: no
  register: grep_result

- name: pgrep for running_process
  shell: pgrep running_process
  ignore_errors: yes
  become: yes
  check_mode: no
  register: pgrep_result

Playbook Grep结果

"stdout_lines": [
    "root     18225  ... /bin/sh -c ps aux | grep running_process",
    "root     18226  ... /bin/sh -c ps aux | grep running_process",
    "root     18232  ... grep running_process",
    "root     18233  ... grep running_process"
]

Playbook Pgrep结果

"rc": 1, 
"stdout": "", 

SSH结果

[root@host user]# /bin/sh -c "ps aux | grep running_process"
nobody    ... running_process ...
root      ... /bin/sh -c ps aux | grep running_process
root      ... grep running_process

[root@host user]# /bin/sh -c "pgrep running_process"
12345

0 个答案:

没有答案