win_lineinfile — Обеспечение наличия определённой строки в файле или замена существующей строки с использованием обратной ссылки на регулярное выражение.
Новая в версии 2.0.
Описание
- Этот модуль ищет строку в файле и гарантирует её присутствие или отсутствие.
- Это в основном полезно, когда нужно изменить только одну строку в файле.
Параметры
| параметр | обязательно | по умолчанию | значения | комментарии |
|---|---|---|---|---|
| backrefs | нет | нет |
| Используется с state=present. Если установлено, строка может содержать обратные ссылки (позиционные и именованные), которые будут заполнены, если regexp соответствует шаблону. Этот флаг немного изменяет работу модуля; insertbefore и insertafter будут игнорироваться, а если regexp не найдено нигде в файле, файл останется без изменений.Если regexp соответствует шаблону, последняя совпавшая строка будет заменена расширенной строкой параметра. |
| backup | нет | нет |
| Создаёт резервную копию файла, включая информацию о дате и времени, позволяя восстановить исходный файл в случае ошибки. |
| create | нет | нет |
| Используется с state=present. Если задано, файл будет создан, если он ещё не существует. По умолчанию операция завершается ошибкой, если файл отсутствует. |
| encoding | нет | auto | Указывает кодировку исходного текстового файла для обработки (а также кодировку вывода). Значение по умолчанию auto позволяет модулю автоматически определить кодировку исходного файла и гарантировать, что изменённый файл будет записан с той же кодировкой.Явную кодировку можно передать в виде строки, являющейся допустимым значением для метода .NET Framework System.Text.Encoding.GetEncoding() — см. https://msdn.microsoft.com/en-us/library/system.text.encoding%28v=vs.110%29.aspx. Это полезно в основном с create=yes если нужно создать новый файл с определённой кодировкой. Если create=yes указано без указания кодировки, будет использоваться кодировка по умолчанию (UTF-8 без BOM). | |
| insertafter | нет | EOF |
| Используется с state=present. Если указано, строка будет вставлена после последнего совпадения указанного регулярного выражения. Доступно специальное значение; EOF для вставки строки в конец файла.Если указанное регулярное выражение не находит совпадений, используется EOF. Не может использоваться с backrefs. |
| insertbefore | нет |
| Используется с state=present. Если указано, строка будет вставлена перед последним совпадением указанного регулярного выражения. Доступно значение BOF для вставки строки в начало файла.Если указанное регулярное выражение не находит совпадений, строка вставляется в конец файла. Не может использоваться с backrefs. | |
| line | нет | Необходима для state=present. Строка для вставки/замены в файле. Если backrefs установлено, может содержать обратные ссылки, которые будут расширены с помощью regexp групп захвата, если regexp совпадает. | ||
| newline | нет | windows |
| Указывает стиль разделителя строк для модифицированного файла. По умолчанию используется разделитель строк для Windows ( \r\n). Обратите внимание, что указанный разделитель строк будет использоваться для вывода файла независимо от исходного разделителя строк, встречающегося во входном файле. |
| path | да | Путь к файлу, который нужно изменить. Обратите внимание, что разделитель путей в Windows \ должен быть экранирован как \\ при использовании строки с двойными кавычками.До версии 2.3 этот параметр был доступен только как dest, destfile и name. псевдонимы: dest, destfile, name | ||
| regexp | нет | Регулярное выражение для поиска в каждой строке файла. Для state=present, шаблон для замены, если найдено; будет заменена только последняя найденная строка. Для state=absent, шаблон строки для удаления. Использует совместимые с .NET регулярные выражения; см. https://msdn.microsoft.com/en-us/library/hs600312%28v=vs.110%29.aspx. | ||
| state | нет | present |
| Указывает, должна ли строка присутствовать или отсутствовать. |
| validate | нет | None | Проверка, выполняемая перед копированием в место назначения. Используйте %s в команде для обозначения текущего файла для проверки. Команда передаётся безопасно, поэтому такие функции оболочки, как расширение и каналы, не будут работать. |
Примеры
# Before 2.3, option 'dest', 'destfile' or 'name' was used instead of 'path'
- win_lineinfile:
path: C:\temp\example.conf
regexp: '^name='
line: 'name=JohnDoe'
- win_lineinfile:
path: C:\temp\example.conf
regexp: '^name='
state: absent
- win_lineinfile:
path: C:\temp\example.conf
regexp: '^127\.0\.0\.1'
line: '127.0.0.1 localhost'
- win_lineinfile:
path: C:\temp\httpd.conf
regexp: '^Listen '
insertafter: '^#Listen '
line: Listen 8080
- win_lineinfile:
path: C:\temp\services
regexp: '^# port for http'
insertbefore: '^www.*80/tcp'
line: '# port for http by default'
# Create file if it doesn't exist with a specific encoding
- win_lineinfile:
path: C:\temp\utf16.txt
create: yes
encoding: utf-16
line: This is a utf-16 encoded file
# Add a line to a file and ensure the resulting file uses unix line separators
- win_lineinfile:
path: C:\temp\testfile.txt
line: Line added to file
newline: unix
# Update a line using backrefs
- win_lineinfile:
path: C:\temp\example.conf
backrefs: yes
regexp: '(^name=)'
line: '$1JohnDoe'
Примечания
Примечание
- Начиная с Ansible 2.3, параметр dest был изменён на path по умолчанию, но dest всё ещё работает.
Статус
Этот модуль помечен как превью, что означает, что его интерфейс не гарантируется как обратной совместимости.
Для получения помощи в разработке модулей, если вам это интересно, пожалуйста, прочитайте Справочную информацию по сообществу и вклад в разработку, Тестирование Ansible и Разработка модулей.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/win_lineinfile_module.html