如何连接到 运行 远程主机上 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
连接驱动程序。
我想使用 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
连接驱动程序。