gpt4 book ai didi

docker - 将 ansible 与 docker-compose 结合使用

转载 作者:行者123 更新时间:2023-12-03 03:23:32 31 4
gpt4 key购买 nike

我正在尝试使用 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 ,但没有成功。也许,我可能在这里错过了一些愚蠢或非常重要的事情。

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

最佳答案

I am able to run docker-compose successfully in the target machine from its CLI (using sudo).

因此您需要使用 become 声明该任务。

I added --ask-sudo-pass to ensure that it was not a permission issue.

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

Reference .

关于docker - 将 ansible 与 docker-compose 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48817216/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com