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 plugin), которое выполняет работу на управляющем узле. |
|
Модуль не поддерживает асинхронное выполнение. |
|
Модуль не поддерживает глобальное выполнение задачи. |
|
Модуль работает в режиме проверки ( |
|
Модуль не поддерживает режим сравнения. |
|
Модуль возвращает словарь |
|
Модуль поддерживает все платформы, с которыми может работать 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: