2016-10-04 2 views
1

私はこのクエリの回答をすでに見つけられていないようで、グーグルで何も見つからないようです。生のモジュールを使用すると重複したパラメータを返す可能性のあるadhocコマンドが見つかりました

私は、リモートマシン上でアドホックコマンドを実行しようとしていますが、「引数文字列に重複パラメータが見つかりました」というエラーが発生しています。これは、シェルモジュールではなくrawモジュールを使用した場合に発生します。ここでの例により、

hostname1 | FAILED => a duplicate parameter was found in the argument string (variable) 
hostname2 | FAILED => a duplicate parameter was found in the argument string (variable) 

が動作しないコマンドであり、二度同じ変数を設定することに反対しているようだ、これは有効なbashのであるという事実にもかかわらず:

正確なエラーメッセージは以下の通りです:

ansible group -i hosts-file -m raw -k -s -a "variable=1 ; echo \$variable; variable=2; echo \$variable" 

私はPythonがインストールされていないと私はどのような方法でそれらを設定することは許されないのですリモートボックスに変数を設定するためのcase文でコマンドを実行しようとしていますので、私が尋ねる理由があります。

例では:

ansible group -i hosts-file -m raw -k -s -a " 
for file in \$(find . -name \"test*\") 
do 
case \$file in 
    test1) variable=test1 ;; 
    test2) variable=test2 ;; 
    test3) variable=test3 ;; 
esac 
echo \$variable 
done 
" 

ここ構文は、上のスポットされないかもしれないが、うまくいけばあなたのアイデアを得る、それは同じ変数を複数回設定に対処することはできません。上記のコードでは、エコーをcaseステートメントに入れて問題を回避することができますが、現実のコードはエコーよりもはるかに複雑ですので、コードをもっと多く作成することになります。 case文。

誰でもこれを解決する方法を知っていますか?どんな助けでも大変感謝しています。

編集:私は以下の回答のように、バージョン1.7になっています。この問題は、2.0を超えるものには影響しません。

+0

セットアップ時に正常に動作するため、正確なエラーメッセージを入力してください。 –

+0

それは私の愚かだった、私は上記の正確なエラーメッセージを追加しました。 – user6916397

答えて

0

これはバグです。いくつかの愚かな理由のためにargsのためのAnsible is parsing the input string。回避策として、これを試してみてください:

ansible hosts -i hosts -m raw -a '/bin/bash -c "variable=1; echo \$variable; variable=2; echo \$variable;"' -vvv 

このバグはまた< = 1.9にのみ存在します。 2.0作品。

+0

それは残念ですが、私は古いバージョンのものを実行しています。まわりの仕事は大丈夫ですが、これは大変ありがとうございます – user6916397

関連する問題