アンサーブルウィキ説明する:
与えられたコマンドは、選択されたすべてのノードで実行されます。これはシェルによって処理されないため、$ HOMEなどの変数と<
、、、などの操作は機能しません(これら>
の機能が必要な場合はシェルモジュールを使用してください)。|
;
&
しかし、Ansibleでは、2つの間に違いはありません。
[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