首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回使用原始模块时发现的错误的重复参数的不可选adhoc命令

返回使用原始模块时发现的错误的重复参数的不可选adhoc命令
EN

Stack Overflow用户
提问于 2016-10-04 09:43:56
回答 1查看 284关注 0票数 1

在这里,我似乎找不到这个查询的答案,也似乎找不到谷歌搜索的任何内容。

我正在尝试使用ansible在远程框上运行一个adhoc命令,我一直得到“在参数字符串中找到了一个重复的参数”失败,当我使用原始模块而不是shell模块时就会发生这种情况。

准确的错误消息如下:

代码语言:javascript
复制
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:

代码语言:javascript
复制
ansible group -i hosts-file -m raw -k -s -a "variable=1 ; echo \$variable; variable=2; echo \$variable"

我之所以问这个问题,是因为我试图运行一个带有case语句的命令,以便在没有安装python的远程框上设置一个变量,并且不允许以任何方式配置它们。

举个例子:

代码语言:javascript
复制
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以外的任何事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 15:55:21

这是个窃听器。因为一些愚蠢的原因,Ansible是解析输入字符串。用于args。试着把它作为一项工作来做:

代码语言:javascript
复制
ansible hosts -i hosts -m raw -a '/bin/bash -c "variable=1; echo \$variable; variable=2; echo \$variable;"' -vvv

此bug也仅存在于<=1.9中。2.0起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39849073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档