Ansible "msg":“这个模块需要 key=value arguments echo
Ansible "msg": "this module requires key=value arguments echo
我刚刚开始学习 ansible,并且一直在关注文档。我是 运行 命令,我还没有详细介绍剧本之类的东西。
我能够通过
成功 ping
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"
哪个returns
x.x.x.x | FAILED >> {
"failed": true,
"msg": "this module requires key=value arguments (['/bin/echo', 'batmaan'])"
}
有什么想法吗?
更新
我在 -a 参数之前使用了 -m shell 并且它起作用了。我的 ansible 版本是 1.4.4。告诉完整路径为什么要传'shell'?甚至 docs 也没有说什么。它是特定于版本的问题吗?
请帮帮我。
这是 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/sh
与 "/bin/echo batmaan"
.
注意默认调用的模块是command
(与shell
模块有点不同),它接受第一个参数并将其作为一个命令执行,后面有参数(但是不要通过 shell) 处理它们,所以执行 ansible localhost -a "/bin/echo batmaan"
将以 batmaan
作为参数执行 /bin/echo
。
我刚刚开始学习 ansible,并且一直在关注文档。我是 运行 命令,我还没有详细介绍剧本之类的东西。 我能够通过
成功 pingansible --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"
哪个returns
x.x.x.x | FAILED >> { "failed": true, "msg": "this module requires key=value arguments (['/bin/echo', 'batmaan'])" }
有什么想法吗?
更新
我在 -a 参数之前使用了 -m shell 并且它起作用了。我的 ansible 版本是 1.4.4。告诉完整路径为什么要传'shell'?甚至 docs 也没有说什么。它是特定于版本的问题吗? 请帮帮我。
这是 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/sh
与 "/bin/echo batmaan"
.
注意默认调用的模块是command
(与shell
模块有点不同),它接受第一个参数并将其作为一个命令执行,后面有参数(但是不要通过 shell) 处理它们,所以执行 ansible localhost -a "/bin/echo batmaan"
将以 batmaan
作为参数执行 /bin/echo
。