如何连接到 运行 远程主机上 docker 容器内的 ansible 任务(通过 ssh)

How to connect to run an ansible task inside a docker container on a remote host (via ssh)

我想使用 ansible 任务对 postgres 数据库进行更改(例如,添加用户)运行 在 docker 容器内 远程主机,只能通过ssh.

访问

我只能通过公开的 docker 端口建立本地 docker 连接或远程 docker 连接。这不是一个选择。

这可能吗?我应该使用不同的方法吗?

您不会单独使用 Ansible 来 运行 任务 远程主机上的容器中。您可以尝试一些解决方法:

Docker 套接字转发

与其公开发布 Docker 套接字,不如通过您的 ssh 连接转发它。例如:

ssh -L /tmp/docker.sock:/var/run/docker.sock remotehost

当此连接处于活动状态时,您可以通过本地套接字 /tmp/docker.sock 访问远程 docker,例如通过在您的环境中设置 DOCKER_HOST=unix:///tmp/docker.sock

这意味着您可以使用 Ansible 的 docker 连接驱动程序到远程容器内的 运行 任务。

只是 运行 远程主机上的命令

如果您在远程主机上的容器内安装了 Postgres 运行ning,则无需 运行 容器内的任务即可与 Postgres 通信。通过适当的身份验证,您可以直接连接到容器 IP 地址上的 postgres,或连接到主机上发布的端口。

无论哪种情况,您都可以使用 Ansible 的常规 ssh 连接驱动程序。