Фон
Я пишу сборник пьес 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