Spec-Zone.ru › Ansible 2.7

win_lineinfile – Гарантировать наличие определённой строки в файле или заменить существующую строку с использованием обратной ссылки в регулярном выражении

Новое в версии 2.0.

  • Обзор
  • Параметры
  • Примечания
  • Примеры
  • Статус

Обзор

  • Этот модуль ищет строку в файле и гарантирует, что она присутствует или отсутствует.
  • Это в первую очередь полезно, когда вы хотите изменить только одну строку в файле.

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
backrefs
boolean
    Варианты:
  • нет ←
  • да
Используется с state=present. Если установлено, строка может содержать обратные ссылки (позиционные и именованные), которые будут заполнены, если regexp совпадает. Этот флаг немного изменяет работу модуля; insertbefore и insertafter будут проигнорированы, и если regexp нигде в файле не совпадает, файл останется без изменений.
Если regexp совпадает, последняя совпавшая строка будет заменена параметром расширенной строки.
backup
boolean
    Варианты:
  • нет ←
  • да
Создать резервную копию файла, включая информацию о дате и времени, чтобы вы могли восстановить исходный файл, если вы неправильно его испортили.
create
boolean
    Варианты:
  • нет ←
  • да
Используется с 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 ←
  • *regex*
Используется с state=present. Если указано, строка будет вставлена после последнего совпадения указанного регулярного выражения. Доступно специальное значение; EOF для вставки строки в конец файла.
Если у указанного регулярного выражения нет совпадений, вместо него будет использоваться EOF. Не может использоваться с backrefs.
insertbefore
-
    Варианты:
  • BOF
  • *regex*
Используется с state=present. Если указано, строка будет вставлена перед последним совпадением указанного регулярного выражения. Доступно значение; BOF для вставки строки в начало файла.
Если у указанного регулярного выражения нет совпадений, строка будет вставлена в конец файла. Не может использоваться с backrefs.
line
-
Требуется для state=present. Строка для вставки/замены в файле. Если backrefs установлено, может содержать обратные ссылки, которые будут расширены с помощью regexp группами захвата, если regexp совпадает.
Обратите внимание, что строка обрабатывается сначала на контроллере и, следовательно, зависит от правил цитирования yaml. Любая строка в двойных кавычках будет иметь управляющие символы, такие как '\r\n', расширенные. Чтобы отобразить такие символы буквально, используйте одинарные кавычки или вообще без кавычек.
newline
-
    Варианты:
  • unix
  • windows ←
Указывает стиль разделителя строк, который следует использовать для изменённого файла. По умолчанию используется разделитель строк Windows (\r\n). Обратите внимание, что указанный разделитель строк будет использоваться для вывода файла независимо от исходного разделителя строк, который появляется в входном файле.
path
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. [community]

Авторы

  • 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.7/modules/win_lineinfile_module.html

Spec-Zone.ru

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