Docker compose 将变量从Ansible playbook传递到docker_compose任务

Docker compose 将变量从Ansible playbook传递到docker_compose任务,docker-compose,ansible,Docker Compose,Ansible,如何将已注册的输出从playbook传递到docker_compose任务?在playbook中,我首先创建一个临时目录,并注册结果: -名称:创建临时部署目录 临时文件: 状态:目录 前缀:test。 寄存器:tempdir 在剧本的后面,我有一个docker_compose任务,如下所示: -名称:创建和启动服务 docker_撰写: 项目名称:test 项目_src:“{{tempdir.path}” 到目前为止,它可以运行compose文件并启动容器。但是,在compose文件本身中

如何将已注册的输出从playbook传递到docker_compose任务?在playbook中,我首先创建一个临时目录,并注册结果:

-名称:创建临时部署目录
临时文件:
状态:目录
前缀:test。
寄存器:tempdir
在剧本的后面,我有一个docker_compose任务,如下所示:

-名称:创建和启动服务
docker_撰写:
项目名称:test
项目_src:“{{tempdir.path}”
到目前为止,它可以运行compose文件并启动容器。但是,在compose文件本身中,我需要引用volumes部分中的tempdir,以便将其装载到容器中

我在compose文件中尝试了这一点,但显然不起作用:

卷:
-/var/run/docker.sock:/var/run/docker.sock
-“{tempdir.path}/certs/acme.json:/acme.json”
这并不局限于传递tempdir,因为我可能还需要将其他变量传递到compose文件。例如,从库存文件中


注意。我是Ansible的新手,请原谅我混淆了任何术语。

您可以创建docker compose模板文件,并使用Ansible中的
模板
模块,将其中的变量复制并替换到您的目的地

类似于此:

 - name: set docker-compose
   template:
      src: docker-compose.yml.j2
      dest: "{{ your_compose_path }}"
在docker-compose.yml.j2中,使用注册变量:

 volumes:
   - /var/run/docker.sock:/var/run/docker.sock
   - "{{ tempdir.path }}/certs/acme.json:/acme.json"