Amazon-Web-Services

cloud-config 的 write_files 可以控製文件是否附加換行符嗎?

  • February 3, 2016

我想在 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永遠不會在底部之外,有沒有辦法控制是否添加換行符,這是否記錄在任何地方?

結果是管道 ( |) 導致了它,再加上我在輸入中省略了尾隨換行符這一事實。所以解決方案是省略管道,導致兩個文件都被寫入而沒有尾隨換行符。

管道的意思是“維護以下文本塊的格式”,cloud-init 正確地做到了這一點,包括換行符。因為我省略了尾隨空格(即上例中的最後一個換行符),所以myfile2沒有尾隨換行符。

引用自:https://serverfault.com/questions/753709