执行ansible-playbook -i inventory/hosts -e @inventory/vars cluster.yml报错

错误信息如下。但是我的几台主机直接是通的,也能够ssh。
请教为什么?

PLAY [kube-master:kube-node:etcd] ****************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************
Thursday 24 May 2018 11:49:20 +0800 (0:00:00.083) 0:00:00.083 **********
fatal: [node1]: UNREACHABLE! => {“changed”: false, “msg”: “SSH Error: data could not be sent to remote host “10.0.1.6”. Make sure this host can be reached over ssh”, “unreachable”: true}
fatal: [node3]: UNREACHABLE! => {“changed”: false, “msg”: “SSH Error: data could not be sent to remote host “10.0.1.8”. Make sure this host can be reached over ssh”, “unreachable”: true}
fatal: [node4]: UNREACHABLE! => {“changed”: false, “msg”: “SSH Error: data could not be sent to remote host “10.0.1.9”. Make sure this host can be reached over ssh”, “unreachable”: true}
fatal: [node2]: UNREACHABLE! => {“changed”: false, “msg”: “SSH Error: data could not be sent to remote host “10.0.1.7”. Make sure this host can be reached over ssh”, “unreachable”: true}

@laoliang 注意修改 inventory/hosts中的主机信息,里面包含用户和密码。

这样配置对吗?对ansible不熟。
hosts文件内容如下:
[all]
node1 ansible_host=10.0.1.6 ansible_user=root ansible_ssh_pass=mypass ansible_become=true
node2 ansible_host=10.0.1.7 ansible_user=root ansible_ssh_pass=mypass ansible_become=true
node3 ansible_host=10.0.1.8 ansible_user=root ansible_ssh_pass=mypass ansible_become=true
node4 ansible_host=10.0.1.9 ansible_user=root ansible_ssh_pass=mypass ansible_become=true

[kube-master]
node1
node2
node3
node4

[etcd]
node1
node2
node3
node4

[kube-node]
node1
node2
node3
node4

ansible_user 为远程主机的用户名
ansible_ssh_pass 为远程主机的密码

是的,是按照实际设置的。看错误提示是连不上节点的ssh,但网络是通的,用cli连ssh没有问题。

[root@node1 kubeadm-ansible]# ansible-playbook -i inventory/hosts -e @inventory/vars cluster.yml

PLAY [kube-master:kube-node:etcd] **********************************************

TASK [Gathering Facts] *********************************************************
Thursday 24 May 2018 14:38:13 +0800 (0:00:00.086) 0:00:00.086 **********
fatal: [node1]: UNREACHABLE! => {“changed”: false, “msg”: “SSH Error: data could not be sent to remote host “10.0.1.6”. Make sure this host can be reached over ssh”, “unreachable”: true}
fatal: [node3]: UNREACHABLE! => {“changed”: false, “msg”: “SSH Error: data could not be sent to remote host “10.0.1.8”. Make sure this host can be reached over ssh”, “unreachable”: true}
fatal: [node2]: UNREACHABLE! => {“changed”: false, “msg”: “SSH Error: data could not be sent to remote host “10.0.1.7”. Make sure this host can be reached over ssh”, “unreachable”: true}
fatal: [node4]: UNREACHABLE! => {“changed”: false, “msg”: “SSH Error: data could not be sent to remote host “10.0.1.9”. Make sure this host can be reached over ssh”, “unreachable”: true}

NO MORE HOSTS LEFT *************************************************************
to retry, use: --limit @/root/kubeadm-ansible/cluster.retry

PLAY RECAP *********************************************************************
node1 : ok=0 changed=0 unreachable=1 failed=0
node2 : ok=0 changed=0 unreachable=1 failed=0
node3 : ok=0 changed=0 unreachable=1 failed=0
node4 : ok=0 changed=0 unreachable=1 failed=0

Thursday 24 May 2018 14:38:16 +0800 (0:00:02.771) 0:00:02.857 **********

Gathering Facts --------------------------------------------------------- 2.77s

你是在哪台机器上执行ansible的,尝试在那一台机器上ssh到其他主机,是否能连上。

在1.6上执行的ansible,在cli界面,所有机器之间ssh连接都没问题

这个可能是ansible的一个bug,尝试执行

export ANSIBLE_SCP_IF_SSH=y

再执行命令。

原因找到了,经过不懈查找,解决方案如下:
问题原因:没有在ansible管理节点(即安装ansible的节点)上添加目标节点(即需要管理的节点)的ssh认证信息

解决步骤:
1:管理节点生成SSH-KEY
#ssh-keygen
成功后在~/.ssh/路径下将生成ssh密钥文件:id_rsa及id_rsa.pub

2:添加目标节点的SSH认证信息
#ssh-copy-id root@目标节点IP
这里root是在目标节点上登录的用户,@符号后面接目标节点IP即可,之后会提示输入目标节点root用户密码,输入即可。

添加认证信息后,目标节点主机的~/.ssh/目录下将会出现一个authorized_keys文件,里面包含了ansible管理节点的公钥信息,可以检查一下是否存在。

切记,管理节点本机也要做以上同样的操作

至此以上问题应该能解决。

另外,特别感谢@vinkdong热心的回答。下一步有问题还需多多指教!

hi,大佬有木有遇到过在本机部署单个节点出现如下问题。
fatal: [node1]: UNREACHABLE! => {“changed”: false, “msg”: “SSH Error: data could not be sent to remote host “172.27.0.3”. Make sure this host can be reached over ssh”, “unreachable”: true}
不管ip配置成localhost 或者是 127.0.0.1 都不行,但是可以通过ssh命令直接访问。

找到问题了,发现服务器的证书认证被禁用了,开启就可以了。

请问下如何开启服务器证书认证,感谢!!!

您好,可以详细说说这个问题怎么解决吗?我这边也遇到了这个问题