Spec-Zone.ru › Ansible 2.4

lineinfile - Убедитесь, что определённая строка есть в файле или замените существующую строку с использованием обратной ссылки на регулярное выражение.

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

Описание

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

Параметры

параметр обязательно значение по умолчанию варианты комментарии
attributes
(добавлен в 2.3)
нет None
Атрибуты, которые должен иметь файл или директория. Чтобы получить поддерживаемые флаги, см. страницу справки для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и в выводе lsattr.
псевдонимы: attr
backrefs
нет нет
  • да
  • нет
Используется с state=present. Если установлено, строка может содержать обратные ссылки (позиционные и именованные), которые будут заполнены, если regexp соответствует. Этот флаг немного изменяет работу модуля; insertbefore и insertafter будут проигнорированы, и если regexp нигде не соответствует в файле, файл останется без изменений. Если regexp соответствует, последняя соответствующая строка будет заменена на параметр расширенной строки.
backup
нет нет
  • да
  • нет
Создать резервную копию файла, включая информацию о времени, чтобы вы могли получить исходный файл, если вы каким-то образом неправильно его перезаписали.
create
нет нет
  • да
  • нет
Используется с state=present. Если указано, файл будет создан, если он ещё не существует. По умолчанию, он завершится неудачей, если файл отсутствует.
group
нет
Имя группы, которая должна владеть файлом/каталогом, как если бы оно было передано в chown.
insertafter
нет EOF
  • EOF
  • *regexp*
Используется с state=present. Если указано, строка будет вставлена после последнего совпадения указанного регулярного выражения. Доступно специальное значение; EOF для вставки строки в конец файла. Если указанное регулярное выражение не имеет совпадений, будет использоваться EOF. Не может использоваться с backrefs.
insertbefore
нет
  • BOF
  • *regexp*
Используется с state=present. Если указано, строка будет вставлена перед последним совпадением указанного регулярного выражения. Доступно значение; BOF для вставки строки в начало файла. Если указанное регулярное выражение не имеет совпадений, строка будет вставлена в конец файла. Не может использоваться с backrefs.
line
нет
Требуется для state=present. Строка для вставки/замены в файле. Если backrefs установлено, она может содержать обратные ссылки, которые будут расширены с помощью regexp групп захвата, если совпадение найдено.
mode
нет
Режим файла или директории. Для тех, кто знаком с /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами (например, 0644). Опускание ведущего нуля, вероятно, приведёт к неожиданным результатам. Начиная с версии 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, шаблон строки(ок) для удаления. Использует регулярные выражения 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
нет present
  • present
  • absent
Нужно ли наличие строки.
unsafe_writes
(добавлен в 2.2)
нет
  • да
  • нет
Обычно этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения из целевых файлов. Иногда системы настраиваются или просто выходят из строя таким образом, что это невозможно. Один пример - файлы, смонтированные в Docker, которые не могут быть обновлены атомарно и могут быть обновлены только небезопасным способом.
Этот логический параметр позволяет Ansible перейти к небезопасным методам обновления файлов в тех случаях, когда у вас нет другого выбора. Помните, что это подвержено гонкам и может привести к повреждению данных.
validate
нет None
Команда валидации, которая выполняется перед копированием в нужное место. Путь к файлу для валидации передаётся через '%s', который должен присутствовать, как показано в примере ниже. Команда передаётся безопасно, поэтому такие функции оболочки, как расширение и конвейеры, не будут работать.

Примеры

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

Примечания

Примечание

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

Статус

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

Информация о техническом обслуживании

Дополнительную информацию о поддержке этого модуля компанией Red Hat см. в knowledge base article<https://access.redhat.com/articles/rhel-top-support-policies>.

Для получения помощи в разработке модулей, если вам это интересно, ознакомьтесь с Информация о сообществе и участие в разработке, Тестирование Ansible и Разработка модулей.

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

Spec-Zone.ru

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