win_lineinfile - Обеспечение наличия определённой строки в файле или замена существующей строки с использованием обратной ссылки на регулярное выражение.
Новое в версии 2.0.
Обзор
- Этот модуль ищет строку в файле и гарантирует её присутствие или отсутствие.
- Это в первую очередь полезно, когда требуется изменить только одну строку в файле.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| backrefs |
| Используется с state=present. Если установлено, строка может содержать обратные ссылки (как позиционные, так и именованные), которые будут заполнены, если regexp совпадает. Этот флаг немного изменяет работу модуля; insertbefore и insertafter будут проигнорированы, и если regexp не соответствует нигде в файле, файл останется без изменений.Если regexp совпадает, последняя совпавшая строка будет заменена параметром расширенной строки. |
| backup |
| Создать резервную копию файла, включая информацию о времени создания, чтобы вы могли восстановить исходный файл, если вы его неправильно перезаписали. |
| create |
| Используется с state=present. Если указано, файл будет создан, если он ещё не существует. По умолчанию, если файла нет, произойдёт ошибка. |
| encoding | Значение по умолчанию: авто | Указывает кодировку исходного текстового файла для обработки (и, следовательно, кодировку вывода). По умолчанию 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 |
| Используется с state=present. Если указано, строка будет вставлена после последнего совпадения указанного регулярного выражения. Доступно специальное значение; EOF для вставки строки в конец файла.Если указанное регулярное выражение не имеет совпадений, будет использовано EOF вместо него. Нельзя использовать с backrefs. |
| insertbefore |
| Используется с state=present. Если указано, строка будет вставлена перед последним совпадением указанного регулярного выражения. Доступно значение; BOF для вставки строки в начало файла.Если указанное регулярное выражение не имеет совпадений, строка будет вставлена в конец файла. Нельзя использовать с backrefs. |
| line | Требуется для state=present. Строка для вставки/замены в файле. Если backrefs установлено, может содержать обратные ссылки, которые будут расширены с использованием regexp групп захвата, если regexp совпадает.Обратите внимание, что строка обрабатывается сначала на контроллере и, следовательно, зависит от правил цитирования YAML. Любая строка в двойных кавычках будет иметь управляющие символы, такие как '\r\n', расширенные. Чтобы отобразить такие символы буквально, используйте одинарные кавычки или отсутствие кавычек. | |
| newline |
| Указывает стиль разделителя строк, который следует использовать для изменённого файла. По умолчанию используется разделитель строк 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 |
| Нужно ли, чтобы строка была там или нет. |
| validate | Значение по умолчанию: None | Проверка, выполняемая перед копированием в место назначения. Используйте %s в команде для указания текущего файла для проверки. Команда передаётся безопасно, поэтому такие возможности оболочки, как расширение и конвейеры, не будут работать. |
Примечания
Примечание
- Начиная с Ansible 2.3, параметр dest был изменён на path по умолчанию, но dest по-прежнему работает.
Примеры
# Before 2.3, option 'dest', 'destfile' or 'name' was used instead of 'path'
- name: insert path without converting \r\n
win_lineinfile:
path: c:\file.txt
line: c:\return\new
- 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'
Статус
Этот модуль помечен как превью, что означает, что его интерфейс не гарантируется как обратимо совместимый.
Автор
- Brian Lloyd <brian.d.lloyd@gmail.com>
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/modules/win_lineinfile_module.html