Spec-Zone.ru › Ansible 2.5

replace - Замена всех вхождений определённой строки в файле с использованием обратной ссылки на регулярное выражение.

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

  • Описание
  • Параметры
  • Примечания
  • Примеры
  • Статус
    • Автор

Описание

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
after
(добавлен в 2.4)
Если указано, строка после замены/удаления будет начинаться. Может использоваться в сочетании с before. Использует регулярные выражения Python; см. http://docs.python.org/2/library/re.html.
attributes
(добавлен в 2.3)
Значение по умолчанию:
None
Атрибуты файла или каталога. Чтобы получить поддерживаемые флаги, см. страницу руководства для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и при отображении lsattr.

псевдонимы: attr
backup
    Варианты:
  • нет ←
  • да
Создать резервную копию файла, включая информацию о времени создания, чтобы можно было вернуть исходный файл, если он был неправильно перезаписан.
before
(добавлен в 2.4)
Если указано, произойдёт строка перед заменой/удалением. Может использоваться в сочетании с after. Использует регулярные выражения Python; см. http://docs.python.org/2/library/re.html.
encoding
(добавлен в 2.4)
Значение по умолчанию:
utf-8
Кодировка символов для чтения и записи файла.
group Значение по умолчанию:
None
Имя группы, которая должна владеть файлом/каталогом, как это передаётся команде chown.
mode Значение по умолчанию:
None
Режим файла или каталога. Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами (например, 0644 или 01777). Опущение ведущей нули может привести к нежелательным результатам. Начиная с версии 1.8, режим может быть указан в символической форме (например, u+rwx или u=rw,g=r,o=r).
others
Все аргументы, принимаемые модулем file, также работают здесь.
owner Значение по умолчанию:
None
Имя пользователя, который должен владеть файлом/каталогом, как это передаётся команде chown.
path
обязательно
Файл для изменения.
До версии 2.3 этот параметр был доступен только как dest, destfile и name.

псевдонимы: dest, destfile, name
regexp
обязательно
Регулярное выражение для поиска в содержимом файла. Использует регулярные выражения Python; см. http://docs.python.org/2/library/re.html. Использует режим MULTILINE, что означает, что ^ и $ соответствуют началу и концу файла, а также началу и концу соответственно каждой строки файла.
Не использует DOTALL, что означает, что специальный символ . соответствует любому символу кроме символов новой строки. Распространённая ошибка заключается в предположении, что отрицательный набор символов, как [^#], также не будет соответствовать символам новой строки. Для исключения символов новой строки они должны быть добавлены в набор, как [^#\n].
Обратите внимание, что, начиная с Ansible 2, задачи короткой формы должны иметь все escape-последовательности со слэшем обратного слеша, чтобы предотвратить их распознавание как escape-последовательности в строке. См. примеры.
replace
Строка для замены совпадений regexp. Может содержать обратные ссылки, которые будут расширены группами захвата regexp, если regexp совпадает. Если не задано, совпадения удаляются полностью.
selevel Значение по умолчанию:
s0
Часть контекста файла SELinux. Это атрибут MLS/MCS, иногда известный как range. _default функция работает как для seuser.
serole Значение по умолчанию:
None
Часть контекста файла SELinux, _default функция работает как для seuser.
setype Значение по умолчанию:
None
Часть контекста файла SELinux, _default функция работает как для seuser.
seuser Значение по умолчанию:
None
Часть контекста файла SELinux. Будет по умолчанию использоваться системная политика, если применимо. Если установлено значение _default, будет использоваться часть политики user, если она доступна.
unsafe_writes
(добавлен в 2.2)
    Варианты:
  • нет ←
  • да
Обычно этот модуль использует атомарные операции, чтобы предотвратить повреждение данных или несогласованные чтения из целевых файлов, но иногда системы настроены или сломаны таким образом, что это невозможно. Примером являются файлы, смонтированные в Docker; они не могут быть обновлены атомарно и могут быть обновлены только небезопасным способом.
Этот булевый параметр позволяет Ansible использовать небезопасные методы обновления файлов в тех случаях, когда нет другого выбора. Имейте в виду, что это подвержено гонкам и может привести к повреждению данных.
validate Значение по умолчанию:
None
Команда проверки, запускаемая перед копированием в место назначения. Путь к файлу для проверки передаётся через '%s', который должен присутствовать, как показано в примере ниже. Команда передаётся безопасно, поэтому функции оболочки, такие как расширение и каналы, не будут работать.

Примечания

Примечание

  • Начиная с Ansible 2.3, параметр dest был изменён на path по умолчанию, но dest всё ещё работает.
  • Параметр follow был удалён в версии 2.5, так как этот модуль изменяет содержимое файла, поэтому follow=no не имеет смысла.

Примеры

# Before 2.3, option 'dest', 'destfile' or 'name' was used instead of 'path'
- replace:
    path: /etc/hosts
    regexp: '(\s+)old\.host\.name(\s+.*)?$'
    replace: '\1new.host.name\2'
    backup: yes

# Replace after the expression till the end of the file (requires >=2.4)
- replace:
    path: /etc/hosts
    regexp: '(\s+)old\.host\.name(\s+.*)?$'
    replace: '\1new.host.name\2'
    after: 'Start after line.*'
    backup: yes

# Replace before the expression till the begin of the file (requires >=2.4)
- replace:
    path: /etc/hosts
    regexp: '(\s+)old\.host\.name(\s+.*)?$'
    replace: '\1new.host.name\2'
    before: 'Start before line.*'
    backup: yes

# Replace between the expressions (requires >=2.4)
- replace:
    path: /etc/hosts
    regexp: '(\s+)old\.host\.name(\s+.*)?$'
    replace: '\1new.host.name\2'
    after: 'Start after line.*'
    before: 'Start before line.*'
    backup: yes

- replace:
    path: /home/jdoe/.ssh/known_hosts
    regexp: '^old\.host\.name[^\n]*\n'
    owner: jdoe
    group: jdoe
    mode: 0644

- replace:
    path: /etc/apache/ports
    regexp: '^(NameVirtualHost|Listen)\s+80\s*$'
    replace: '\1 127.0.0.1:8080'
    validate: '/usr/sbin/apache2ctl -f %s -t'

- name: short form task (in ansible 2+) necessitates backslash-escaped sequences
  replace: dest=/etc/hosts regexp='\\b(localhost)(\\d*)\\b' replace='\\1\\2.localdomain\\2 \\1\\2'

- name: long form task does not
  replace:
    dest: /etc/hosts
    regexp: '\b(localhost)(\d*)\b'
    replace: '\1\2.localdomain\2 \1\2'

Статус

Этот модуль помечен как stableinterface, что означает, что разработчики этого модуля гарантируют, что не будут вноситься обратные несовместимые изменения в интерфейс.

Автор

  • Evan Kaufman (@EvanK)

Подсказка

Если вы заметите какие-либо проблемы в этом документе, вы можете изменить этот документ, чтобы улучшить его.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/modules/replace_module.html

Spec-Zone.ru

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