2016-10-04 10 views
1

Я не мог найти ответ на этот запрос здесь уже и не могу найти ничего с поисковой системой.Ansible adhoc command, возвращающая ошибку с повторяющимся параметром при использовании необработанного модуля

Я пытаюсь запустить команду adhoc в удаленном ящике с помощью 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) 

К примеру вот это команда, которая не работает, то, кажется, возражают против установки ту же переменную дважды, несмотря на то, что справедливо Баш:

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

Я спрашиваю потому, что я пытаюсь выполнить команду с сазом установить переменный на удаленных ящиках, не установлена ​​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 
" 

Синтаксис здесь не может быть пятна на, но, надеюсь, вы получите эту идею, он не может справиться с установкой те же переменные нескольких раз. Я знаю, что в приведенном выше коде я мог бы решить проблему, поставив эхо в оператор case, но мой код на самом деле намного сложнее, чем эхо, поэтому я получаю гораздо больше строк кода, дублируя действие в дело.

Кто-нибудь знает, как это исправить? Любая помощь очень ценится, спасибо.

EDIT: Я на доступной версии 1.7, как ответ ниже, эта проблема не затрагивает ничего выше 2.0.

+0

Укажите, пожалуйста, точное сообщение об ошибке, поскольку это нормально работает в моей настройке. –

+0

Это было глупо со мной, я добавил сообщение об ошибке выше. – user6916397

ответ

0

Это ошибка. 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