使用ansible与docker compose

使用ansible与docker compose,docker,ansible,docker-compose,Docker,Ansible,Docker Compose,我正在尝试使用Ansible playbook部署docker设置。为此,我正在使用 我的剧本看起来像: --- - name: Run Docker compose hosts: all gather_facts: no tasks: - debug: msg="Container - {{ inventory_hostname }}" - docker_service: project_src: "compose" state: absent - do

我正在尝试使用Ansible playbook部署docker设置。为此,我正在使用

我的剧本看起来像:

---
- name: Run Docker compose
hosts: all
gather_facts: no
tasks:
  - debug: msg="Container - {{ inventory_hostname }}"

  - docker_service:
      project_src: "compose"
      state: absent

  - docker_service:
      project_src: "compose"
      state: present
运行此简单的剧本时,如下所示:

ansible-playbook -v playbook.yml --ask-sudo-pass
我添加了
——询问sudo pass
,以确保这不是权限问题

输出

SUDO password:

PLAY [Run Docker compose] ******************************************************

TASK [debug] *******************************************************************
ok: [prolims-staging] => {
    "msg": "Container - prolims-staging"
}

TASK [docker_service] **********************************************************
fatal: [prolims-staging]: FAILED! => {"changed": false, "msg": "Error connecting: Error while fetching server API version: ('Connection aborted.', error(13, 'Permission denied'))"}
        to retry, use: --limit @/data/prolims-provision/provision-docker.retry

PLAY RECAP *********************************************************************
prolims-staging            : ok=1    changed=0    unreachable=0    failed=1
我也尝试过在其他论坛上寻找这个问题(以及类似的问题),但这些都没有帮助

注意:我能够在目标机器上从CLI(使用sudo)成功运行docker compose

此外,我还试着玩docker_容器。我尝试执行一个包含以下内容的剧本:

...
- name: check container status
    command: docker ps
    register: result

  - name: Create a container
    docker_container:
      name: db_pg
      image: "postgres:latest"
      state: present
      recreate: yes
  ...
运行这个剧本效果非常好

我想,发布docker compose文件可能与此无关

我遵循了这一点,但没有奏效。也许,我可能错过了一些愚蠢或真正重要的事情

如果您能帮助理解和解决此问题,我们将不胜感激

我能够从目标机器的CLI(使用sudo)在目标机器上成功运行docker compose

因此,您需要为任务使用
been
声明

我添加了
——询问sudo pass
,以确保这不是权限问题

只需将
——ask sudo pass
添加到
ansible playbook
参数不会产生任何效果,除非相关任务/游戏已
变成
声明(并且
变成\u方法设置为
sudo
,但这是默认设置)


.

好吧,我想这可能行得通。它正朝着积极的方向发展。我会尽快检查。非常感谢。更新:谢谢你的帮助。加上一个“变成:真”就行了。我的愚蠢。