Spec-Zone.ru › Ansible 2.10

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

Примечание

Этот модуль входит в состав ansible-base и включён во все установки Ansible. В большинстве случаев, вы можете использовать короткое имя модуля lineinfile, даже не указывая collections: ключевое слово. Тем не менее, мы рекомендуем использовать полное имя класса (FQCN) для удобной ссылки на документацию модуля и избежания конфликтов с другими коллекциями, которые могут иметь то же имя модуля.

Новое в версии 0.7: of ansible.builtin

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

Описание

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

Параметры

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

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

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

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

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

Примечания

Примечание

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

См. также

См. также

ansible.builtin.blockinfile

Официальная документация по модулю ansible.builtin.blockinfile.

ansible.builtin.copy

Официальная документация по модулю ansible.builtin.copy.

ansible.builtin.file

Официальная документация по модулю ansible.builtin.file.

ansible.builtin.replace

Официальная документация по модулю ansible.builtin.replace.

ansible.builtin.template

Официальная документация по модулю ansible.builtin.template.

community.windows.win_lineinfile

Официальная документация по модулю community.windows.win_lineinfile.

Примеры

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

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

- name: Replace a localhost entry with our own
  ansible.builtin.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
  ansible.builtin.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
  ansible.builtin.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
  ansible.builtin.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
  ansible.builtin.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
  ansible.builtin.lineinfile:
    path: /etc/sudoers
    state: present
    regexp: '^%ADMIN ALL='
    line: '%ADMIN ALL=(ALL) NOPASSWD: ALL'
    validate: /usr/sbin/visudo -cf %s

# See https://docs.python.org/3/library/re.html for further details on syntax
- name: Use backrefs with alternative group syntax to avoid conflicts with variable values
  ansible.builtin.lineinfile:
    path: /tmp/config
    regexp: ^(host=).*
    line: \g<1>{{ hostname }}
    backrefs: yes

Авторы

  • 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.10/collections/ansible/builtin/lineinfile_module.html

Spec-Zone.ru

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