Ansible blockinfile模块未按指定缩进值生效问题求助
Ansible blockinfile模块indent参数未按预期生效的问题
问题场景
我的Playbook
- name: Add line to netplan file become: true ansible.builtin.blockinfile: path: /etc/netplan/00-installer-config.yaml.REMOVE marker: "" block: |4 test
文件修改前后
- 修改前
00-installer-config.yaml.REMOVE内容:
test
- 修改后文件内容:
test test
我明确指定了4空格缩进,但实际仅生效2空格,尝试8、10等其他整数值也始终是2空格,这是为什么?
原因及解决方法
问题出在对YAML块标记|4的误解——这是YAML自身的块缩进规则,并非blockinfile模块的indent配置。
|4的作用是告诉YAML解析器:块内容的缩进基准线是第4个空格,块内内容超出这个基准的部分会被保留。你当前的test前面有6个空格,减去基准的4个,最终只会保留2个空格,这就是实际缩进为2的原因。
blockinfile模块的缩进需要通过专门的indent参数配置,正确写法如下:
- name: Add line to netplan file become: true ansible.builtin.blockinfile: path: /etc/netplan/00-installer-config.yaml.REMOVE marker: "" indent: 4 # 这里指定需要的缩进空格数 block: | test
配置后,block内的内容会被自动添加指定的4空格缩进,得到预期结果。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

