我想在我用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
,但先切换到另一个用户?
答案 0 :(得分:0)
如果要在容器中执行命令,则 需要与docker守护程序进行某种通信。
暂时忽略ansible,您可以通过以下两种模式与docker守护进程通信:
/var/run/docker.sock
2375
)。因此,如果不使用Unix套接字,则可以选择使用TCP连接。选择你的毒药;-)