cloud-config 的 write_files 可以控制是否在文件中添加换行符吗?

cloud-config 的 write_files 可以控制是否在文件中添加换行符吗?

我想在 AWS 上的用户数据中使用 cloud-config 来写入文件,例如 /etc/myfile。到目前为止,我的实验似乎表明,如果块write_files是用户数据的最后一位,则不会将尾随换行符写入结果文件,而如果后面还有其他配置位,则会将换行符附加到文件中。例如:

#cloud-config
write_files:
  - path: "/etc/myfile"
    permissions: "0444"
    owner: "root"
    content: |
      hello
  - path: "/etc/myfile2"
    permissions: "0444"
    owner: "root"
    content: |
      hello

...将生成两个文件。但它们的内容不同:

[me@ip-172-31-40-207:~]$ cat /etc/myfile
hello
[me@ip-172-31-40-207:~]$ cat /etc/myfile2
hello[me@ip-172-31-40-207:~]$

除了手动确保write_files永远不在底部之外,还有什么方法可以控制是否添加换行符,并且这在任何地方都有记录吗?

答案1

事实证明,这是由管道 ( |) 引起的,再加上我省略了输入中的尾随换行符。因此,解决方案是省略管道,导致两个文件在写入时都没有尾随换行符。

管道表示“保持以下文本块的格式”,cloud-init 可以正确执行此操作,包括换行符。因为我省略了尾随空格(即上例中的最后一个换行符),所以myfile2没有写尾随换行符。

相关内容