如何在Ansible渲染的Jinja模板中插入换行且不影响输出?
Ansible CSV模板换行不输出换行的解决方法
方法1:用Jinja2的-标记消除空白
在逗号后换行时,给变量块的末尾或逗号前添加-标记,它会吃掉该侧的所有空白字符(包括换行),确保最终输出无多余换行。示例:
{{ hostvars[h]['myvar'][0]['firstvar'] | default('foo') }},- {{ hostvars[h]['myvar'][0]['secondvar'] | default('bar') }},- {{ hostvars[h]['myvar'][0]['thirdvar'] | default('baz') }}
方法2:列表收集字段后join拼接
先把所有CSV字段存入列表变量,再用join(',')拼接成一行。模板里可以分行写列表元素,输出自动合并为连续的CSV行,可读性和维护性都更强。示例:
{% set csv_fields = [ hostvars[h]['myvar'][0]['firstvar'] | default('foo'), hostvars[h]['myvar'][0]['secondvar'] | default('bar'), hostvars[h]['myvar'][0]['thirdvar'] | default('baz') ] %} {{ csv_fields | join(',') }}
方法3:用注释包裹换行
把模板中的换行放在Jinja2注释块内,这样换行不会被解析到输出里。示例:
{{ hostvars[h]['myvar'][0]['firstvar'] | default('foo') }}{# #},{{ hostvars[h]['myvar'][0]['secondvar'] | default('bar') }}{# #},{{ hostvars[h]['myvar'][0]['thirdvar'] | default('baz') }}
内容的提问来源于stack exchange,提问作者dr_
相关产品推荐
相关产品推荐

