Spec-Zone.ru › Ansible 2.4

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
  • EOF
  • *regex*
Используется с state=present. Если указано, строка будет вставлена после последнего совпадения указанного регулярного выражения. Доступно специальное значение; EOF для вставки строки в конец файла.
Если указанное регулярное выражение не находит совпадений, используется EOF. Не может использоваться с backrefs.
insertbefore
нет
  • BOF
  • *regex*
Используется с state=present. Если указано, строка будет вставлена перед последним совпадением указанного регулярного выражения. Доступно значение BOF для вставки строки в начало файла.
Если указанное регулярное выражение не находит совпадений, строка вставляется в конец файла. Не может использоваться с backrefs.
line
нет
Необходима для state=present. Строка для вставки/замены в файле. Если backrefs установлено, может содержать обратные ссылки, которые будут расширены с помощью regexp групп захвата, если regexp совпадает.
newline
нет windows
  • windows
  • unix
Указывает стиль разделителя строк для модифицированного файла. По умолчанию используется разделитель строк для 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
  • present
  • absent
Указывает, должна ли строка присутствовать или отсутствовать.
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

Spec-Zone.ru

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