“用”replace“

daemon.json ,我需要用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 %} } 

事情是在replace时,ansible用简单的引号代替双引号。

重启Docker守护进程时,除非使用双引号,否则会失败?

我不明白为什么会这样。

谁知道怎么修它 ???

您必须在Jinja模板中添加一个filterto_json

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

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