Назад | Перейти на главную страницу

Может ли write_files в облачной конфигурации контролировать добавление новой строки к файлу?

Я хотел бы использовать облачную конфигурацию в пользовательских данных на 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 был написан без символа новой строки в конце.