在Ansible中启用并重新启动crontab

在Ansible中启用并重新启动crontab,ansible,Ansible,我有一个laravel cron,我希望在每次部署或重新启动容器时运行/重新启动它,但我无法使服务在Ansible 2.9中运行。在conatiner中手动运行它可以正常工作 - name: run the scheduled commands a specific file shell: docker exec -it project_1 service cron restart 但ansible正在抱怨这个错误 cron start", "del

我有一个laravel cron,我希望在每次部署或重新启动容器时运行/重新启动它,但我无法使服务在Ansible 2.9中运行。在conatiner中手动运行它可以正常工作

   - name: run the scheduled commands a specific file
     shell: docker exec -it project_1 service cron restart
但ansible正在抱怨这个错误

    cron start", "delta": "0:00:00.086710", "end": "2020-11-20 
    14:32:47.259508", "msg": "non-zero return code", "rc": 1, "start": 
    "2020-11-20 14:32:47.172798", "stderr": "Got permission denied 
    while trying to connect to the Docker daemon socket at 
    unix:///var/run/docker.sock: Get 
    http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/project_1/json: 
    dial unix /var/run/docker.sock: connect: permission denied", 
    "stderr_lines": ["Got permission denied while trying to connect to 
    the Docker daemon socket at unix:///var/run/docker.sock:  
   dial unix /var/run/docker.sock: connect: permission denied"], 
   "stdout": "", "stdout_lines": []}
我的crontab是这样的

   * * * * * root  . /root/.profile; /usr/local/bin/php /opt/app/public/../artisan schedule:run >> /dev/null 2>&1
我知道这是一个权限问题,但我不知道怎么做,因为
/var/run/docker.sock
只在调用cron命令时创建。我还尝试在Dockerfile中通过添加

 RUN sudo chmod 666 /var/run/socket.sock 
但它给了我错误,因为文件还不存在

如果我在容器内手动运行,它实际上可以工作

   service cron restart

有什么想法吗?

我回答了自己的问题,因为我找到了有效的解决方案

  - name: run the scheduled commands during reboot or deploy
    become: yes
    shell: docker exec -it --user root project_1 service cron start

因此,我刚刚添加了拥有cron的用户,在本例中是它的
根用户

,您没有粘贴完整的错误消息。如果没有更多内容(例如失败原因),您应该在详细模式下运行ansible playbook(
-vvv
),看看是否可以获得更多信息。@Zeitounator我更新了我的问题,希望问题更清楚。您用于从ansible连接到目标系统的用户无权执行docker命令