Ansible 不在远程服务器上执行命令

Ansible doesn't execute commands on remote server

我正在使用 Ansible 2.1.1.0 通过 pip 在 OS X "El capitan" 上安装。 我尝试了一个非常简单的配置:

#/etc/ansible/hosts
[webservers]
my.remote.server

使用变量ansible_user使用相应的public密钥通过ssh连接:

#/etc/ansible/group_vars/webservers
---
ansible_user: my_user

当我尝试 ping 服务器时似乎一切正常 ansible webservers -m ping:

my.remote.server | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

尽管如此,当我尝试 运行 远程服务器上的任何命令时,它都会在我的本地计算机上执行,例如 运行ning ansible webservers -m shell -a "echo $HOSTNAME" 应该显示 my.remote.server,但显示为:

my.remote.server | SUCCESS | rc=0 >>
my.local.server

知道是什么导致了这个问题吗?

这是因为 "echo $HOSTNAME" 在通过 SSH 传递到远程服务器之前正在您的本地 shell 中进行评估。试试这个:

ansible webservers -a hostname

或者这样:

ansible webservers -m shell -a 'echo $HOSTNAME'