我有一个ansible-playbook.yml文件,从内部需要执行docker-compose
- name: copy sql schema
hosts: test-mysql
gather_facts: no
tasks:
- name: Docker compose
command: docker-compose -f {{ name }}_compose.yml up -d但我总是会犯错误:
fatal: [test-mysql]: FAILED! => {"changed": false, "cmd": "docker-compose Mick_compose.yml up -d", "failed": true, "msg": "[Errno 2] No such file or directory", "rc": 2}有小费吗?
命令:
- name: Make sure compose service is up
docker_compose:
project_src: /path/to/your/compose/project
files:
- {{ name }}_compose.yml
state: present我知道错误:
The offending line appears to be:
- name: Make sure compose service is up
docker_compose:
^ here发布于 2019-10-11 14:20:28
Errno 2没有这样的文件或目录
在启动命令的默认目录中,实际上没有像Mick_compose.yml这样的文件或目录。要解决这个问题,我可以向您展示如何将dir从指挥模块更改为保存文件的正确的dir。
但是我会让您自己发现这一点(如果在本解释之后仍然想这样做的话),因为在有现有的ansible模块已经完成了您所需的工作时不应该直接运行命令
- name: Make sure compose service is up
docker_compose:
project_src: /path/to/your/compose/project
files:
- "{{ name }}_compose.yml"
state: present这只是为了让你走上正轨,看看上面的模块文档链接,了解更多关于可能的参数的信息。
发布于 2019-10-11 14:28:59
运行剧本的目录不包含{{ name }}_compose.yml文件。
有相关模块可以帮你。如果不想使用它,可以添加任务,它将显示运行剧本的目录:
- name: copy sql schema
hosts: test-mysql
gather_facts: no
tasks:
- debug:
msg: "{{ playbook_dir }}"
- name: Docker compose
command: docker-compose -f {{ name }}_compose.yml up -d然后,要么将{{ name }}_compose.yml移动到目录,要么在命令中提供一个绝对路径:docker-compose -f [abs_path]{{ name }}_compose.yml up -d
https://stackoverflow.com/questions/58342315
复制相似问题