我刚开始学习ansible,并在跟踪医生。我在运行命令,我还没有详细地看过剧本之类的东西。我能够成功地与
ansible --private-key ../key.pem -vvvv all -m ping -u root 我有主机文件中的IP。所以我只是在运行文档中指定的另一个命令。
ansible --private-key ../key.pem -vvvv all -m ping -u root -a "/bin/echo batmaan"回传
>> { " FAILED ":true,"msg":“此模块需要key=value参数('/bin/echo','batmaan')”}
有什么想法吗?
更新
我在使用-m shell之前使用了-a参数,它起了作用。我的不可接受版本是1.4.4。当我们说出完整的路径时,为什么要通过“外壳”呢?就连文档也什么也没说。这是一个特定版本的问题吗?请帮帮我。
发布于 2016-06-30 10:18:20
在这里,ansible二进制代码是这样说的:
-a MODULE_ARGS, --args=MODULE_ARGS
module arguments
-m MODULE_NAME, --module-name=MODULE_NAME
module name to execute (default=command)因此,在执行ansible localhost -m ping时,ansible调用ping模块来测试与主机的连接(在本例中为localhost)。
当您尝试ansible localhost -m ping -a "/bin/echo batmaan"时,您要求ansible使用/bin/echo, batmaan参数调用ping模块,这是错误的。
有一个shell模块可以在远程主机上执行命令,所以当您执行ansible localhost -m shell -a "/bin/echo batmaan"时,您要求ansible使用您的参数调用shell模块,后者用"/bin/echo batmaan"执行/bin/sh。
请注意,要调用的默认模块是command (这与shell模块略有不同),它接受第一个参数并将其作为命令执行,参数如下(但不要处理这些参数),因此执行ansible localhost -a "/bin/echo batmaan"将以batmaan作为参数执行/bin/echo。
https://stackoverflow.com/questions/38113953
复制相似问题