我似乎无法在这里找到这个查询的答案,而且似乎无法通过Google搜索找到任何内容。
我正在尝试使用ansible在远程盒子上运行adhoc命令,并且我继续得到#34;在参数字符串中找到了重复的参数"失败,当我使用原始模块而不是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更复杂,所以我最终通过将动作复制到了案例陈述。
有谁知道如何解决这个问题?非常感谢任何帮助,谢谢。
编辑:我正在使用ansible 1.7版,根据下面的答案,此问题不会影响2.0以外的任何内容。答案 0 :(得分: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作品。