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과 같은 변수와 , 및
<
와>
같은|
작업;
은&
아무런 영향을 미치지 않습니다.이러한 기능이 필요하면 쉘 모듈을 사용하십시오.
|
이 작업 목록에서 "작동하지 않음" 기호를 확인하세요 .