我想在 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
没有写尾随换行符。