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'
我正在使用 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'