gathers_facts

Модуль 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:
...
  • gathers_facts.txt
  • Последнее изменение: 2022/04/29 13:39
  • admin