ansible的模板变量渲染后带u(unicode)
背景
最近使用ansible管理项目部署,有个前端的配置项是类似字典类的配置,其值如{‘memu1’:['/test1','/test2']},在ansible渲染后模板配置项变成了{u'memu1’:[u'/test1',u'/test2']}。
问题过程
假设ansible中某配置文件的模板如下:
navs : {{ nav }}
通过ansible传递的变量值为如下:
navs: {‘memu1’:['/test1','/test2']}
如果使用template模块渲染,最终的配置项会变成:
navs: {u'memu1’:[u'/test1',u'/test2']}
这里相当于渲染后成了unicode的字符串,这样对应的前端服务无法解析该配置。
如何解决
1. 对于字典类的配置项,我们可以先将配置项的值进行转义:
navs: {u'memu1’:[u'/test1',u'/test2']} => navs: "{\"memu1\": [\"/test1\", \"/test2\"] }"
2. 然后在配置文件的模版中使用to_json过滤器转换成字典格式:navs : {{ nav | to_json }}
最后渲染出来的配置如:navs: {"memu1": ["/test1", "/test2"]}
这样问题就解决了~
博主:测试生财(一个不为996而996的测开码农)
座右铭:专注测试开发与自动化运维,努力读书思考写作,为内卷的人生奠定财务自由。
内容范畴:技术提升,职场杂谈,事业发展,阅读写作,投资理财,健康人生。
csdn:https://blog.csdn.net/ccgshigao
博客园:https://www.cnblogs.com/qa-freeroad/
51cto:https://blog.51cto.com/14900374
微信公众号:测试生财(定期分享独家内容和资源)