2016-09-30 5 views
0

私はAnsibleを経由して、スクリプトを使用してpacaurをインストールしようとしていませんpod2man`:Ansibleシェルコマンドは `

curl -s https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh | bash 

をansibleコマンド

ansible 192.168.1.2 -m shell -a "curl -s https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh | bash" 

ではしかし、私はpacmanが欠落についてpod2manを訴えてもらいます。それは、安全なコマンドのPATHに問題があるようです。

マシン上でsshを使って直接コマンドを実行すると正しく動作します。 ansible -m all shell -a 'echo $PATH'

localhost | SUCCESS | rc=0 >> 
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl 

192.168.1.2| SUCCESS | rc=0 >> 
/usr/bin:/bin:/usr/sbin:/sbin 
+0

アドホックな方法で処理する必要がありますか(その場合は、sshを使用して手動でインストールすることが最速の方法です)、またはプレイブックを作成しても構いませんか? ['command'](https://docs.ansible.com/ansible/command_module.html)または[' shell'](https://docs.ansible.com/ansible/shell_module.html#shell)を使って試したことがありますか? )代わりに? 'PATH'を最初にエコーするスクリプトを実行するのはどうですか? –

+0

より可能性が高いsudoのPATH。 pacaur_install.shはsudoを通してpacmanを呼び出します。 pod2manはsudoのPATHにはないと思われます。 sudoの呼び出しでPATHを設定するようにインストールスクリプトを調整するか、sudoersでPATHを調整する必要があります。 – sborsky

+0

@ XiongChiamiovなぜ私は不可能なのかという理由は、実際には複数のマシンにインストールする必要があるからです:)。私はしかし、 'PATH'をエコーするスクリプトの結果を投稿しました。 @sborskyそれが理由だと思われます。 [this](http://serverfault.com/questions/734560/ansible-become-user-not-picking-up-path-correctly)質問が関連しているようです。通常のsshでは正しい 'PATH'が得られます。 – SolidSnake

答えて

0

コメントで報告されているように、問題は、ユーザーの切り替え時にsudoが消化するPATH(詳細はthis ServerFault questionを参照)。

私が提案しているホストにローカルPATHをエクスポートするためのアドホックコマンドは少しハックようだが、それは動作します(それが一緒に神社の変数注射でansibleコマンドの--extra-varsオプションを使用しています)

ansible all -m shell -a "export PATH={{path}}; curl -s https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh | bash" -e path=$PATH 

あなたは可能性があり{{ lookup('env', 'PATH') }}を使用してPATHを転送してください。

1

script modulefree-formパラメータはオプションの引数が続くローカルスクリプトファイルに

パスを期待:


ここでの出力です。

したがってansible 192.168.1.2 -m script -a "https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh"は機能しません。これは、あなたのAnsibleコントロールホストにスクリプトをダウンロードし、フリーフォームパラメータをスクリプトのローカルパスに設定する場合に有効です。

+0

あなたは正しいです。私は間違った無理なコマンドを貼り付けた。今私は質問の本文を編集しました。申し訳ありません。ありがとうございます。 – SolidSnake

+0

スクリプトが実行可能であることを確認しましたか? –

+0

また、 'script'は正しいモジュールです。 'shell'モジュールはより適切に機能します。 –