为什么ansible总是用模板中的单引号替换双引号?

时间:2015-08-12 15:43:43

标签: docker jinja2 ansible

我正在尝试使用Ansible模板生成Dockerfiles - 请参阅Ansible Galaxy中的角色源和模板以及Github

我需要创建一个标准的Dockerfile行,如:

...
VOLUME ["/etc/postgresql/9.4"]
...

但是,当我把它放在输入文件中时:

...
instruction: CMD
value: "[\"/etc/postgresql/{{postgresql_version}}\"]"
...

它最终呈现为:

...
VOLUME ['/etc/postgresql/9.4']
...

我失去了“(这使得Dockerfiles无用)

有任何帮助吗?我如何说服Jinja不要替换“with”?我尝试过 \“ | safe 过滤器,甚至 {%raw%} - 它只是继续这样做!

更新 以下是重现此问题的方法:

galaxy.ansible.com 或Github获取 peruncs.docker 角色(上面给出了链接) 用以下内容写一个简单的剧本(比如 demo.yml )并运行: ansible-playbook -v demo.yml -v 选项将允许您查看生成的 Dockerfile 与破坏的内容一起使用的临时目录,以便您可以检查它。生成docker镜像并不重要,只需尝试使Dockerfile正确。

- name: Build docker image
  hosts: localhost
  vars:
        - somevar: whatever        
        - image_tag: "blabla/booboo"
        - docker_copy_files: []
        - docker_file_content:
             - instruction: CMD
               value: '["/usr/bin/runit", "{{somevar}}"]'
  roles:         
      - peruncs.docker

提前致谢!

0 个答案:

没有答案