Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Ansible在没有ssh的情况下仍然能够连接节点_Ssh_Ansible - Fatal编程技术网

为什么Ansible在没有ssh的情况下仍然能够连接节点

为什么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,

我创建了两个ubuntu docker容器,一个带有控制节点,另一个带有从属节点。我跑

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',并希望看到有关它如何连接到节点的更多信息。