为什么Ansible在没有ssh的情况下仍然能够连接节点
我创建了两个ubuntu docker容器,一个带有控制节点,另一个带有从属节点。我跑为什么Ansible在没有ssh的情况下仍然能够连接节点,ssh,ansible,Ssh,Ansible,我创建了两个ubuntu docker容器,一个带有控制节点,另一个带有从属节点。我跑 ansible all -m service -a "name=ssh state=stopped" 它表明 172.18.0.3 | CHANGED => { "changed": true, "name": "ssh", "status": { "enabled": { "changed": false,
ansible all -m service -a "name=ssh state=stopped"
它表明
172.18.0.3 | CHANGED => {
"changed": true,
"name": "ssh",
"status": {
"enabled": {
"changed": false,
"rc": null,
"stderr": null,
"stdout": null
},
"stopped": {
"changed": true,
"rc": 0,
"stderr": "",
"stdout": " * Stopping OpenBSD Secure Shell server sshd\n ...done.\n"
}
}
}
然后我尝试手动ssh,但失败了,因为openssh服务器已经停止,这很好。然后我运行另一个ansible命令来启动它
# ansible all -m service -a "name=ssh state=started"
172.18.0.3 | CHANGED => {
"changed": true,
"name": "ssh",
"status": {
"enabled": {
"changed": false,
"rc": null,
"stderr": null,
"stdout": null
},
"started": {
"changed": true,
"rc": 0,
"stderr": "",
"stdout": " * Starting OpenBSD Secure Shell server sshd\n ...done.\n"
}
}
}
当我已经停止了节点的ssh服务时,ansible如何能够连接到节点,我感到非常惊讶?是否存在ansible连接到ssh以外的节点的替代方法 Ansible可以通过各种协议连接到目标 看一看
在您的例子中,对于Docker容器,它使用Docker API。它可能使用Docker Python SDK,而Docker Python SDK反过来使用Docker Server REST API。这里不涉及SSH,因为根据提供的信息没有访问任何外部服务器。当两者都只是一个docker容器时,它们可以在容器内使用docker api吗?您可以运行命令,附加'-vvv',并希望看到有关它如何连接到节点的更多信息。