Cómo utilizar hechos personalizados en Ansible

Cómo utilizar hechos personalizados en Ansible

Ansible es una herramienta de automatización de TI que permite a los equipos de desarrollo y operaciones automatizar el despliegue de aplicaciones, la administración de configuraciones y la orquestación de tareas. Una de las características más poderosas de Ansible es su capacidad para recopilar información del sistema en forma de hechos. Los hechos son datos sobre el sistema, como el sistema operativo, la versión del kernel y la dirección IP, que se pueden utilizar en las tareas de Ansible.

Sin embargo, a veces es necesario recopilar información personalizada del sistema que no está disponible a través de los hechos predeterminados de Ansible. En estos casos, podemos crear "hechos personalizados" en Ansible, que son datos que podemos recopilar del sistema utilizando scripts personalizados.

En este artículo, exploraremos cómo crear y utilizar hechos personalizados en Ansible.

📋 Aquí podrás encontrar✍
  1. Qué son los hechos personalizados
  2. Cómo crear hechos personalizados
    1. 1. Crear un script personalizado que recopile los datos
    2. 2. Guardar el script personalizado en el directorio facts.d de Ansible
    3. 3. Ejecutar Ansible para recopilar los hechos personalizados
  3. Usando hechos personalizados en Ansible
  4. Ejemplos prácticos
    1. Copiar archivos a un directorio en función del sistema operativo
    2. Instalación de paquetes diferentes en función de la cantidad de CPUs
  5. Conclusión
  6. Preguntas frecuentes
    1. ¿Puedo crear más de un hecho personalizado en el mismo script?
    2. ¿Los hechos personalizados se pueden utilizar en playbooks?
    3. ¿Puedo utilizar hechos personalizados para ejecutar tareas en ciertas condiciones?

Qué son los hechos personalizados

Los hechos personalizados son datos que podemos recopilar del sistema utilizando scripts personalizados. Los hechos personalizados se pueden utilizar en las tareas de Ansible de la misma manera que se utilizan los hechos predeterminados de Ansible. Los hechos personalizados pueden ser de cualquier tipo de datos, incluyendo variables de entorno, valores de archivo de configuración y datos de API.

Cómo crear hechos personalizados

Para crear hechos personalizados en Ansible, debemos seguir los siguientes pasos:

1. Crear un script personalizado que recopile los datos

Para recopilar los datos personalizados, necesitamos escribir un script personalizado que devuelva los datos como un diccionario de Python. En este ejemplo, crearemos un script personalizado que recopile el número de procesadores en el sistema y lo devuelva como un hecho personalizado.


#!/usr/bin/env python
import subprocess
import json

def main():
data = {}
num_cpus = subprocess.check_output('nproc').strip()
data['num_cpus'] = num_cpus
print(json.dumps(data))

if __name__ == '__main__':
main()

2. Guardar el script personalizado en el directorio facts.d de Ansible

Una vez que hemos creado el script personalizado, debemos guardarlo en el directorio facts.d de Ansible. Debemos asegurarnos de que el script sea ejecutable y tenga permiso de lectura.


$ sudo mkdir /etc/ansible/facts.d
$ sudo vi /etc/ansible/facts.d/custom_facts.py
$ sudo chmod +x /etc/ansible/facts.d/custom_facts.py

3. Ejecutar Ansible para recopilar los hechos personalizados

Una vez que hemos creado el script personalizado y lo hemos guardado en el directorio facts.d de Ansible, podemos ejecutar Ansible para recopilar los hechos personalizados. Para hacer esto, simplemente ejecutamos el siguiente comando:


ansible -m setup localhost

Este comando recopila todos los hechos del sistema y los incluye en una variable llamada "ansible_facts". Los hechos personalizados que hemos creado estarán disponibles en el diccionario "ansible_facts" con el nombre que les hayamos dado.

Usando hechos personalizados en Ansible

Para utilizar hechos personalizados en Ansible, simplemente los referenciamos por su nombre en nuestras tareas. Por ejemplo, si hemos creado un hecho personalizado llamado "num_cpus", podemos utilizarlo en nuestras tareas como {{ ansible_facts['num_cpus'] }}.

Ejemplos prácticos

Aquí hay algunos ejemplos prácticos de cómo podemos utilizar los hechos personalizados en Ansible:

Copiar archivos a un directorio en función del sistema operativo

Supongamos que tenemos un archivo que queremos copiar a un directorio diferente dependiendo del sistema operativo. Podemos hacer esto utilizando un hecho personalizado que contiene el nombre del sistema operativo.


- name: Copy file to appropriate directory
copy:
src: myfile.txt
dest: "{{ ansible_facts['os_name'] }}_dir/"

Instalación de paquetes diferentes en función de la cantidad de CPUs

Supongamos que queremos instalar diferentes paquetes dependiendo de la cantidad de CPUs en el sistema. Podemos hacer esto utilizando un hecho personalizado que contiene el número de CPUs.


- name: Install packages based on CPU count
apt:
name:
- package1
- package2
state: present
when: ansible_facts['num_cpus'] > 8

Conclusión

La capacidad de crear hechos personalizados en Ansible nos permite recopilar información personalizada del sistema y utilizarla en nuestras tareas de Ansible. Al utilizar los hechos personalizados, podemos automatizar tareas más avanzadas con Ansible.

Preguntas frecuentes

¿Puedo crear más de un hecho personalizado en el mismo script?

Sí, puede crear tantos hechos personalizados como desee en el mismo script. Simplemente asegúrese de que devuelva los datos como un diccionario de Python.

¿Los hechos personalizados se pueden utilizar en playbooks?

Sí, los hechos personalizados se pueden utilizar en playbooks de la misma manera que se utilizan en tareas.

¿Puedo utilizar hechos personalizados para ejecutar tareas en ciertas condiciones?

Sí, puede utilizar los hechos personalizados para ejecutar tareas solo en ciertas condiciones utilizando la cláusula "when" en su tarea.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir