Модуль setup и Gathers facts в Ansible
В системе управления конфигурациями Ansible есть специальный модуль setup
. Он выполняется первым, собирая информацию (Gathers facts
) обо всех подключённых узлах (нодах). При выполнении модуля на хосте он собирает разные факты, включая дисковое пространство, версию и тип операционной системы, hostname машины, количество доступной памяти, архитектуру процессора, IP-адреса, сетевые интерфейсы и их состояние.
Собранная системная информация фиксируется в виде переменных, которые доступны только для чтения. Полученные факты можно в дальнейшем использовать в коде и сценариях playbooks в своих целях. Например, можно писать условия в коде, при которых будут вноситься те либо иные изменения в зависимости от типа и версии операционной системы.
Посмотреть, какая информация собирается модулем setup
и в какие переменные она упаковывается, можно следующим образом (вывод частично обрезан):
ansible server1 -m setup server1 | SUCCESS => { "ansible_facts": { "ansible_all_ipv4_addresses": [ "10.10.30.14" ], "ansible_all_ipv6_addresses": [ "fe80::250:56ff:fe99:33a2" ], "ansible_apparmor": { "status": "enabled" }, ...
Однако нельзя не учитывать, что на выполнение сбора системной информации уходит определённое время. И если код playbooks, который будет применяться на сервере, никак не будет использовать эти факты, модуль лучше отключить. В результате чего переменные собираться не будут в рамках выполнения всего playbooks, что сэкономит время.
Отключение модуля setup
не вызывает сложностей, причём управление включением/выключением выполняется на уровне всего playbooks. Кроме того, в ansible.cfg
можно управлять его поведением по умолчанию.
- hosts: server1 gather_facts: false vars_files: - "{{ inventory_dir }}/credentials.yml" tasks: ...