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

And*_*der 2 ansible ansible-2.x

我使用Ansible 2.1.1.0通过PIP在OS X"酋长"龙头安装.我尝试了一个非常简单的配置:

#/etc/ansible/hosts
[webservers]
my.remote.server
Run Code Online (Sandbox Code Playgroud)

使用变量ansible_user通过ssh使用相应的公钥进行连接:

#/etc/ansible/group_vars/webservers
---
ansible_user: my_user
Run Code Online (Sandbox Code Playgroud)

当我尝试ping服务器时,一切似乎都没问题ansible webservers -m ping:

my.remote.server | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
Run Code Online (Sandbox Code Playgroud)

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

my.remote.server | SUCCESS | rc=0 >>
my.local.server
Run Code Online (Sandbox Code Playgroud)

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

mwp*_*mwp 6

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

ansible webservers -a hostname
Run Code Online (Sandbox Code Playgroud)

或这个:

ansible webservers -m shell -a 'echo $HOSTNAME'
Run Code Online (Sandbox Code Playgroud)