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