2017-08-27 154 views
0

我安装了ansible(与vagrant)并试图在Ansible上执行我的第一个远程shell脚本。我无法用可靠的方法ping主机。但如果我直接ping服务器,我能够。即使我可以使用我的NIS帐户登录远程服务器,在主机文件中提到。无法ping通远程服务器,但能够连接

有人能帮我找到,我在配置中错过了什么吗?

[email protected]:~$ cat /etc/ansible/hosts 
# web 
web1 ansible_host=tomcat-serv-adm1 ansible_connection=ssh ansible_user=username ansible_ssh_pass=password 

[email protected]:~$ ansible web1 -m ping 
web1 | UNREACHABLE! => { 
    "changed": false, 
    "msg": "Authentication or permission failure. In some cases, you may have been able to authenticate and did not have permissions on the remote directory. Consider changing the remote temp path in ansible.cfg to a path rooted in \"/tmp\". Failed command was: (umask 77 && mkdir -p \"` echo ~/.ansible/tmp/ansible-tmp-1503856866.42-230229170728730 `\" && echo ansible-tmp-1503856866.42-230229170728730=\"` echo ~/.ansible/tmp/ansible-tmp-1503856866.42-230229170728730 `\"), exited with result 2", 
    "unreachable": true 
} 

[email protected]:~$ ping tomcat-serv-adm1 
PING tomcat-serv-adm1-e1000g1.waypoint.com (192.168.66.116) 56(84) bytes of data. 
64 bytes from tomcat-serv-adm1-e1000g1.waypoint.com (192.168.66.116): icmp_req=1 ttl=250 time=22.5 ms 
64 bytes from tomcat-serv-adm1-e1000g1.waypoint.com (192.168.66.116): icmp_req=2 ttl=250 time=19.5 ms 
64 bytes from tomcat-serv-adm1-e1000g1.waypoint.com (192.168.66.116): icmp_req=3 ttl=250 time=17.5 ms 
^C 
--- tomcat-serv-adm1-e1000g1.waypoint.com ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2003ms 
rtt min/avg/max/mdev = 17.554/19.891/22.562/2.064 ms 
 
[email protected]:~$ ansible -vvv web1 -m ping 
Using /etc/ansible/ansible.cfg as config file 
META: ran handlers 
Using module file /usr/local/lib/python2.7/dist-packages/ansible/modules/system/ping.py 
ESTABLISH SSH CONNECTION FOR USER: None 
SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/d37e71f71a tomcat-serv-adm1 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"'' 
(255, '', 'Permission denied (gssapi-keyex,gssapi-with-mic,publickey,password,keyboard-interactive).\r\n') 
web1 | UNREACHABLE! => { 
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: Permission denied (gssapi-keyex,gssapi-with-mic,publickey,password,keyboard-interactive).\r\n", 
    "unreachable": true 
} 
[email protected]:~$ 
+0

你能ssh到tomcat- SERV-ADM1? Ansible的“ping”模块不使用“ping”命令。 –

+0

是的,我可以用命令“ssh username @ tomcat-serv-adm1”ssh进入tomcat-serv-adm1。提供密码后,我可以进入服务器。 – user3183426

回答

0

查看错误消息:

考虑更换为在\根 “/ TMP \”

的路径在ansible.cfg远程临时路径Ansible的ping不使用ping命令。相反,它会尝试使用ssh连接到主机。检查ssh连接。那时,它也创造在目录remote_tmp一些临时文件在你ansible.cfg配置文件(默认:/etc/ansible/ansible.cfg)

要解决这个问题:

  1. 编辑您的ansible.cfg和寻找remote_tmp
  2. 确保远程主机上的目录是由SSH用户
  3. 写如果你不能使其可写,值更改为一个目录,任何人都可以写(如:/tmp

首先检查:

$ grep remote_tmp /etc/ansible/ansible.cfg 
remote_tmp  = $HOME/.ansible/tmp 

如果你不能使remote_tmp可写,在ansible.cfg将值改为:

remote_tmp  = /tmp/.ansible/tmp 

remote_tmp  = /tmp/.ansible-${USER}/tmp 
+0

我没有/etc/ansible/ansible.cfg 我可以创建它作为新的,但我需要在这个? – user3183426

+0

这是默认的。你能发布'ansible -vvv web1 -m ping'的输出吗? – helloV

+0

由于这里的字符限制,我编辑了原文并添加了询问详细信息 – user3183426