A tarefa 'shell' do Ansible falha enquanto o comando pode ser executado diretamente no host

A tarefa 'shell' do Ansible falha enquanto o comando pode ser executado diretamente no host

Tenho uma tarefa em meu manual para eliminar todos os processos de um determinado nome:

- name: stop twd if running
      #shell: ps auxww | grep 'twd' | awk '{print $2}' | xargs kill -9
      shell: pkill pwd
      become: yes
      ignore_errors: yes

Ele retorna código diferente de zero e o modo de depuração não me explica por que falhou, apenas diz:

"invocation": {
        "module_args": {
            "_raw_params": "pkill twd",
            "_uses_shell": true,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "warn": true
        }
    }, 
    "msg": "non-zero return code", ...

Por que falha enquanto o usuário que executa o comando é verdadeiro e quando executo o mesmo comando na máquina remota, funciona. A partir dos documentos, a tarefa 'shell' funciona exatamente da mesma forma que executar o comando através do shell na máquina remota, por que ela falha? Ele pode executar outros comandos, mas não consegue executar os comandos que envio para encerrar o processo.
este é o resultado da execução do comando na máquina remota que retorna o código de saída 0:

root@mos:~# pkill twd
root@mos:~# echo $?
0

Uma pergunta semelhante,aqui, sugere que devemos usar 'shell' em vez de 'command' quando usamos pipe ou quando precisamos acessar uma variável env, também sugere adicionar ignore_error se isso não for uma falha real. Usei shell e a tarefa comentada acima que usa pipe e não funcionou e mesmo depois de usar o comando 'pkill' que não inclui nenhum pipe, ele falha.

informação relacionada