You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:20:37