Personalización de la Recopilación de Hechos
Si bien la recopilación de hechos integrada de Ansible es poderosa, puede haber ocasiones en las que necesites recopilar información adicional o personalizar el proceso de recopilación de hechos. LabEx ofrece varias maneras de extender y personalizar las capacidades de recopilación de hechos de Ansible.
Módulos de Hechos Personalizados
Ansible te permite escribir tus propios módulos de hechos para recopilar información adicional sobre tus hosts administrados. Estos módulos de hechos personalizados se pueden escribir en cualquier lenguaje admitido por Ansible, como Python, Bash o PowerShell.
Aquí hay un ejemplo de un módulo de hechos personalizado escrito en Python que recopila información sobre los paquetes instalados en un sistema 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()
Para usar este módulo de hechos personalizado, puedes incluirlo en tu playbook de Ansible:
- hosts: all
gather_facts: false
tasks:
- name: Recopilar hechos personalizados
ansible.builtin.setup:
gather_subset:
- custom
register: custom_facts
- name: Imprimir hechos personalizados
debug:
var: custom_facts.ansible_facts.installed_packages
Esto recopilará la lista de paquetes instalados y lo hará disponible como un hecho de Ansible.
Almacenamiento en Caché de Hechos
Ansible admite el almacenamiento en caché de hechos, lo que puede mejorar el rendimiento de tus playbooks al reducir el tiempo necesario para recopilar hechos. Puedes habilitar el almacenamiento en caché de hechos configurando la opción fact_caching
en tu archivo de configuración de Ansible o en tu playbook.
Aquí hay un ejemplo de cómo habilitar el almacenamiento en caché de hechos utilizando el complemento de almacenamiento en caché memory
:
- hosts: all
gather_facts: true
strategy: free
vars:
ansible_facts_cache_plugin: memory
ansible_facts_cache_timeout: 86400 ## 1 día
Esto almacenará en caché los hechos recopilados en la memoria durante 24 horas, lo que reduce el tiempo necesario para recopilar hechos en ejecuciones posteriores.
Al aprovechar los módulos de hechos personalizados y el almacenamiento en caché de hechos, puedes extender las capacidades de recopilación de hechos de Ansible para adaptarse mejor a tus requisitos específicos y mejorar el rendimiento de tus flujos de trabajo de automatización.