Spec-Zone.ru › Ansible 2.6

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
    Варианты:
  • КОНЕЦ_ФАЙЛА ←
  • *regex*
Используется с state=present. Если указано, строка будет вставлена после последнего совпадения указанного регулярного выражения. Доступно специальное значение; EOF для вставки строки в конец файла.
Если указанное регулярное выражение не находит совпадений, используется КОНЕЦ_ФАЙЛА вместо него. Нельзя использовать с backrefs.
insertbefore
    Варианты:
  • НАЧАЛО_ФАЙЛА
  • *regex*
Используется с state=present. Если указано, строка будет вставлена перед последним совпадением указанного регулярного выражения. Доступно значение; BOF для вставки строки в начало файла.
Если указанное регулярное выражение не находит совпадений, строка будет вставлена в конец файла. Нельзя использовать с backrefs.
line
Обязательно для state=present. Строка для вставки/замены в файле. Если backrefs установлено, она может содержать обратные ссылки, которые будут расширены с помощью regexp групп захвата, если регулярное выражение совпадает.
Обратите внимание, что строка обрабатывается в контроллере и, следовательно, зависит от правил цитирования YAML. Любая строка в двойных кавычках будет иметь управляющие символы, такие как '\r\n', расширенные. Чтобы отобразить такие символы буквально, используйте одинарные кавычки или не используйте кавычки.
newline
    Варианты:
  • unix
  • 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
    Варианты:
  • absent
  • present ←
Необходимо ли, чтобы строка присутствовала или отсутствовала.
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API