Spec-Zone.ru › Ansible 2.5

lineinfile — Управление строками в текстовых файлах

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

Описание

  • Этот модуль гарантирует наличие определённой строки в файле или заменяет существующую строку с использованием обратной ссылки в регулярном выражении.
  • Этот модуль в первую очередь полезен при необходимости изменения только одной строки в файле. Обратитесь к модулю replace, если нужно изменить несколько похожих строк, или проверьте модуль blockinfile, если требуется вставка/обновление/удаление блока строк в файле. В других случаях используйте модули copy или template.

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
attributes
(добавлен в 2.3)
Значение по умолчанию:
None
Атрибуты файла или каталога. Для получения поддерживаемых флагов обратитесь к странице справки chattr для целевой системы. Эта строка должна содержать атрибуты в том же порядке, что и в выводе lsattr.

Псевдонимы: attr
backrefs
    Варианты:
  • нет ←
  • да
Используется с state=present. Если установлено, строка может содержать обратные ссылки (как позиционные, так и именованные), которые будут заполнены, если regexp соответствует. Этот флаг немного изменяет работу модуля; insertbefore и insertafter будут проигнорированы, а если regexp не найдено ни в одной строке файла, файл останется без изменений. Если regexp найдено, последняя соответствующая строка будет заменена расширенной строкой-параметром.
backup
    Варианты:
  • нет ←
  • да
Создаёт резервную копию файла, включая информацию о времени, чтобы вы могли вернуть исходный файл, если его каким-то образом повредили.
create
    Варианты:
  • нет ←
  • да
Используется с state=present. Если указано, файл будет создан, если он не существует. По умолчанию это приведёт к ошибке, если файл отсутствует.
firstmatch
(добавлен в 2.5)
    Варианты:
  • нет ←
  • да
Используется с insertafter или insertbefore. Если установлено, insertafter и inserbefore находят первую строку, соответствующую регулярному выражению.
group Значение по умолчанию:
None
Имя группы, которая должна владеть файлом/каталогом (как передаётся в chown).
insertafter
    Варианты:
  • КОНЕЦ ←
  • *regex*
Используется с state=present. Если указано, строка будет вставлена после последнего совпадения указанного регулярного выражения. Если требуется первое совпадение, используйте (firstmatch=yes). Доступно специальное значение; EOF для вставки строки в конец файла. Если указанное регулярное выражение не находит совпадений, вместо него используется КОНЕЦ. Не может использоваться с backrefs.
insertbefore
    Варианты:
  • НАЧАЛО
  • *regex*
Используется с state=present. Если указано, строка будет вставлена перед последним совпадением указанного регулярного выражения. Если требуется первое совпадение, используйте (firstmatch=yes). Доступно значение; BOF для вставки строки в начало файла. Если указанное регулярное выражение не находит совпадений, строка будет вставлена в конец файла. Не может использоваться с backrefs.
line
Требуется для state=present. Строка для вставки/замены в файле. Если backrefs установлено, может содержать обратные ссылки, которые будут расширены с помощью regexp групп захвата, если regexp совпадает.
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
(добавлен в 1.7)
Регулярное выражение для поиска во всех строках файла. Для state=present, шаблон для замены, если найдено. Будет заменена только последняя найденная строка. Для state=absent, шаблон строки(ок) для удаления. Используются регулярные выражения Python. См. http://docs.python.org/2/library/re.html.
selevel Значение по умолчанию:
s0
Часть контекста файла SELinux. Это атрибут MLS/MCS, иногда известный как range. Функция _default работает так же, как и для seuser.
serole Значение по умолчанию:
None
Роль в контексте файла SELinux, функция _default работает так же, как и для seuser.
setype Значение по умолчанию:
None
Тип в контексте файла SELinux, функция _default работает так же, как и для seuser.
seuser Значение по умолчанию:
None
Пользователь в контексте файла SELinux. По умолчанию используется политика системы, если применимо. Если установлено _default, используется часть политики user, если доступна.
state
    Варианты:
  • отсутствует
  • наличие ←
Требуется ли строка в файле или нет.
unsafe_writes
(добавлен в 2.2)
    Варианты:
  • нет ←
  • да
Обычно этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов. Иногда системы настроены или просто сломаны таким образом, что это не возможно. Один из примеров — файлы, смонтированные с помощью Docker; они не могут быть обновлены атомарно и могут быть обновлены только небезопасным способом.
Этот булевый параметр позволяет Ansible перейти к небезопасным методам обновления файлов в тех случаях, когда у вас нет другого выбора. Помните, что это подвержено гонкам и может привести к повреждению данных.
validate Значение по умолчанию:
None
Команда проверки, выполняемая перед копированием в целевое место. Путь к файлу для проверки передаётся через «%s», который должен быть указан, как в примере ниже. Команда передаётся безопасно, поэтому такие shell-функции, как расширение и конвейеры, не будут работать.

Примечания

Примечание

  • Начиная с Ansible 2.3, параметр dest по умолчанию изменён на path, но dest также по-прежнему работает.

Примеры

# Before 2.3, option 'dest', 'destfile' or 'name' was used instead of 'path'
- lineinfile:
    path: /etc/selinux/config
    regexp: '^SELINUX='
    line: 'SELINUX=enforcing'

- lineinfile:
    path: /etc/sudoers
    state: absent
    regexp: '^%wheel'

- lineinfile:
    path: /etc/hosts
    regexp: '^127\.0\.0\.1'
    line: '127.0.0.1 localhost'
    owner: root
    group: root
    mode: 0644

- lineinfile:
    path: /etc/httpd/conf/httpd.conf
    regexp: '^Listen '
    insertafter: '^#Listen '
    line: 'Listen 8080'

- lineinfile:
    path: /etc/services
    regexp: '^# port for http'
    insertbefore: '^www.*80/tcp'
    line: '# port for http by default'

# Add a line to a file if it does not exist, without passing regexp
- lineinfile:
    path: /tmp/testfile
    line: '192.168.1.99 foo.lab.net foo'

# Fully quoted because of the ': ' on the line. See the Gotchas in the YAML docs.
- lineinfile:
    path: /etc/sudoers
    state: present
    regexp: '^%wheel\s'
    line: '%wheel ALL=(ALL) NOPASSWD: ALL'

# Yaml requires escaping backslashes in double quotes but not in single quotes
- lineinfile:
    path: /opt/jboss-as/bin/standalone.conf
    regexp: '^(.*)Xms(\\d+)m(.*)$'
    line: '\1Xms${xms}m\3'
    backrefs: yes

# Validate the sudoers file before saving
- lineinfile:
    path: /etc/sudoers
    state: present
    regexp: '^%ADMIN ALL='
    line: '%ADMIN ALL=(ALL) NOPASSWD: ALL'
    validate: '/usr/sbin/visudo -cf %s'

Статус

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

Поддержка

Для получения дополнительной информации о поддержке этого модуля Red Hat, обратитесь к этой статье базы знаний

Автор

  • Daniel Hokka Zakrissoni (@dhozac)
  • Ahti Kitsik (@ahtik)

Подсказка

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

© 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/lineinfile_module.html

Spec-Zone.ru

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