Curso Ansible: Hecho o Fact
En el contexto de Ansible, un hecho (fact) es información recopilada automáticamente por Ansible sobre un host antes de ejecutar tareas. Estos hechos proporcionan detalles como el sistema operativo, la dirección IP, el hostname, las interfaces de red, la arquitectura de la CPU, la memoria disponible, entre otros. Se utilizan para adaptar las configuraciones o tareas de un playbook según las características del host.
Ejemplo de hechos en Ansible
Cuando ejecutas un playbook, Ansible utiliza el módulo setup para recopilar hechos. Estos hechos están disponibles como variables y se pueden usar dentro de un playbook.
1 2 3 4 5 |
- name: Mostrar información del sistema operativo hosts: all tasks: - debug: msg: "El sistema operativo del host {{ ansible_hostname }} es {{ ansible_os_family }}" |
En este ejemplo:
- ansible_hostname es un hecho que devuelve el nombre del host.
- ansible_os_family indica la familia del sistema operativo (por ejemplo, Debian o RedHat).
Relación con SSH
Ansible utiliza SSH para conectarse a los hosts gestionados, y es durante esta conexión inicial que el módulo setup se ejecuta automáticamente para recopilar los hechos. Sin embargo, este proceso puede ser costoso en términos de tiempo cuando se ejecuta repetidamente en varios hosts. Por eso, optimizar la recopilación y uso de hechos puede mejorar el rendimiento de tus playbooks.
Opciones para trabajar con hechos en Ansible
Habilitar o deshabilitar la recopilación de hechos
-
- Puedes deshabilitar la recopilación automática de hechos si no es necesaria para un playbook específico. Fichero YAML:
1 2 3 |
- name: Playbook sin recopilación de hechos hosts: all gather_facts: no |
- Para evitar recopilar hechos en cada ejecución, puedes habilitar el almacenamiento en caché. Fichero INI:
1 2 3 4 |
[defaults] fact_caching = jsonfile fact_caching_connection = /tmp/ansible_facts fact_caching_timeout = 86400 # 24 horas |
Recopilar hechos de forma manual
- Si deshabilitaste la recopilación automática de hechos, puedes recopilarlos manualmente en una tarea específica:
1 2 3 4 5 |
- name: Recopilar hechos manualmente hosts: all tasks: - setup: filter: ansible_* |
- Puedes filtrar los hechos que quieres recopilar para reducir la cantidad de datos procesados:
1 2 |
- setup: filter: "ansible_distribution*" |
Optimización con hechos y SSH
Cuando se menciona la optimización de SSH en Ansible, se hace referencia a cómo reducir el tiempo necesario para establecer conexiones y recopilar hechos. Por ejemplo:
- Habilitar multiplexación de SSH para que Ansible reutilice las conexiones establecidas. Fichero INI:
1 2 3 |
[ssh_connection] control_path = %(directory)s/%%h-%%r pipelining = True |
- Usar caché de hechos para evitar recopilar información que no cambia frecuentemente, como detalles del hardware.
En resumen, un “hecho” en Ansible es información clave sobre un host, y gestionarlos correctamente, ya sea limitándolos, almacenándolos en caché o configurando SSH para optimizarlos, es fundamental para mejorar el rendimiento y la eficiencia de tus automatizaciones.
ENTRADAS RELACIONADAS CURSO ANSIBLE
- Curso Ansible: Qué es y para qué sirve
- Curso Ansible: Instalación, configuración inicial y ejemplo práctico básico
- Curso Ansible: Puertos de comunicación necesarios
- Curso Ansible: Playbooks conceptos básicos
- Curso Ansible: Manejo de Inventarios
- Curso Ansible: Manejo de Variables
- Curso Ansible: definición y uso de Roles
- Curso Ansible: qué son los Handlers
- Curso Ansible: Condicionales y bucles
- Curso Ansible: Gestión de secretos y credenciales con Ansible Vault
- Curso Ansible: Uso de roles de la comunidad con Ansible Galaxy
- Curso Ansible: Despliegue de aplicaciones en contenedores con Ansible
- Curso Ansible: Integración de Ansible con CI/CD pipelines
- Curso Ansible: Generar ficheros YAML
- Curso Ansible: Integración de Ansible con Terraform para gestionar Proxmox
- Curso Ansible: Provisioners de Ansible en Terraform
- Curso Ansible: Hecho o Fact
- Curso Ansible: Optimización y buenas prácticas
OTRAS ENTRADAS RELACIONADAS ANSIBLE
- Ansible: Conceptos básicos
- Ansible: Comandos básicos
- Instalar Ansible en Centos 7
- Ansible: Gestión básica máquinas virtuales Proxmox
- MacOS: Instalar Podman y Ansible
- Docker Swarm: Instalar Ansible AWX
- Ansible: Validar ficheros YAML
- Ansible: Instalar SQL Server 2019 en Linux
- Ansible: Crear página web WordPress
- Ansible: Instalación servidores web
- Ansible: Gestión de máquina Windows
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?