Точно так же есть модуль lineinfile
для добавления одной строки в файл, есть ли способ добавить несколько строк?
Я не хочу использовать шаблон, потому что вы должны предоставить весь файл. Я просто хочу добавить что-то в существующий файл, не обязательно зная, что файл уже содержит, поэтому шаблон не вариант.
template
, но использованиеlineinfile
является антипаттерном . Это также сильный красный флаг, который вы «не знаете, что в файле», что приводит к значительному риску неизвестных сбоев.Ответы:
Вы можете использовать цикл, чтобы сделать это. Вот пример использования
with_items
цикла:источник
msg: this module requires key=value arguments
. В приведенном примере это верно - я просто не последовал примеру.Вы можете попробовать использовать
blockinfile
вместо этого.Вы можете сделать что-то вроде
источник
blockinfile
Модуль работает чудесно каждый раз , когда я решил использовать его. Мне особенно нравится интуитивное поведение параметровinsertafter
/insertbefore
.blockinfile
?Если вам нужно настроить набор уникальных строк свойство = значение, я рекомендую более краткий цикл. Например:
Используя диктовку, предложенную Аликс Акселем, и добавляя автоматическое удаление соответствующих закомментированных записей,
источник
Вот бесшумная версия решения, которое должно использовать with_items:
Для каждого элемента, если элемент существует в fruits.txt, никаких действий не предпринимается.
Если элемент не существует, он будет добавлен в конец файла.
Очень просто.
источник
Это не идеально, но вам разрешено несколько звонков
lineinfile
. Используя это сinsert_after
, вы можете получить желаемый результат:источник
Я был в состоянии сделать это с помощью
\n
параметра линии.Это особенно полезно, если файл может быть проверен, и добавление одной строки создает неверный файл.
В моем случае я добавил
AuthorizedKeysCommand
иAuthorizedKeysCommandUser
в sshd_config , используя следующую команду:Добавление только одного из параметров создает файл, который не проходит проверку.
источник
Чтобы добавить несколько строк, вы можете использовать blockfile:
Для добавления одной строки вы можете использовать lininfile:
источник
Чтобы добавить несколько строк, вы можете использовать
lineinfile
модуль сwith_items
включением переменнойvars
здесь, чтобы сделать это просто :)источник