使用ansible连接到容器

时间:2016-10-17 06:36:06

标签: ansible containers

我已经构建了一个docker镜像并使用ansible启动了容器。我遇到了一个问题,试图从docker主机创建一个到容器的动态连接,以设置一些环境变量并执行一些脚本。我知道ansible不使用ssh连接到容器,我可以使用expect模块运行此命令" ssh root @ localhost -p 12345"。如何使用 ansible docker连接插件添加和维护与容器的连接,或者直接指向docker主机?这都在AWS EC2实例中运行。

我认为我需要运行ansible作为此命令的等效使用,由ansible连接到容器主机" docker exec -i -t container_host_server / bin / bash"。

  • name:创建数据容器
    docker_container:
     name:packageserver
     image:my_image / image_name
     tty:是的  州:开始了  分离:真的  分离:是的  卷:
    • 的/ var / www / html等
      published_ports:
    • " 12345:22"
    • " 80:80"
      注册:容器

先谢谢, DT

1 个答案:

答案 0 :(得分:1)

要设置环境变量,您可以使用参数" env"在您的docker_container任务中。

在docker_container任务中,您可以添加参数"命令"在docker镜像的Dockerfile中覆盖定义为CMD的命令,有点像

command: PathToYourScript && sleep infinity

在您的示例中,您公开了容器端口22,因此您似乎希望在容器内运行sshd。虽然它不是Docker中的最佳实践,但如果你想运行sshd,你必须使用docker_container任务中的命令参数启动它:

command: ['/usr/sbin/sshd', '-D']

这样做(并在容器中定义了用户),您就可以将容器连接到

ssh -p 12345 user@dockerServer

或者,至于你的例子," ssh -p 12345 root @ localhost"如果您的图像已经定义了root用户并且您正在使用localhost。