Может ли write_files из cloud-config контролировать, будет ли добавлена новая строка в файл?
Я хотел бы использовать cloud-config в пользовательских данных на AWS для записи файла, скажем /etc/myfile. Мои эксперименты до сих пор показывают, что если write_files
block - это последний бит пользовательских данных, после чего в результирующий файл не записывается завершающий символ новой строки, тогда как, если после него есть другие биты конфигурации, то к файлу добавляется символ новой строки. Например:
#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
был написан без завершающей строки.