2017-08-09 85 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

非常感謝你:) –