gather_facts#

Модуль ansible.builtin.gather_facts собирает факты об управляемых узлах. Ansible автоматически вызывает этот модуль в начале каждого сценария, если это поведение не отменить с помощью явного указания – gather_facts: false. Модуль вызывает другой модуль для сбора данных, то есть является оберткой (wrapper) над другим модулем. По умолчанию он использует ansible.builtin.setup, но это поведение можно изменить с помощью параметра facts_modules в файле ansible.cfg.

Особенности работы#

Модуль ansible.builtin.gather_facts имеет следующие особенности:

  • Модуль не собирает факты напрямую, он вызывает один или несколько модулей для сбора фактов.

  • Все параметры, передаваемые модулю ansible.builtin.gather_facts, должны поддерживаться всеми модулями, задействованными для сбора фактов.

  • Если при параллельном сборе фактов используется параметр gather_timeout, заданный с помощью файла настроек ansible.cfg, ограничение времени действует на всю группу модулей, даже если они сами не поддерживают этот параметр.

  • Факты, возвращаемые каждым модулем, будут объединены в общий набор фактов, а в случае конфликта приоритет получает последний объединенный факт.

    Важно

    При параллельном сборе фактов несколькими модулями порядок их вызова не определен. Таким образом, нельзя точно сказать, какое значение факта будет итоговым.

  • Модуль можно вызвать вручную для проверки доступных фактов с помощью команды:

    ansible all -m ansible.builtin.gather_facts
    

Параметры#

Модуль принимает единственный параметр parallel – параллельное выполнение модулей сбора фактов.

Возможные значения:

  • false – запускать модули для сбора фактов последовательно;

  • true – запускать модули для сбора фактов параллельно.

Значение по умолчанию: зависит от количества используемых модулей для сбора фактов – false если модуль всего один и true, если их несколько.

Если используется много модулей сбора фактов, параллельный режим может повысить производительность. Однако при использовании быстро выполняющихся модулей параллелизм может привести к задержкам из-за увеличенных затрат ресурсов на управление параллельным выполнением.

Примечание

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

Атрибуты#

Атрибуты определяют функции Ansible, которые может использовать модуль.

Атрибут

Описание

action

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

async

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

bypass_host_loop

Модуль не поддерживает глобальное выполнение задачи.

check_mode

Модуль работает в режиме проверки (check_mode) в полном объеме.

diff_mode

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

facts

Модуль возвращает словарь ansible_facts, который обновляет существующие факты об узле.

platform

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

Примеры#

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

Сбор фактов в задаче#

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

---
# ...
  tasks:
    - name: Gathering facts manually
      ansible.builtin.gather_facts:
        parallel: false

Такой подход используется, если автоматический сбор фактов отключен и необходимо выполнить сбор позже вручную. Это полезно, если сначала нужно, например, настроить соединение с узлом или изменить его состояние.

Сохранение фактов в файл#

Следующий пример демонстрирует сбор и сохранение фактов в файл с помощью командной строки:

ansible all -m ansible.builtin.gather_facts --tree /tmp/facts

Использование переменной ansible_facts_parallel#

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

---
- hosts: all
  gather_facts: false
  vars:
    ansible_facts_parallel: false

  tasks:
    - name: Gathering facts
      ansible.builtin.gather_facts: