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

Модуль не имеет соответствующего расширения действия (action plugin), которое выполняет работу на управляющем узле.

async

Модуль не поддерживает асинхронное выполнение.

become

Модуль не поддерживает повышение привилегий.

bypass_host_loop

Некоторые параметры модуля выполняются не поочередно для каждого узла, а один раз для всей группы. При этом игнорируются ограничения по узлам, циклы, а также параметры serial, throttle и шаблоны, зависящие от узла. Условия срабатывают при использовании run_once. Значения переменных берутся с первого доступного узла. Это действие не работает при использовании вне стратегии lockstep.

bypass_task_loop

Большинство параметров модуля игнорирует операторы цикла loop и with_.

check_mode

Хотя действия модуля не изменяют целевые узлы напрямую, они могут влиять на возможные состояния узлов в ходе выполнения сценария. Модуль может запускаться в режиме проверки (check_mode) и возвращать прогноз изменения (changed), не внося реальных изменений на целевые узлы. Если действие не поддерживает режим проверки, оно будет пропущено без выполнения.

connection

Большинство параметров модуля не используют информацию о настройках подключения к целевому узлу при выполнении заданий на нем. Исключение – параметр reset_connection, который сбрасывает текущее соединение, но не устанавливает новое.

core

Функциональность модуля не может быть изменена с помощью расширений.

delegation

Модуль не поддерживает delegate_to, то есть не может выполняться на другом узле.

diff_mode

Модуль не поддерживает режим сравнения.

ignore_conditional

Некоторые параметры модуля обрабатывают условия выполнения задачи when. Если условия поддерживаются, они выполняются, игнорируя цикл по узлам. Значения переменных берутся с первого доступного узла.

platform

Модуль поддерживает все платформы, с которыми может работать Ansible.

tags

Модуль поддерживает директиву tags.

until

Модуль не поддерживает механизм повторных попыток.

Примеры#

Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.

Запуск обработчиков немедленно#

Следующий пример демонстрирует запуск обработчиков немедленно, без ожидания окончания сценария:

---
# ...
  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'