ansible.builtin.blockinfile – Вставка/обновление/удаление текстового блока, окружённого метками
Примечание
Этот модуль является частью ansible-base и включён во все установки Ansible. В большинстве случаев вы можете использовать сокращённое имя модуля blockinfile, даже не указывая collections: ключевое слово. Несмотря на это, мы рекомендуем использовать полное имя класса (FQCN) для удобной ссылки на документацию модуля и для предотвращения конфликтов с другими коллекциями, которые могут иметь то же имя модуля.
Добавлена в версии 2.0: of ansible.builtin
Описание
- Этот модуль вставит/обновит/удалит блок многострочного текста, окружённый настраиваемыми метками.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes строка добавлена в 2.3 of ansible.builtin | Атрибуты, которые должен иметь результирующий файл или каталог. Для получения поддерживаемых флагов посмотрите страницу man для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и в выводе lsattr. Оператор = используется по умолчанию, в противном случае операторы + или - должны быть включены в строку.алиасы: attr | |
| backup булево |
| Создать резервную копию файла, включая информацию о времени, чтобы вы могли получить исходный файл, если каким-то образом его неправильно перезаписали. |
| block строка | Значение по умолчанию: "" | Текст, который нужно вставить между метками. Если он отсутствует или пустая строка, блок будет удалён, как если бы state было указано для absent.алиасы: content |
| create булево |
| Создать новый файл, если он не существует. |
| group строка | Имя группы, которая должна владеть файлом/каталогом, как это подаётся в chown. | |
| insertafter строка |
| Если указано и не найдены начальные/конечные marker строки, блок будет вставлен после последнего совпадения указанного регулярного выражения.Доступно специальное значение; EOF для вставки блока в конец файла.Если указанное регулярное выражение не находит совпадений, EOF будет использоваться вместо этого. |
| insertbefore строка |
| Если указано и не найдены начальные/конечные marker строки, блок будет вставлен перед последним совпадением указанного регулярного выражения.Доступно специальное значение; BOF для вставки блока в начало файла.Если указанное регулярное выражение не находит совпадений, блок будет вставлен в конец файла. |
| marker строка | Значение по умолчанию: "# {mark} ANSIBLE MANAGED BLOCK" | Шаблон метки строки. {mark} будет заменён значениями в marker_begin (по умолчанию "BEGIN") и marker_end (по умолчанию "END").Использование пользовательской метки без переменной {mark} может привести к повторной вставке блока при последующих запусках playbook. |
| marker_begin строка добавлена в 2.5 of ansible.builtin | Значение по умолчанию: "BEGIN" | Это будет вставлено в {mark} в открывающей метке блока ansible. |
| marker_end строка добавлена в 2.5 of ansible.builtin | Значение по умолчанию: "END" | Это будет вставлено в {mark} в закрывающей метке блока ansible. |
| mode raw | Права доступа, которые должен иметь результирующий файл или каталог. Для тех, кто привык к /usr/bin/chmod, помните, что режимы — это на самом деле восьмеричные числа. Вы должны либо добавить ведущую ноль, чтобы интерпретатор YAML Ansible понял, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '1777') так, чтобы Ansible получил строку и мог выполнить собственное преобразование из строки в число.Передача Ansible числа без соблюдения одного из этих правил приведёт к десятичному числу, что приведёт к непредвиденным результатам. Начиная с Ansible 1.8, режим может быть указан в символической форме (например, u+rwx или u=rw,g=r,o=r). | |
| owner строка | Имя пользователя, который должен владеть файлом/каталогом, как это подаётся в chown. | |
| path путь / обязательный | Файл, который нужно изменить. До Ansible 2.3 этот параметр был доступен только как dest, destfile и name. алиасы: dest, destfile, name | |
| 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 of ansible.builtin |
| Влияет на использование атомарной операции для предотвращения повреждения данных или несогласованного чтения из целевого файла. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это предотвращает. Одним примером являются файлы с монтированием Docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом. Этот параметр позволяет Ansible переходить к небезопасным методам обновления файлов, когда атомарные операции завершаются неудачей (однако он не принуждает Ansible выполнять небезопасные записи). ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных. |
| validate строка | Команда валидации, которую нужно запустить перед копированием в нужное место. Путь к файлу для валидации передаётся через '%s', который должен присутствовать, как в примерах ниже. Команда передаётся безопасно, поэтому такие функции оболочки, как расширение и каналы, работать не будут. |
Примечания
Примечание
- Этот модуль поддерживает режим проверки.
- При использовании циклов «with_*» помните, что если вы не установите уникальную метку, блок будет перезаписываться на каждой итерации.
- Начиная с Ansible 2.3, параметр dest изменён на path по умолчанию, но dest всё ещё работает.
- Параметр follow удалён в Ansible 2.5, потому что этот модуль изменяет содержимое файла, поэтому follow=no не имеет смысла.
- Если нужно обработать несколько блоков в одном файле, необходимо изменить marker для каждой задачи.
Примеры
# Before Ansible 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/sshd_config') }}"
path: /etc/ssh/sshd_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>"
block: |
<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 -->"
block: ""
- name: Add mappings to /etc/hosts
blockinfile:
path: /etc/hosts
block: |
{{ item.ip }} {{ item.name }}
marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item.name }}"
loop:
- { name: host1, ip: 10.10.1.10 }
- { name: host2, ip: 10.10.1.11 }
- { name: host3, ip: 10.10.1.12 }
Авторы
- 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.10/collections/ansible/builtin/blockinfile_module.html