2017-08-09 68 views
0

所以目前我运行一个for循环产生的地址的列表,这里是循环:Ansible Jinja2的,格式化

sg_nodes_dn: " 
    {%- set nodes = [] %} 
    {%- for host in groups['elastic_nodes'] %} 
    {{- nodes.append('CN=%s,OU=Systems/DevOps,O=x x x,L=x,C=x' % hostvars[host]['elk_node_name']) }} 
    {%- endfor %} 
    {{- nodes -}}" 

这个伟大的工程,但我的问题是,当我格式化成J2模板。

这里是我的模板里面的VAR:

searchguard.nodes_dn: 
    {{ sg_nodes_dn | to_nice_yaml }} 

这里的问题是,它会打印的第一行罚款,但第二行是不是在YAML格式和服务将无法加载,这是结果。

searchguard.nodes_dn: 
    - CN=x.x-x.x,OU=Systems/DevOps,O=x x x,L=x,C=x 
- CN=x.x-x.x,OU=Systems/DevOps,O=x x x,L=x,C=x 

如何确保第二行格式正确?我做了一些简单的阅读并补充说:

#jinja2:trim_blocks: False 

到文件的顶部,但它并没有解决问题,任何人都可以其他任何输入这里?

+0

你可以尝试'#的Jinja2:lstrip_blocks :“True(或False)”,trim_blocks:“True(或False)”'切换fasle和true检查天气,你可以得到你想要的结果。 –

+0

不幸的是,不管怎样,谢谢你。 –

回答

1

你可以使用Jinja2的indent过滤器:

searchguard.nodes_dn: 
    {{ sg_nodes_dn | to_nice_yaml | indent(4, false) }} 

或者干脆使用默认参数(width=4indentfirst=False),你需要它到底是什么:

searchguard.nodes_dn: 
    {{ sg_nodes_dn | to_nice_yaml | indent }} 
+0

我现在就试试这个,谢谢。 –

+0

非常感谢你:) –