blockinfile - Вставка/обновление/удаление текстового блока, окружённого маркерными строками.
Новое в версии 2.0.
Описание
- Этот модуль вставляет/обновляет/удаляет блок многострочного текста, окружённого настраиваемыми маркерными строками.
Параметры
| параметр | обязательно | по умолчанию | выбор | комментарии |
|---|---|---|---|---|
| attributes (добавлен в 2.3)
| нет | None | Атрибуты, которые должны иметь файл или директория. Для получения поддерживаемых флагов обратитесь к справке man для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и в выводе lsattr. псевдонимы: attr | |
| backup | нет | нет |
| Создать резервную копию файла, включая информацию о времени, чтобы вы могли восстановить исходный файл, если вы неправильно его перезаписали. |
| block | нет | Текст для вставки внутри маркерных строк. Если его нет или он пустой, блок будет удалён, как если бы было указано state для absent. псевдонимы: content | ||
| create | нет | нет |
| Создать новый файл, если он не существует. |
| follow (добавлен в 2.1)
| нет | нет |
| Этот флаг указывает, что при наличии файловых ссылок они должны быть пройдены. |
| group | нет | Имя группы, которая должна владеть файлом/каталогом, как это передаётся в chown. | ||
| insertafter | нет | EOF |
| Если указано, блок будет вставлен после последнего совпадения указанного регулярного выражения. Доступно специальное значение; EOF для вставки блока в конец файла. Если указанное регулярное выражение не найдено, будет использовано EOF. |
| insertbefore | нет | None |
| Если указано, блок будет вставлен перед последним совпадением указанного регулярного выражения. Доступно специальное значение; BOF для вставки блока в начало файла. Если указанное регулярное выражение не найдено, блок будет вставлен в конец файла. |
| marker | нет | # {mark} ANSIBLE MANAGED BLOCK | Шаблон маркерной строки. "{mark}" будет заменён на "BEGIN" или "END". | |
| mode | нет | Режим файла или директории. Для тех, кто знаком с /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами (например, 0644). Пропуск ведущей нули, скорее всего, приведёт к непредвиденным результатам. Начиная с версии 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 | нет | present |
| Нужно ли оставить блок или нет. |
| unsafe_writes (добавлен в 2.2)
| нет |
| Обычно этот модуль использует атомарные операции, чтобы предотвратить повреждение данных или несогласованные чтения из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это невозможно. Примером являются файлы, смонтированные в Docker; они не могут быть обновлены атомарно и могут быть обновлены только небезопасным способом. Этот булевый параметр позволяет Ansible перейти к небезопасным методам обновления файлов в тех случаях, когда у вас нет другого выбора. Помните, что это подвержено гонкам и может привести к повреждению данных. | |
| validate | нет | None | Команда проверки, которую нужно выполнить перед копированием на место. Путь к файлу для проверки передаётся через '%s', который должен присутствовать, как в примере ниже. Команда передаётся безопасно, поэтому такие функции оболочки, как расширение и конвейеры, не будут работать. |
Примеры
# 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 }
Примечания
Примечание
- Этот модуль поддерживает режим проверки.
- При использовании циклов «with_*» имейте в виду, что если вы не установите уникальный маркер, блок будет перезаписан на каждой итерации.
- Начиная с Ansible 2.3, параметр dest был изменён на path по умолчанию, но dest по-прежнему работает.
Статус
Этот модуль помечен как превью, что означает, что он не гарантирует обратную совместимость интерфейса.
Информация о техническом обслуживании
Для получения дополнительной информации о поддержке этого модуля компанией Red Hat обратитесь к этому knowledge base article<https://access.redhat.com/articles/rhel-top-support-policies>
Для получения помощи в разработке модулей, если у вас есть такое желание, пожалуйста, прочитайте Информацию о сообществе и участие в разработке, Тестирование Ansible и Разработка модулей.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/blockinfile_module.html