Ansible — это мощный инструмент автоматизации, широко используемый для управления конфигурацией, выделения ресурсов и оркестрации ИТ-инфраструктуры. Одной из его ключевых особенностей является возможность сбора системной информации с помощью модуля «gather_facts». В этой статье мы рассмотрим различные методы использования «gather_facts» в Ansible, а также приведем примеры кода.
Метод 1: сбор минимальных фактов
По умолчанию модуль «gather_facts» Ansible собирает минимальный набор фактов о целевой системе. Сюда входит такая информация, как имя хоста, IP-адрес, операционная система и архитектура. Вот пример плейбука, который демонстрирует это:
- name: Gathering Minimal Facts
hosts: target_servers
gather_facts: true
tasks:
- name: Display gathered facts
debug:
var: ansible_facts
Метод 2: сбор всех фактов
Если вам нужна более подробная информация о целевой системе, вы можете поручить Ansible собрать все доступные факты. Сюда входят сведения об оборудовании, сетевых интерфейсах, дисковом пространстве, установленных пакетах и многом другом. Используйте модуль «gather_facts» с параметром «gather_subset», установленным на «all», как показано ниже:
- name: Gathering All Facts
hosts: target_servers
gather_facts:
gather_subset: all
tasks:
- name: Display gathered facts
debug:
var: ansible_facts
Метод 3: индивидуальный сбор фактов
Ansible позволяет вам определять собственные факты, специфичные для вашей среды. Эти факты можно собрать путем создания собственных скриптов или плагинов. Вот пример того, как собрать пользовательский факт с помощью сценария оболочки:
- name: Gathering Custom Fact
hosts: target_servers
gather_facts: true
tasks:
- name: Run custom fact script
shell: /path/to/custom_script.sh
register: custom_fact_output
- name: Display custom fact
debug:
var: custom_fact_output.stdout
Метод 4: сбор условных фактов
В некоторых случаях вам может потребоваться собрать факты условно на основе определенных критериев. Ansible позволяет управлять сбором фактов с помощью условных операторов. Вот пример, демонстрирующий сбор условных фактов на основе операционной системы:
- name: Conditional Fact Gathering
hosts: target_servers
gather_facts: true
tasks:
- name: Gather facts for Ubuntu
gather_facts:
gather_subset: all
when: "'Ubuntu' in ansible_distribution"
- name: Gather facts for CentOS
gather_facts:
gather_subset: all
when: "'CentOS' in ansible_distribution"
- name: Display gathered facts
debug:
var: ansible_facts
Модуль «gather_facts» Ansible — ценный инструмент для сбора системной информации во время задач автоматизации. В этой статье мы рассмотрели несколько методов использования этой функции, включая сбор минимальных фактов, сбор всех фактов, индивидуальный сбор фактов и условный сбор фактов. Используя эти методы, вы можете получить необходимую информацию о ваших целевых системах и принимать обоснованные решения во время рабочих процессов Ansible.