blockinfile - Вставка/обновление/удаление текстового блока, окружённого маркерными строками
Новая версия с 2.0.
Обзор
- Этот модуль вставит/обновит/удалит блок многострочного текста, окружённый настраиваемыми маркерными строками.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes (добавлен в 2.3) | Атрибуты, которые должен иметь файл или каталог. Для получения поддерживаемых флагов обратитесь к странице руководства для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и при отображении lsattr. псевдонимы: attr | |
| backup bool |
| Создать резервную копию файла, включая информацию о времени, чтобы вы могли вернуть исходный файл, если вы каким-то образом неправильно его перезаписали. |
| block | Значение по умолчанию: "" | Текст для вставки между маркерными строками. Если он отсутствует или пустая строка, блок будет удалён, как если бы было указано state, чтобы absent.псевдонимы: content |
| create bool |
| Создать новый файл, если он не существует. |
| 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, помните, что режимы фактически являются восьмеричными числами. Вы должны указать ведущую нуль, чтобы парсер YAML Ansible знал, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '0644'), чтобы 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 bool (добавлен в 2.2) |
| Обычно этот модуль использует атомарные операции, чтобы предотвратить повреждение данных или несогласованные чтения из целевых файлов. Иногда системы настроены или просто неисправны так, что это невозможно. Примером являются файлы, смонтированные с помощью docker; они не могут быть обновлены атомарно и могут быть обновлены только небезопасным способом. Этот булевый параметр позволяет 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. Подробнее см. Техническое обслуживание и поддержка модулей.
Список других модулей, которые также поддерживаются ядром Ansible, см. здесь.
Поддержка
Дополнительную информацию о поддержке этого модуля 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.6/modules/blockinfile_module.html