Я хотел бы использовать облачную конфигурацию в пользовательских данных на 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
никогда не находится внизу, есть ли способ контролировать, добавляется ли новая строка, и документировано ли это где-нибудь?
Оказывается, это была труба (|
), что вызвало это, в сочетании с тем фактом, что я пропустил завершающую новую строку во вводе. Таким образом, решение состоит в том, чтобы опустить канал, в результате чего оба файла будут записаны без конечной новой строки.
Канал означает «поддерживать форматирование следующего блока текста», что cloud-init делает правильно, включая символы новой строки. Поскольку я пропустил конечный пробел (т.е. самую последнюю новую строку в приведенном выше примере), myfile2
был написан без символа новой строки в конце.