Spec-Zone.ru › Ansible 2.6

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

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

Описание

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

Параметры

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

псевдонимы: attr
backrefs
bool
    Варианты:
  • no ←
  • yes
Используется с state=present. Если установлено, line может содержать обратные ссылки (как позиционные, так и именованные), которые будут заполнены, если regexp соответствует шаблону. Этот флаг немного изменяет работу модуля; insertbefore и insertafter будут проигнорированы, и если regexp нигде в файле не соответствует шаблону, файл останется без изменений. Если regexp соответствует шаблону, последняя соответствующая строка будет заменена расширенной строкой-параметром.
backup
bool
    Варианты:
  • no ←
  • yes
Создаёт резервную копию файла, включая информацию о времени, чтобы вы могли восстановить исходный файл, если вы неправильно его перезаписали.
create
bool
    Варианты:
  • no ←
  • yes
Используется с state=present. Если указано, файл будет создан, если он ещё не существует. По умолчанию, если файла нет, произойдёт ошибка.
firstmatch
bool

(добавлено в 2.5)
    Варианты:
  • no ←
  • yes
Используется с insertafter или insertbefore. Если установлено, insertafter и inserbefore находят первую строку, соответствующую регулярному выражению.
group
Имя группы, которая должна владеть файлом/директорией, так же как и при использовании chown.
insertafter
    Варианты:
  • EOF ←
  • *regexp*
Используется с state=present. Если указано, строка будет вставлена после последнего совпадения указанного регулярного выражения. Если требуется первое совпадение, используйте (firstmatch=yes). Доступно специальное значение; EOF для вставки строки в конец файла. Если указанное регулярное выражение не имеет совпадений, будет использовано EOF. Нельзя использовать с backrefs.
insertbefore
    Варианты:
  • BOF
  • *regexp*
Используется с state=present. Если указано, строка будет вставлена перед последним совпадением указанного регулярного выражения. Если требуется первое совпадение, используйте (firstmatch=yes). Доступно значение BOF для вставки строки в начало файла. Если указанное регулярное выражение не имеет совпадений, строка будет вставлена в конец файла. Нельзя использовать с backrefs.
line
Обязательно для state=present. Строка для вставки/замены в файле. Если backrefs установлено, может содержать обратные ссылки, которые будут расширены с помощью regexp групп захвата, если регулярное выражение соответствует.
mode
Режим файла или директории. Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны указать ведущий ноль, чтобы Ansible's YAML-парсер знал, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '0644'), чтобы Ansible получил строку и выполнил преобразование из строки в число. Если вы передадите Ansible число без этих правил, он будет воспринимать его как десятичное, что приведёт к неожиданным результатам. С версии 1.8, режим может быть указан в символической форме (например, u+rwx или u=rw,g=r,o=r).
others
Все аргументы, принимаемые модулем file, также работают здесь.
owner
Имя пользователя, который должен владеть файлом/директорией, так же как и при использовании chown.
path
обязательно
Файл для изменения.
До версии 2.3 этот параметр был доступен только как dest, destfile и name.

псевдонимы: dest, destfile, name
regexp
(добавлено в 1.7)
Регулярное выражение для поиска в каждой строке файла.
Для state=present, шаблон для замены, если найдено. Будет заменена только последняя найденная строка.
Для state=absent, шаблон строки(ок) для удаления.
Если регулярное выражение не найдено, строка будет добавлена в файл в соответствии с настройками `insertbefore` или `insertafter`.
При изменении строки регулярное выражение должно обычно соответствовать как начальному состоянию строки, так и её состоянию после замены line, чтобы обеспечить идемпотентность.
Использует регулярные выражения Python. См. http://docs.python.org/2/library/re.html.
selevel По умолчанию:
"s0"
Часть контекста файла SELinux. Это атрибут MLS/MCS, иногда известный как range. Функциональность _default работает так же, как для seuser.
serole
Часть контекста файла SELinux, роль. Функциональность _default работает так же, как для seuser.
setype
Часть контекста файла SELinux, тип. Функциональность _default работает так же, как для seuser.
seuser
Часть контекста файла SELinux, пользователь. Будет по умолчанию использовать политику системы, если применимо. Если установлено значение _default, будет использоваться часть политики user, если она доступна.
state
    Варианты:
  • absent
  • present ←
Нужно ли, чтобы строка присутствовала или нет.
unsafe_writes
bool

(добавлено в 2.2)
    Варианты:
  • no ←
  • yes
Обычно этот модуль использует атомарные операции, чтобы предотвратить повреждение данных или несовместимые чтения из целевых файлов. Иногда системы настроены или просто неисправны таким образом, что это невозможно. Один пример — файлы, смонтированные через Docker; их нельзя обновлять атомарно и можно обновлять только небезопасным способом.
Этот булевый параметр позволяет Ansible использовать небезопасные методы обновления файлов в тех случаях, когда нет другого выбора. Имейте в виду, что это подвержено проблемам гонки и может привести к повреждению данных.
validate
Команда проверки, выполняемая перед копированием в место назначения. Путь к файлу, подлежащему проверке, передаётся через '%s', что должно быть указано, как в примере ниже. Команда передаётся безопасно, поэтому функции оболочки, такие как расширение и конвейеры, не будут работать.

Примечания

Примечание

  • Начиная с 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 the file does not exist, without passing regexp
- lineinfile:
    path: /tmp/testfile
    line: '192.168.1.99 foo.lab.net foo'
    create: yes

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

Статус

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

Техническое обслуживание

Этот модуль помечен как ядерный, что означает, что он поддерживается командой Ansible Core. См. Техническое обслуживание и поддержка модулей для получения дополнительной информации.

Список других модулей, поддерживаемых командой Ansible Core, см. здесь.

Поддержка

Дополнительную информацию о поддержке этого модуля компанией 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.6/modules/lineinfile_module.html

Spec-Zone.ru

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