Ansible wiki 他说:
给定的命令将在所有选定的节点上执行。它不会通过shell进行处理,因此像$HOME这样的变量以及像<__、>__、|__、;和&这样的操作将无法工作(如果需要这些特性,可以使用shell模块)。
但是,他们之间并没有什么区别:
[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原因何在?
发布于 2019-05-16 14:25:36
你用双引号传递参数。$HOME是由本地机器上的shell展开的,ansible甚至没有看到它。如果你用单引号代替,你应该能够看到一个不同。(如果远程计算机上不存在路径,您也会注意到。)
https://unix.stackexchange.com/questions/519290
复制相似问题