首页 > 解决方案 > 为什么 Ansible 仍然能够在没有 ssh 的情况下连接节点

问题描述

我创建了两个 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 以外的节点?

标签: sshansible

解决方案


Ansible 可以通过多种协议连接到目标。

看看连接插件列表

在您的情况下,对于 Docker 容器,它使用 Docker API。


推荐阅读