Spec-Zone.ru › Ansible 2.8

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

  • Описание
  • Параметры
  • Примечания
  • См. также
  • Примеры
  • Статус

Описание

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

Параметры

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

псевдонимы: attr
backrefs
логическое значение
    Варианты:
  • нет ←
  • да
Используется с state=present.
Если установлено, line может содержать обратные ссылки (позиционные и именованные), которые будут заполнены, если regexp соответствует.
Этот параметр немного изменяет работу модуля; insertbefore и insertafter будут проигнорированы, и если regexp не соответствует нигде в файле, файл останется без изменений.
Если regexp соответствует, последняя соответствующая строка будет заменена параметром расширенной строки.
backup
логическое значение
    Варианты:
  • нет ←
  • да
Создать резервный файл, включая информацию о времени создания, чтобы вы могли получить исходный файл, если вы каким-то образом неправильно его испортили.
create
логическое значение
    Варианты:
  • нет ←
  • да
Используется с state=present.
Если указано, файл будет создан, если он еще не существует.
По умолчанию он завершится ошибкой, если файла нет.
firstmatch
логическое значение
добавлен в 2.5
    Варианты:
  • нет ←
  • да
Используется с insertafter или insertbefore.
Если установлено, insertafter и insertbefore находят первую строку с совпадениями регулярного выражения.
group
строка
Имя группы, которой должен принадлежать файл/каталог, как передается в chown.
insertafter
строка
    Варианты:
  • КОНЕЦ ФАЙЛА ←
  • *регулярное выражение*
Используется с state=present.
Если указано, строка будет вставлена после последнего совпадения указанного регулярного выражения.
Если требуется первое совпадение, используйте (firstmatch=да).
Доступно специальное значение; EOF для вставки строки в конец файла.
Если указанное регулярное выражение не находит совпадений, используется КОНЕЦ ФАЙЛА вместо него.
Если insertbefore установлено, значение по умолчанию EOF будет проигнорировано.
Если регулярные выражения передаются как для regexp, так и для insertafter, insertafter учитывается только если не найдено совпадение для regexp.
Не может быть использовано с backrefs или insertbefore.
insertbefore
строка
    Варианты:
  • НАЧАЛО ФАЙЛА
  • *регулярное выражение*
Используется с state=present.
Если указано, строка будет вставлена перед последним совпадением указанного регулярного выражения.
Если требуется первое совпадение, используйте firstmatch=yes.
Доступно значение; BOF для вставки строки в начало файла.
Если указанное регулярное выражение не находит совпадений, строка будет вставлена в конец файла.
Если регулярные выражения передаются как для regexp, так и для insertbefore, insertbefore учитывается только если не найдено совпадение для regexp.
Не может быть использовано с backrefs или insertafter.
line
строка
Строка для вставки/замены в файле.
Требуется для state=present.
Если backrefs установлено, может содержать обратные ссылки, которые будут расширены с помощью regexp групп захвата, если регулярное выражение соответствует.

псевдонимы: значение
mode
строка
Разрешения, которые должен иметь полученный файл или каталог.
Для тех, кто привык к /usr/bin/chmod помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую ноль, чтобы Ansible's YAML-парсер знал, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '1777') , чтобы Ansible получил строку и смог выполнить свое собственное преобразование из строки в число.
Предоставление Ansible числа без соблюдения одного из этих правил приведет к десятичному числу, что даст неожиданные результаты.
Начиная с Ansible 1.8, режим может быть указан как символьный режим (например, u+rwx или u=rw,g=r,o=r).
others
строка
Все аргументы, принимаемые модулем file, также работают здесь.
owner
строка
Имя пользователя, которому должен принадлежать файл/каталог, как передается в chown.
path
путь / обязательно
Файл, который необходимо изменить.
До Ansible 2.3 этот параметр был доступен только как dest, destfile и name.

