私は設定ファイルを生成しています。私は、単純なPythonプログラムから呼び出されたときに正しくレンダリングされるJinja2テンプレートを使い始めました。私がそれを不可能な人から呼び出すと、ループの最初の行以外の2つの余分なスペースが得られます。 YAMLやPythonのようなものを生成することは本当の苦痛でした。余分なスペースが可能なテンプレートに表示されます
脚本コール:
- name: generate bgp vars file, put in includes directory
local_action: template src={{ role_dir }}/templates/bgp_vars.j2 dest={{ incvar_dir }}/bgp_vars.yaml
run_once: true
私はここで
はYAMLジェネレータの本当に簡単な例です...この問題を解決するためのブロックのための最初の行としてコメント行を置くために行きましたテンプレートの
セクション:
dc_route_reflectors:
{% for dc in SH_dcs %}
# dc is "{{ dc }}"
{{ dc }}:
{% for host in groups[bgpgroupname] if dc == hostvars[host].MYDC %}
- "{{ hostvars[host].MAIN_MYADDR }}"
{% endfor %}
{% endfor %}
レンダリングされた出力:
dc_route_reflectors:
# dc is "pnp"
pnp:
- "10.100.16.3"
- "10.100.32.3"
# dc is "sgs"
sgs:
- "10.8.0.3"
- "10.8.16.3"
# dc is "cst"
cst:
- "10.4.0.3"
- "10.4.16.3"
# dc is "dse"
dse:
- "10.200.0.3"
- "10.200.16.3"
dcが "pnp"であることに注目してください。コメントはテンプレートに表示されるのでインデントされませんが、sgs、cst、およびdseコメントは2つのスペースで字下げされます。 ipアドレスの配列行もすべてインデントされます。私はJinja2が記述しているように、 "%"のものに " - "を追加するさまざまなバージョンを試しましたが、一貫した正しい結果は得られませんでした。
他にもこれを見たことがあるはずです。私はCentOS7で2.2.1.0を走っています。
それでした。私がPython内でそれを実行していたとき、それは反対のデフォルトになっているはずです。 – JerryS
@ JerrySヘルプセンターをご覧ください:[あなたの質問や「ありがとう」と言う回答にコメントを付けないでください。](http://stackoverflow.com/help/someone-answers)。 – techraf
ありがとう@techrafの #jinja2:lstrip_blocks:True私が理解していないのは、テンプレートとしてのジンジャーが最初の場所でスペースを混乱させる理由は、テンプレートの目的を破るようです – user2056182