Настройка сборки фактов
Хотя встроенная в Ansible сборка фактов является мощной, бывают случаи, когда вам нужно собрать дополнительную информацию или настроить процесс сборки фактов. LabEx предоставляет несколько способов расширить и настроить возможности сборки фактов Ansible.
Пользовательские модули фактов
Ansible позволяет вам писать собственные модули фактов для сбора дополнительной информации о ваших управляемых узлах. Эти пользовательские модули фактов можно писать на любом языке, поддерживаемом Ansible, таких как Python, Bash или PowerShell.
Вот пример пользовательского модуля фактов, написанного на Python, который собирает информацию о установленных пакетах на системе Ubuntu 22.04:
#!/usr/bin/env python
from ansible.module_utils.basic import AnsibleModule
def main():
module = AnsibleModule(
argument_spec=dict(),
supports_check_mode=True
)
packages = []
with open('/var/lib/dpkg/status', 'r') as f:
for line in f:
if line.startswith('Package:'):
packages.append(line.split(':')[1].strip())
module.exit_json(changed=False, ansible_facts={'installed_packages': packages})
if __name__ == '__main__':
main()
Для использования этого пользовательского модуля фактов вы можете включить его в свой playbook Ansible:
- hosts: all
gather_facts: false
tasks:
- name: Gather custom facts
ansible.builtin.setup:
gather_subset:
- custom
register: custom_facts
- name: Print custom facts
debug:
var: custom_facts.ansible_facts.installed_packages
Это будет собирать список установленных пакетов и делать его доступным в качестве факта Ansible.
Кэширование фактов
Ansible поддерживает кэширование фактов, что может повысить производительность ваших playbook, уменьшив время, необходимое для сбора фактов. Вы можете включить кэширование фактов, настроив параметр fact_caching
в файле конфигурации Ansible или playbook.
Вот пример того, как включить кэширование фактов с использованием плагина кэша memory
:
- hosts: all
gather_facts: true
strategy: free
vars:
ansible_facts_cache_plugin: memory
ansible_facts_cache_timeout: 86400 ## 1 day
Это будет кэшировать собранные факты в памяти в течение 24 часов, уменьшая время, необходимое для сбора фактов при последующих запусках.
Используя пользовательские модули фактов и кэширование фактов, вы можете расширить возможности сборки фактов Ansible, чтобы лучше соответствовать вашим конкретным требованиям и повысить производительность ваших автоматизационных рабочих процессов.