我有一个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}
任何提示?谢谢
使用命令: -名称:确保撰写服务已启动 docker_compose: project_src:/ path / to / your / compose / project 文件: -{{name}} _ compose.yml 状态:存在 我得到错误: 令人反感的行似乎是:
- name: Make sure compose service is up
docker_compose:
^ here
答案 0 :(得分:0)
[Errno 2]没有这样的文件或目录
启动命令的默认目录中实际上没有Mick_compose.yml
这样的文件或目录。要解决此问题,我可以向您展示如何将目录从command module更改为保存文件的正确目录。
但是我会让你自己发现这一点(如果您仍然想在解释后继续这样做),因为当出现existing ansible module already doing what you need
时,您不应该直接运行命令- name: Make sure compose service is up
docker_compose:
project_src: /path/to/your/compose/project
files:
- "{{ name }}_compose.yml"
state: present
这只是为了让您步入正轨,请查看上方的模块doc链接,以获取有关可能参数的更多信息。
答案 1 :(得分:0)
运行手册的目录不包含{{ name }}_compose.yml
文件。
有relevant module可以为您提供帮助。 如果您不想使用它,则可以添加任务,该任务将显示剧本的运行目录:
- 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