псевдонимы: dest, destfile, name
regexp
строка
Регулярное выражение, которое необходимо найти в каждой строке файла.
Для state=present, шаблон для замены, если найден. Только последняя найденная строка будет заменена.
Для state=absent, шаблон строки(строк) для удаления.
Если регулярное выражение не найдено, строка будет добавлена в файл в соответствии с настройками insertbefore или insertafter.
При изменении строки регулярное выражение должно, как правило, соответствовать как начальному состоянию строки, так и ее состоянию после замены line, чтобы гарантировать идемпотентность.
Использует регулярные выражения Python. См. http://docs.python.org/2/library/re.html.

псевдонимы: regex
selevel
строка
По умолчанию:
"s0"
Часть уровня SELinux контекста файла.
Это атрибут MLS/MCS, иногда известный как range.
Если установлено значение _default, будет использоваться часть политики level, если она доступна.
serole
строка
Часть роли контекста файла SELinux.
Если установлено значение _default, будет использоваться часть политики role, если она доступна.
setype
строка
Часть типа контекста файла SELinux.
Если установлено значение _default, будет использоваться часть политики type, если она доступна.
seuser
строка
Часть пользователя контекста файла SELinux.
По умолчанию используется политика system, где это возможно.
Если установлено значение _default, будет использоваться часть политики user, если она доступна.
state
строка
    Варианты:
  • отсутствует
  • присутствует ←
Строка должна присутствовать или отсутствовать.
unsafe_writes
логическое значение
добавлен в 2.2
    Варианты:
  • нет ←
  • да
Влияет на то, когда использовать атомную операцию, чтобы предотвратить повреждение данных или несогласованные чтения из целевого файла.
По умолчанию этот модуль использует атомные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто сломаны таким образом, что это невозможно. Одним примером являются файлы, смонтированные в docker, которые не могут обновляться атомно изнутри контейнера и могут быть записаны только не безопасным способом.
Этот параметр позволяет Ansible перейти к небезопасным методам обновления файлов, когда атомные операции завершаются ошибкой (однако это не заставляет Ansible выполнять небезопасные записи).
ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных.
validate
string
Команда валидации, которая выполняется перед копированием в указанное место.
Путь к файлу для валидации передаётся через «%s», который должен быть указан, как в приведённых ниже примерах.
Команда передаётся безопасно, поэтому такие возможности оболочки, как расширение и использование конвейеров, не будут работать.

Примечания

Примечание

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

См. также

См. также

blockinfile – Вставка/обновление/удаление текстового блока, окружённого маркерами строк
Официальная документация модуля blockinfile.
copy – Копирование файлов на удалённые места
Официальная документация модуля copy.
file – Управление файлами и свойствами файлов
Официальная документация модуля file.
replace – Замена всех вхождений определённой строки в файле с использованием обратной ссылки на регулярное выражение
Официальная документация модуля replace.
template – Шаблонизация файла для удалённого сервера
Официальная документация модуля template.
win_lineinfile – Гарантирование наличия определённой строки в файле или замена существующей строки с использованием обратной ссылки на регулярное выражение
Официальная документация модуля win_lineinfile.

Примеры

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

- name: Make sure group wheel is not in the sudoers configuration
  lineinfile:
    path: /etc/sudoers
    state: absent
    regexp: '^%wheel'

- name: Replace a localhost entry with our own
  lineinfile:
    path: /etc/hosts
    regexp: '^127\.0\.0\.1'
    line: 127.0.0.1 localhost
    owner: root
    group: root
    mode: '0644'

- name: Ensure the default Apache port is 8080
  lineinfile:
    path: /etc/httpd/conf/httpd.conf
    regexp: '^Listen '
    insertafter: '^#Listen '
    line: Listen 8080

- name: Ensure we have our own comment added to /etc/services
  lineinfile:
    path: /etc/services
    regexp: '^# port for http'
    insertbefore: '^www.*80/tcp'
    line: '# port for http by default'

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

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

# NOTE: Fully quoted because of the ': ' on the line. See the Gotchas in the YAML docs.
- name: 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]

Поддержка 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.8/modules/lineinfile_module.html

Spec-Zone.ru

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