我似乎已经无法在此处找到此查询的答案,并且似乎无法通过谷歌搜索找到任何内容。
我正在尝试使用 ansible 在远程机器上运行临时命令,并且我不断收到“在参数字符串中发现重复参数”失败,当我使用原始模块而不是 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 之后的任何内容。