blockinfile – Вставка/обновление/удаление текстового блока, окружённого метками
Новая в версии 2.0.
Обзор
- Этот модуль вставляет/обновляет/удаляет блок многострочного текста, окружённый настраиваемыми метками.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes - добавлен в 2.3 | Атрибуты файла или каталога. Для получения поддерживаемых флагов обратитесь к справочной странице chattr для целевой системы. Эта строка должна содержать атрибуты в том же порядке, что и в выводе lsattr. = предполагается по умолчанию, в противном случае + или - операторы должны быть включены в строку.псевдонимы: attr | |
| backup boolean |
| Создать резервную копию файла, включая информацию о времени, чтобы вы могли восстановить исходный файл, если вы неправильно его перезаписали. |
| block - | Значение по умолчанию: "" | Текст для вставки между метками. Если он отсутствует или пустой, блок будет удален, как если бы state был указан для absent. псевдонимы: content |
| create boolean |
| Создать новый файл, если он не существует. |
| group - | Имя группы, которая должна владеть файлом/каталогом, как передаётся команде chown. | |
| insertafter - |
| Если указано, блок будет вставлен после последнего совпадения указанного регулярного выражения. Доступно специальное значение; EOF для вставки блока в конец файла. Если указанное регулярное выражение не находит совпадений, EOF будет использоваться вместо него. |
| insertbefore - |
| Если указано, блок будет вставлен перед последним совпадением указанного регулярного выражения. Доступно специальное значение; BOF для вставки блока в начало файла. Если указанное регулярное выражение не находит совпадений, блок будет вставлен в конец файла. |
| marker - | Значение по умолчанию: "# {mark} ANSIBLE УПРАВЛЯЕМЫЙ БЛОК" | Шаблон строки метки. "{mark}" будет заменён значениями в marker_begin (по умолчанию="BEGIN") и marker_end (по умолчанию="END"). |
| marker_begin - добавлен в 2.5 | Значение по умолчанию: "BEGIN" | Это будет вставлено в {mark} в открывающей метке блока ansible. |
| marker_end - добавлен в 2.5 | Значение по умолчанию: "END" | Это будет вставлено в {mark} в закрывающей метке блока ansible. |
| mode - | Режим файла или каталога. Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую цифру 0, чтобы парсер YAML Ansible понял, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '1777') Ansible получит строку и сможет самостоятельно преобразовать её в число. Передача Ansible чисел без одного из этих правил приведёт к десятичному числу, что приведёт к неожиданным результатам. Начиная с версии 1.8, режим может быть указан в символическом формате (например, u+rwx или u=rw,g=r,o=r). | |
| owner - | Имя пользователя, который должен владеть файлом/каталогом, как передаётся команде chown. | |
| path - / обязательно | Файл для изменения. До версии 2.3 этот параметр был доступен только как dest, destfile и name. псевдонимы: dest, destfile, name | |
| selevel - | Значение по умолчанию: "s0" | Уровень части контекста файла SELinux. Это атрибут MLS/MCS, иногда известный как range. _default функция работает аналогично seuser. |
| serole - | Роль части контекста файла SELinux, _default функция работает аналогично seuser. | |
| setype - | Тип части контекста файла SELinux, _default функция работает аналогично seuser. | |
| seuser - | Пользователь части контекста файла SELinux. По умолчанию используется системная политика, если применимо. Если установлено _default, будет использоваться часть user политики, если она доступна. | |
| state - |
| Нужно ли, чтобы блок был там или нет. |
| unsafe_writes boolean добавлен в 2.2 |
| По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто сломаны таким образом, что это невозможно. Пример — файлы с монтированием Docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом. Этот параметр позволяет Ansible переходить к небезопасным методам обновления файлов, когда атомарные операции завершаются неудачей (хотя это не заставляет Ansible выполнять небезопасные записи). ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных. |
| validate - | Команда проверки, которая выполняется перед копированием в нужное место. Путь к файлу для проверки передаётся через '%s', который должен присутствовать, как в примере ниже. Команда передаётся безопасно, поэтому функции оболочки, такие как расширение и конвейеры, работать не будут. |
Примечания
Примечание
- Этот модуль поддерживает режим проверки.
- При использовании циклов «with_*» помните, что если вы не задаёте уникальную метку, блок будет перезаписан на каждой итерации.
- Начиная с Ansible 2.3, параметр dest был изменён на path по умолчанию, но dest всё ещё работает.
- Параметр follow был удалён в версии 2.5, потому что этот модуль изменяет содержимое файла, поэтому follow=no не имеет смысла.
- Если необходимо обработать несколько блоков в одном файле, вы обязательно должны изменить marker в каждом задании.
Примеры
# Before 2.3, option 'dest' or 'name' was used instead of 'path'
- name: insert/update "Match User" configuration block in /etc/ssh/sshd_config
blockinfile:
path: /etc/ssh/sshd_config
block: |
Match User ansible-agent
PasswordAuthentication no
- name: insert/update eth0 configuration stanza in /etc/network/interfaces
(it might be better to copy files into /etc/network/interfaces.d/)
blockinfile:
path: /etc/network/interfaces
block: |
iface eth0 inet static
address 192.0.2.23
netmask 255.255.255.0
- name: insert/update configuration using a local file and validate it
blockinfile:
block: "{{ lookup('file', './local/ssh_config') }}"
dest: "/etc/ssh/ssh_config"
backup: yes
validate: "/usr/sbin/sshd -T -f %s"
- name: insert/update HTML surrounded by custom markers after <body> line
blockinfile:
path: /var/www/html/index.html
marker: "<!-- {mark} ANSIBLE MANAGED BLOCK -->"
insertafter: "<body>"
content: |
<h1>Welcome to {{ ansible_hostname }}</h1>
<p>Last updated on {{ ansible_date_time.iso8601 }}</p>
- name: remove HTML as well as surrounding markers
blockinfile:
path: /var/www/html/index.html
marker: "<!-- {mark} ANSIBLE MANAGED BLOCK -->"
content: ""
- name: Add mappings to /etc/hosts
blockinfile:
path: /etc/hosts
block: |
{{ item.ip }} {{ item.name }}
marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item.name }}"
with_items:
- { name: host1, ip: 10.10.1.10 }
- { name: host2, ip: 10.10.1.11 }
- { name: host3, ip: 10.10.1.12 }
Статус
- Гарантированно совместимый интерфейс этого модуля не гарантируется. [превью]
- Этот модуль поддерживается командой разработчиков Ansible. [core]
Поддержка Red Hat
Дополнительную информацию о поддержке этого модуля компанией Red Hat можно найти в этой статье базы знаний Red Hat.
Авторы
- YAEGASHI Takeshi (@yaegashi)
Подсказка
Если вы заметили какие-либо проблемы в этом документе, вы можете отредактировать этот документ, чтобы улучшить его.
© 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/blockinfile_module.html