在这里,我似乎找不到这个查询的答案,也似乎找不到谷歌搜索的任何内容。
我正在尝试使用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要复杂得多,所以我通过将操作复制到case语句中,最终得到了更多的代码行。
有人知道怎么解决这个问题吗?任何帮助都是非常感谢的,谢谢。
编辑:我在AnbleVersion1.7上,根据下面的答案,这个问题不会影响2.0以外的任何事情。
发布于 2016-10-10 15:55:21
这是个窃听器。因为一些愚蠢的原因,Ansible是解析输入字符串。用于args。试着把它作为一项工作来做:
ansible hosts -i hosts -m raw -a '/bin/bash -c "variable=1; echo \$variable; variable=2; echo \$variable;"' -vvv此bug也仅存在于<=1.9中。2.0起作用。
https://stackoverflow.com/questions/39849073
复制相似问题