将 ansible delegate_to 与 docker 一起使用:权限被拒绝

soe*_*ace 7 permissions ansible docker

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

这可以通过delegate_to命令实现(参见/sf/answers/2913838021/):

- 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"
Run Code Online (Sandbox Code Playgroud)

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

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

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

and*_*jwp 1

如果您想在容器中执行命令,那么您需要提供与 docker 守护进程的某种通信。

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

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

因此,如果不使用 Unix 套接字,您的替代方案是使用 TCP 连接。选择你的毒药;-)