Ansible을 사용하여 명령 실행

Ansible을 사용하여 명령 실행

ansible 명령을 사용하고 싶지만 dpkg -l | grep -i staff오류가 발생합니다.

ansible all -m 'dpkj -l | grep -i stuff' 


ERROR! this task 'dpkj' has extra params, which is only allowed in the following modules: command, win_command, shell, win_shell, script, include, include_vars, include_tasks, include_role, import_tasks, import_role, add_host, group_by, set_fact, raw, meta

그런 다음 이에 대한 스크립트를 만들었습니다.

- hosts: all
  tasks:
  - name: Ansible command
    command: dpkg -l | grep -i staff

다시 오류가 발생합니다.

FAILED! => {"changed": true, "cmd": ["dpkg", "-l", "|", "grep", "-i", "staff"], "delta": "0:00:00.010754", "end": "2019-06-26 18:15:10.373642", "msg": "non-zero return code", "rc": 1, "start": "2019-06-26 18:15:10.362888", "stderr": "dpkg-query: no packages found matching |\ndpkg-query: no packages found matching -i\ndpkg-query: no packages found matching stuff"

ansible을 사용하여 이 명령을 어떻게 실행할 수 있나요?

답변1

간단한 명령으로 파이프를 사용합니다.Ansible: "셸"과 "명령" 모듈의 차이점이 모듈에 대한 Ansible 문서에는 다음이 언급되어 있습니다 command.

명령은 셸을 통해 처리되지 않으므로 $HOME과 같은 변수와 , 및 <>같은 |작업 ;&아무런 영향을 미치지 않습니다.이러한 기능이 필요하면 쉘 모듈을 사용하십시오.

|이 작업 목록에서 "작동하지 않음" 기호를 확인하세요 .

관련 정보