Может ли 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 был написан без завершающей строки.

Другие вопросы по тегам