2017-08-09 12 views
0

をフォーマット:Ansible Jinja2のため、現在、私はアドレスのリストを生成するために、forループを実行し、ここでループがある

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 

2行目が正しくフォーマットされていることを確認するにはどうすればよいですか?私はいくつかの簡単な読書をして、コメントを追加しました:

#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

ありがとうございます:) –

関連する問題