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