win_lineinfile - Обеспечение наличия определённой строки в файле или замена существующей строки с использованием обратной ссылки на регулярное выражение
Новое в версии 2.0.
Описание
- Этот модуль ищет строку в файле и гарантирует, что она присутствует или отсутствует.
- Это прежде всего полезно, когда необходимо изменить только одну строку в файле.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| backrefs bool |
| Используется с state=present. Если установлено, строка может содержать обратные ссылки (позиционные и именованные), которые будут заполнены, если regexp совпадает. Этот флаг немного изменяет работу модуля; insertbefore и insertafter будут проигнорированы, и если regexp не совпадёт нигде в файле, файл останется неизменным.Если regexp совпадает, последняя совпавшая строка будет заменена расширенным параметром строки. |
| backup bool |
| Создаёт резервную копию файла, включая информацию о времени создания, чтобы вы могли восстановить исходный файл, если его неправильно перезаписали. |
| create bool |
| Используется с 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 |
| Используется с state=present. Если указано, строка будет вставлена после последнего совпадения указанного регулярного выражения. Доступно специальное значение; EOF для вставки строки в конец файла.Если указанное регулярное выражение не находит совпадений, используется КОНЕЦ_ФАЙЛА вместо него. Нельзя использовать с backrefs. |
| insertbefore |
| Используется с state=present. Если указано, строка будет вставлена перед последним совпадением указанного регулярного выражения. Доступно значение; BOF для вставки строки в начало файла.Если указанное регулярное выражение не находит совпадений, строка будет вставлена в конец файла. Нельзя использовать с backrefs. |
| line | Обязательно для state=present. Строка для вставки/замены в файле. Если backrefs установлено, она может содержать обратные ссылки, которые будут расширены с помощью 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 | Проверка, выполняемая перед копированием в место назначения. Используйте %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'
Статус
Этот модуль помечен как предварительный просмотр, что означает, что он не гарантирует обратную совместимость интерфейса.
Техническое обслуживание
Этот модуль помечен как сообщество, что означает, что он поддерживается сообществом Ansible. См. Техническое обслуживание и поддержка модулей для получения дополнительной информации.
Список других модулей, также поддерживаемых сообществом Ansible, см. на этой странице.
Автор
- Brian Lloyd (@brianlloyd)
Подсказка
Если вы заметите какие-либо проблемы в этом документе, вы можете изменить этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/modules/win_lineinfile_module.html