在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守护程序时,除非我使用双引号,否则它将失败?
我不明白为什么会这样。
任何人都知道如何解决它???
答案 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