meta#
Модуль ansible.builtin.meta выполняет метазадачи, которые влияют на внутренние процессы Ansible или его текущее состояние.
Особенности работы#
Модуль ansible.builtin.meta имеет следующие особенности:
Метазадачи можно применять в любом сценарии.
За один вызов модуля можно передать только один параметр. Параметры для модуля передаются в сокращенной форме (free-form), например:
ansible.builtin.meta: flush_handlers
Параметры#
При вызове модуля необходимо обязательно указать один из следующих параметров:
- clear_facts#
Удаление собранных и кешированных фактов узлов, на которых выполняется текущий сценарий.
Примечание
Будут удалены кешированные факты, установленные с помощью модуля ansible.builtin.set_fact с параметром
cacheable=true. Переменные, заданные в текущем запуске, удалены не будут.
- clear_host_errors#
Снятие состояния ошибки с узлов, на которых выполняется текущий сценарий.
Даже если выполнение задачи текущего сценария на узле завершится с ошибкой, он все равно будет использован в следующих сценариях. В текущем сценарии выполнение для таких узлов не продолжается.
- end_batch#
Завершение выполнения текущей партии (batch) узлов при использовании директивы
serial.При
serial=0или ее отсутствии работает аналогично параметруend_play.
- end_host#
Завершение выполнения текущего сценария для узла, на котором выполняется эта задача, без вывода ошибки. Остальные узлы продолжат выполнение сценария.
- end_play#
Завершение текущего сценария для всех узлов без вывода ошибки.
- flush_handlers#
Запуск всех уведомленных (поставленных в очередь) обработчиков немедленно, не дожидаясь обычных точек синхронизации, например, конца выполнения сценария.
- noop#
Бездействие.
В основном используется в коде Ansible или в его внутренних процессах для служебных целей и не рекомендуется для общего применения.
- refresh_inventory#
Принудительная перезагрузка описания инвентаря во время выполнения сценария. Это особенно полезно при использовании динамического инвентаря, когда в ходе выполнения сценария добавляется описание новых узлов или меняется их состояние.
При вызове Ansible повторно выполняет скрипты или расширения динамического описания инвентаря, чтобы получить обновленный список узлов. При этом новые узлы не добавляются автоматически в текущий цикл выполнения задач. Чтобы выполнить задачи на новых узлах, их нужно явно указать, например, с помощью
delegate_toили в следующих сценариях.Если используется кеширование динамического описания инвентаря, оно не обновляется автоматически. Для корректной работы с кешированным описанием инвентаря можно отключить кеш или использовать соответствующее расширение инвентаря вместо скрипта.
- reset_connection#
Разрыв текущего постоянного подключения к узлу, например, SSH-сессии с включенной опцией
ControlPersistв OpenSSH.
Атрибуты#
Атрибуты определяют функции Ansible, которые может использовать модуль.
Атрибут |
Описание |
|---|---|
|
Модуль не имеет соответствующего расширения действия (action plugin), которое выполняет работу на управляющем узле. |
|
Модуль не поддерживает асинхронное выполнение. |
|
Модуль не поддерживает повышение привилегий. |
|
Некоторые параметры модуля выполняются не поочередно для каждого узла, а один раз для всей группы.
При этом игнорируются ограничения по узлам, циклы, а также параметры |
|
Большинство параметров модуля игнорирует операторы цикла |
|
Хотя действия модуля не изменяют целевые узлы напрямую, они могут влиять на возможные состояния узлов в ходе выполнения сценария.
Модуль может запускаться в режиме проверки ( |
|
Большинство параметров модуля не используют информацию о настройках подключения к целевому узлу при выполнении заданий на нем.
Исключение – параметр |
|
Функциональность модуля не может быть изменена с помощью расширений. |
|
Модуль не поддерживает |
|
Модуль не поддерживает режим сравнения. |
|
Некоторые параметры модуля обрабатывают условия выполнения задачи |
|
Модуль поддерживает все платформы, с которыми может работать Ansible. |
|
Модуль поддерживает директиву |
|
Модуль не поддерживает механизм повторных попыток. |
Примеры#
Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.
Запуск обработчиков немедленно#
Следующий пример демонстрирует запуск обработчиков немедленно, без ожидания окончания сценария:
---
# ...
tasks:
- name: Example using flush_handlers
ansible.builtin.template:
src: new.j2
dest: /etc/config.txt
notify: restart_service
- name: Immediately run all notified handlers
ansible.builtin.meta: flush_handlers
Обновление инвентаря во время выполнения сценария#
Следующий пример демонстрирует обновление инвентаря в процессе выполнения сценария:
---
# ...
tasks:
- name: Adding new host to inventory at runtime
ansible.builtin.add_host:
name: newhost.example.com
groups: newhosts
- name: Refresh inventory to ensure new instances exist in inventory
ansible.builtin.meta: refresh_inventory
Удаление собранных фактов#
Следующий пример демонстрирует удаление всех ранее собранных фактов об узлах:
---
# ...
tasks:
- name: Clearing gathered facts
ansible.builtin.meta: clear_facts
Сброс ошибок#
Следующий пример демонстрирует повторное включение узла в выполнение сценария после ошибки:
---
# ...
tasks:
- name: Bring host back to play after failure
ansible.builtin.copy:
src: /files/example.conf
dest: /etc/example.conf
remote_user: user_with_limited_rights
- name: Clearing errors
ansible.builtin.meta: clear_host_errors
Сброс текущего подключения#
Следующий пример демонстрирует сброс существующего соединения SSH для вступления в силу изменений пользователя:
---
# ...
tasks:
- name: Example using reset_connection
ansible.builtin.user:
name: '{{ ansible_user }}'
groups: input
- name: Reset SSH connection
ansible.builtin.meta: reset_connection
Завершение сценария для отдельных узлов#
Следующий пример демонстрирует завершение выполнения сценария для узлов с Astra Linux Special Edition 1.7:
---
# ...
tasks:
- name: Complete the play for hosts with с Astra Linux Special Edition 1.7
ansible.builtin.meta: end_host
when:
- ansible_distribution == 'Astra Linux'
- ansible_distribution_release == '1.7_x86-64'