如何在YAML字符串的每一行前添加两个空格?
实现Ansible配置内容每行前添加两个空格
我希望生成的配置文件中,config变量对应的每一行内容前都显示两个空格。当前使用的Ansible代码如下:
--- - hosts: localhost vars: filename: file1 a: aaa config: |- missingok daily compress rotate 4 create dateext dateformat -%d%m%Y dateyesterday tasks: - name: Creating log config file copy: dest: /{{ filename }} content: | {{ a }} { {{ config }} }
遇到的问题:在config变量前添加空格仅对第一行生效,其余行仍无前导空格;但如果在config开头添加一行无空格内容,空格会显示。
解决方案
使用Ansible的indent过滤器,给config变量的每一行统一添加指定数量的缩进,修改后的copy任务代码如下:
tasks: - name: Creating log config file copy: dest: /{{ filename }} content: | {{ a }} { {{ config | indent(width=2) }} }
原理说明
Ansible中使用|-定义的多行字符串会自动去除所有行的公共前置缩进,所以直接在变量引用前加空格只会影响第一行。而indent过滤器会为字符串的每一行(除空行外)添加指定宽度的缩进,确保所有行都能带上统一的前置空格。
内容的提问来源于stack exchange,提问作者Allen Jiang
相关产品推荐
相关产品推荐

