“被'替换为'与ansible

时间:2017-12-05 10:51:40

标签: docker ansible

在ansible中,我需要使用log-opts生成daemon.json文件:

{% if docker_log_dict is defined %}
  "log-opts": {{ docker_log_dict.log_opts | default('[]') }},
{% endif %}

log_opts: |
      {
        "syslog-address": "tcp://{{ my_ip_run }}:514",
        "tag": {% raw %}"{{.Name}}/{{.FullID}}"{% endraw %}
      }

但是,当我检查生成的daemon.json文件时,我得到:

...
"log_opts": 
      {
        'syslog-address': 'tcp://10.10.10.10:514',
        'tag': {% raw %}'{{.Name}}/{{.FullID}}'{% endraw %}
      }

事情是在更换时,ansible用简单的引号而不是双引号替换。

重新启动Docker守护程序时,除非我使用双引号,否则它将失败?

我不明白为什么会这样。

任何人都知道如何解决它???

1 个答案:

答案 0 :(得分:0)

您必须在Jinja模板中添加过滤器to_json

{% if docker_log_dict is defined %}
  "log-opts": {{ docker_log_dict.log_opts | to_json | default('[]') }},
{% endif %}

我在这里找到了答案:https://groups.google.com/forum/#!topic/ansible-project/WUjiN9Wf32U