Spec-Zone.ru › Ansible 2.8

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

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

  • Обзор
  • Параметры
  • Примечания
  • См. также
  • Примеры
  • Возвращаемые значения
  • Статус

Обзор

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

Параметры

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

См. также

См. также

assemble – Сборка файлов конфигурации из фрагментов
Официальная документация модуля assemble.
lineinfile – Управление строками в текстовых файлах
Официальная документация модуля lineinfile.

Примеры

# Before Ansible 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'

- name: 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

- name: 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

- name: Update a line using backrefs
  win_lineinfile:
    path: C:\Temp\example.conf
    backrefs: yes
    regexp: '(^name=)'
    line: '$1JohnDoe'

Возвращаемые значения

Общие возвращаемые значения описаны в здесь, следующие поля уникальны для этого модуля:

Ключ Возвращаемое значение Описание
backup
строка
если backup=да
Имя резервного файла, который был создан.
Это устарело, используйте backup_file вместо этого.

Пример:
C:\Путь\К\Файлу.txt.11540.20150212-220915.bak
backup_file
строка
если backup=да
Имя резервного файла, который был создан.

Пример:
C:\Путь\К\Файлу.txt.11540.20150212-220915.bak


Статус

  • Для этого модуля не гарантируется обратная совместимость интерфейса. [превью]
  • Этот модуль поддерживается сообществом 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.8/modules/win_lineinfile_module.html

Spec-Zone.ru

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