【问题标题】:Pass variables from Ansible playbook to docker_compose task将变量从 Ansible playbook 传递到 docker_compose 任务
【发布时间】:2020-11-24 16:31:39
【问题描述】:

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

- name: Create temporary deployment directory
  tempfile:
    state: directory
     prefix: test.
  register: tempdir

在剧本的后面,我有一个这样的 docker_compose 任务:

- name: Create and start services
  docker_compose:
    project_name: test
    project_src: "{{ tempdir.path }}"

到目前为止,这可以运行撰写文件并启动容器。但是,在撰写文件本身中,我需要引用卷部分中的 tempdir,以将其挂载到容器中。

我在撰写文件中尝试过这个,显然不起作用:

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

这不仅限于传递 tempdir,因为我可能还需要将其他变量传递给 compose 文件。例如。来自库存文件。

注意。我对 Ansible 很陌生,如果我混淆了任何术语,请原谅我。

【问题讨论】:

    标签: docker-compose ansible


    【解决方案1】:

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

    类似的东西:

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

    【讨论】:

      猜你喜欢
      • 2020-04-22
      • 2020-06-17
      • 1970-01-01
      • 2015-08-20
      • 2023-01-11
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多