ここでこのクエリに対する答えを見つけることができなかったようで、グーグルで何も見つけられないようです。
ansible を使用してリモート ボックスでアドホック コマンドを実行しようとしていますが、「引数文字列に重複するパラメーターが見つかりました」というエラーが発生し続けます。これは、シェル モジュールではなく 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 であるにもかかわらず、同じ変数を 2 回設定することに反対しているようです。
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 ステートメントに入れることで問題を回避できることを知っていますが、実際のコードはエコーよりもはるかに複雑であるため、アクションを複製してさらに多くのコード行を作成することになりますケースステートメント。
これを修正する方法を知っている人はいますか?どんな助けでも大歓迎です、ありがとう。
編集:私は ansible バージョン 1.7 を使用しています。以下の回答に従って、この問題は 2.0 以降には影響しません。