2016-10-04 17 views
1

我似乎無法找到這個查詢的答案已經在這裏,似乎無法找到任何與谷歌搜索。Ansible adhoc命令返回重複參數發現錯誤,當使用原始模塊

我想在遠程盒子上使用ansible運行一個adhoc命令,並且我不斷收到「在參數字符串中找到了一個重複的參數」失敗,這發生在我使用原始模塊但不是shell模塊時。

確切的錯誤信息是:

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" 

我之所以這樣問是因爲我試圖運行一個case語句命令來設置一個變量上沒有安裝Python和我不允許對它們進行配置以任何方式遙控盒。

例如:

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 
" 

這裏的語法可能無法發現的,但希望你的想法,它不能用相同的變量多次設置應付。我知道在上面的代碼中,我可以通過將echo放入case語句來解決問題,但我的代碼實際上比echo更復雜,因此我最終將更多行代碼複製到案例陳述。

有誰知道如何解決這個問題?任何幫助非常感謝,謝謝。

編輯:我在1.7版本,根據下面的答案,這個問題不會影響2.0以後的任何內容。

+0

請提供確切的錯誤信息,因爲這可以在我的設置中正常工作。 –

+0

這是我的愚蠢,我已經添加了上面的確切的錯誤信息。 – user6916397

回答

0

這是一個錯誤。 Ansible is parsing the input string對於一些愚蠢的原因args。試試這個作爲解決方法:

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

此錯誤也僅存在於< = 1.9。 2.0作品。

+0

這是一個恥辱,事實證明我正在運行一個老版本的ansible。解決方法雖然工作,但非常感謝 – user6916397