Spec-Zone.ru › Ansible 2.7

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

  • Краткое описание
  • Параметры
  • Примечания
  • Примеры
  • Статус

Краткое описание

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

Параметры

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

псевдонимы: attr
backrefs
boolean
    Варианты:
  • нет ←
  • да
Используется с state=present. Если установлено, line может содержать обратные ссылки (как позиционные, так и именованные), которые будут заполнены, если regexp совпадает. Этот флаг немного изменяет работу модуля; insertbefore и insertafter будут проигнорированы, и если regexp не совпадает нигде в файле, файл останется без изменений. Если regexp совпадает, последняя совпавшая строка будет заменена параметром расширенной строки.
backup
boolean
    Варианты:
  • нет ←
  • да
Создать резервную копию файла, включая информацию о времени создания, чтобы можно было восстановить исходный файл, если он был неправильно изменен.
create
boolean
    Варианты:
  • нет ←
  • да
Используется с state=present. Если указано, файл будет создан, если он еще не существует. По умолчанию, он завершится ошибкой, если файл отсутствует.
firstmatch
boolean
добавлено в 2.5
    Варианты:
  • нет ←
  • да
Используется с insertafter или insertbefore. Если установлено, insertafter и inserbefore находят первую строку с совпадением по регулярному выражению.
group
-
Имя группы, которая должна владеть файлом/директорией, как это передается в chown.
insertafter
-
    Варианты:
  • EOF ←
  • *regex*
Используется с state=present. Если указано, строка будет вставлена после последнего совпадения указанного регулярного выражения. Если требуется первое совпадение, используйте (firstmatch=yes). Доступно специальное значение; EOF для вставки строки в конец файла. Если указанное регулярное выражение не имеет совпадений, используется EOF вместо. Если регулярные выражения переданы как regexp и insertafter, insertafter учитывается только в случае, если не найдено совпадений для regexp. Не может быть использовано с backrefs.
insertbefore
-
    Варианты:
  • BOF
  • *regex*
Используется с state=present. Если указано, строка будет вставлена перед последним совпадением указанного регулярного выражения. Если требуется первое совпадение, используйте (firstmatch=yes). Доступно значение BOF для вставки строки в начало файла. Если указанное регулярное выражение не имеет совпадений, строка будет вставлена в конец файла. Если регулярные выражения переданы как regexp и insertbefore, insertbefore учитывается только в случае, если не найдено совпадений для regexp. Не может быть использовано с backrefs.
line
-
Требуется для state=present. Строка для вставки/замены в файле. Если backrefs установлено, может содержать обратные ссылки, которые будут расширены с группами захвата regexp, если regexp совпадает.
mode
-
Режим файла или директории. Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущий ноль, чтобы парсер YAML Ansible знал, что это восьмеричное число (например, 0644 или 01777), либо заключить его в кавычки (например, '644' или '1777'), чтобы 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.

псевдонимы: regex
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
boolean
добавлено в 2.2
    Варианты:
  • нет ←
  • да
По умолчанию этот модуль использует атомарные операции, чтобы предотвратить повреждение данных или несогласованные чтения из целевых файлов, но иногда системы настроены или просто неисправны в способах, которые препятствуют этому. Одним примером являются файлы, смонтированные в Docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом.
Этот параметр позволяет Ansible перейти к небезопасным методам обновления файлов, когда атомарные операции терпят неудачу (однако он не заставляет 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'

# Searches for a line that begins with 127.0.0.1 and replaces it with the value of the 'line' parameter
- 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. [ядро]

Поддержка Red Hat

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

Spec-Zone.ru

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