Ansible: "셸"과 "명령" 모듈의 차이점

Ansible: "셸"과 "명령" 모듈의 차이점

앤서블 위키설명하다:

주어진 명령은 선택된 모든 노드에서 실행됩니다. 이는 쉘에 의해 처리되지 않으므로 $HOME과 같은 변수와 <, >, |및 같은 작업 ;&작동하지 않습니다(이러한 기능이 필요한 경우 쉘 모듈을 사용하십시오).

그러나 Ansible에서는 둘 사이에 차이가 없습니다.

[oracle@temp ansible]$ ansible temp2 -m shell -a "ls -la $HOME"
temp2 | CHANGED | rc=0 >>
total 40
drwx------. 6 oracle dba   4096 May 16 15:31 .
drwxr-xr-x. 3 root   root    20 Mar 18 18:45 ..
drwx------. 3 oracle dba     17 May 16 15:31 .ansible
-rw-------. 1 oracle dba   8100 Apr 17 12:50 .bash_history
-rw-r--r--. 1 oracle dba     18 Aug 24  2018 .bash_logout
-rw-r--r--. 1 oracle dba    257 Mar 19 10:53 .bash_profile
-rw-r--r--. 1 oracle dba    231 Aug 24  2018 .bashrc
drwx------. 3 oracle dba     16 Mar 22 12:19 .cache
drwx------. 4 oracle dba     28 Mar 22 12:19 .config
drwx------. 3 oracle dba     19 Mar 22 12:19 .local
-rw-------. 1 oracle dba  10425 Apr 16 14:50 .psql_history
-rw-------. 1 oracle dba    713 Mar 19 11:15 .viminfo

[oracle@temp ansible]$ ansible temp2 -m command -a "ls -la $HOME"
temp2 | CHANGED | rc=0 >>
total 40
drwx------. 6 oracle dba   4096 May 16 15:31 .
drwxr-xr-x. 3 root   root    20 Mar 18 18:45 ..
drwx------. 3 oracle dba     17 May 16 15:31 .ansible
-rw-------. 1 oracle dba   8100 Apr 17 12:50 .bash_history
-rw-r--r--. 1 oracle dba     18 Aug 24  2018 .bash_logout
-rw-r--r--. 1 oracle dba    257 Mar 19 10:53 .bash_profile
-rw-r--r--. 1 oracle dba    231 Aug 24  2018 .bashrc
drwx------. 3 oracle dba     16 Mar 22 12:19 .cache
drwx------. 4 oracle dba     28 Mar 22 12:19 .config
drwx------. 3 oracle dba     19 Mar 22 12:19 .local
-rw-------. 1 oracle dba  10425 Apr 16 14:50 .psql_history
-rw-------. 1 oracle dba    713 Mar 19 11:15 .viminfo

이유는 무엇입니까?

답변1

매개변수를 큰따옴표로 묶어서 전달하고 있습니다. $HOME로컬 머신의 셸로 확장하면 ansible에서는 이를 볼 수도 없습니다. 대신 작은따옴표를 사용하면 차이점을 확인할 수 있습니다. (원격 시스템에 경로가 존재하지 않는 경우에도 알 수 있습니다.)

답변2

~에서앤서블린트선적 서류 비치쉘 대신 명령규칙.

shell이 규칙은 개별 모듈을 식별하는 것이 아니라 필요하지 않은 모듈의 사용을 식별합니다 . 셸은 명령보다 훨씬 느리므로 셸 기능(예: 환경 변수 확장 또는 파이프를 사용하여 여러 명령을 연결)을 사용해야 하는 특별한 경우가 아니면 피해야 합니다.command

관련 정보