在docker上使用ansible委托

时间:2019-12-04 23:48:21

标签: docker permissions ansible

我想在我用ansible管理的机器的容器内执行命令。

这可以通过delegate_to命令(请参阅https://stackoverflow.com/a/41626257/458274):

- name: Add container to inventory
  add_host:
    name: mycontainer
    ansible_connection: docker
  changed_when: false

- name: Do something in container
  delegate_to: mycontainer
  raw: echo "hello world"

但是,我正在使用的用户无权访问/var/run/docker.sock。我可以通过将用户添加到docker组来解决此问题,但是我认为这是一种不良的安全做法,因为使用此用户帐户运行的任何程序现在都可以在没有密码的情况下获得root权限。

使用become也不起作用,因为它也将委托给容器。

如何使用delegate_to,但先切换到另一个用户?

1 个答案:

答案 0 :(得分:0)

如果要在容器中执行命令,则 需要与docker守护程序进行某种通信。

暂时忽略ansible,您可以通过以下两种模式与docker守护进程通信:

  • 通过Unix套接字/var/run/docker.sock
  • 通过tcp端口(默认为2375)。

因此,如果不使用Unix套接字,则可以选择使用TCP连接。选择你的毒药;-)