【问题标题】:using ansible with docker-compose将 ansible 与 docker-compose 一起使用
【发布时间】:2018-02-16 06:39:15
【问题描述】:

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

我的剧本看起来像:

---
- 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

我添加了--ask-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

我也尝试在其他论坛上查找此问题(以及此 StackOverflow 上的类似问题),但这些都没有帮助。

注意:我可以通过 CLI(使用 sudo)在目标机器上成功运行 docker-compose。

另外,我也尝试过使用 docker_container。我尝试执行包含以下内容的剧本:

...
- 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 文件可能与此无关。

我关注了这个example,但没有工作。也许,我可能在这里遗漏了一些愚蠢或非常重要的东西。

对于理解和解决此问题的任何帮助将不胜感激。

【问题讨论】:

    标签: docker ansible docker-compose


    【解决方案1】:

    我能够通过 CLI 在目标机器上成功运行 docker-compose(使用 sudo)。

    所以你需要为任务使用become 声明。

    我添加了--ask-sudo-pass 以确保这不是权限问题。

    仅将--ask-sudo-pass 添加到ansible-playbook 参数不会有任何效果,除非相关任务/播放具有become 声明(并且become_method 设置为sudo,但这是默认情况下)。

    Reference.

    【讨论】:

    • 好吧,我想这可能行得通。它正朝着积极的方向发展。我会尽快检查。谢谢!
    • 更新:感谢您的帮助。刚刚添加了成为:真的。我的愚蠢。
    猜你喜欢
    • 1970-01-01
    • 2019-12-25
    • 2020-06-26
    • 2017-12-23
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    相关资源
    最近更新 更多