Модуль оболочки Ansible не возвращается должным образом - PullRequest
0 голосов
/ 26 октября 2018

Фон

Я пишу сборник пьес Ansible для обнаружения запущенного процесса на удаленном узле с помощью модуля оболочки Ansible.

  • Запуск ps aux и pgrep от имени пользователя root через Ansible (через AWX) предполагает, что процесс не работает
  • Выполнение ps aux и pgrep команд с повышенными правами root при входе в систему на удаленном узле через ssh предполагает, что процесс выполняется (ожидаемый результат)

Вопрос

Почему выполнение ps aux и pgrep через Ansible дает результаты, отличные от запуска этих команд во время sshed на удаленном узле?

Кроме того, почему при запуске ps aux | grep running_process через Ansible каждая строка отображается дважды, но с другим идентификатором?

Меня больше всего интересует понимание того, что здесь происходит с Ansible / shell (хотя, если я смогу найти решение для обнаружения запущенного процесса, это тоже здорово).

Задачи Playbook

- 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 Result

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