Introducción
Level puede ejecutar playbooks de Ansible en dispositivos administrados a través de su motor de scripting. La diferencia clave respecto a una configuración típica de Ansible: Level no utiliza un nodo de control central. Cada dispositivo descarga y ejecuta el playbook localmente, y Level transmite la salida a tu consola en tiempo real.
Esta guía cubre el modelo de ejecución, cómo crear un script de Level que llame a ansible-playbook, y cómo preparar los endpoints de Windows que necesitan un entorno compatible con POSIX para ejecutar Ansible.
⚙️ PREREQUISITOS
Ansible instalado en cada dispositivo de destino (no un nodo de control central — ver más abajo)
Para dispositivos Unix/macOS/Linux:
ansibleyansible-playbookdisponible enPATHPara dispositivos Windows: un entorno compatible con POSIX (WSL o Cygwin/Git Bash) con Ansible instalado
Agente de Level desplegado en todos los dispositivos de destino
Cómo Level Ejecuta los Playbooks de Ansible
Ansible estándar utiliza una máquina de control central para conectarse por SSH a los hosts de destino y ejecutar tareas de forma remota. El modelo de Level es diferente: cada dispositivo ejecuta el playbook localmente en sí mismo.
Cuando un script de Level que contiene un ansible-playbook se ejecuta en un dispositivo:
El script (y cualquier archivo de playbook adjunto) se descarga en el dispositivo.
El dispositivo ejecuta
ansible-playbooklocalmente usando su propia instalación de Ansible.El agente de Level captura stdout/stderr y lo transmite a la consola de Level mientras el playbook se ejecuta.
Esto significa que cada dispositivo necesita tener Ansible instalado, no solo una máquina central. También significa que los playbooks que apuntan a hosts: localhost o los tipos de conexión local funcionan mejor para la automatización distribuida por Level.
ℹ️ NOTA: Los playbooks que apuntan a hosts remotos por SSH siguen funcionando — el dispositivo actúa como nodo de control de Ansible para esas conexiones remotas. Esto es útil en casos donde un dispositivo administrado necesita alcanzar a otros en su red local.
Crear un Script de Level para Ansible
El script de Level es un contenedor de shell que llama a ansible-playbook. El archivo del playbook en sí se adjunta por separado y se descarga en el dispositivo en tiempo de ejecución.
Para Linux y macOS
1. Ve a Automations → Scripts y haz clic en + New script.
2. Establece el intérprete en Shell (Bash).
3. Añade la invocación del playbook:
Bash
#!/bin/bash
ansible-playbook /path/to/playbook.yml
if [ $? -ne 0 ]; then
echo "Playbook failed on $(hostname)" >&2
exit 1
fi
4. Adjunta el archivo del playbook al script o súbelo a Automations → Files y usa una acción Download File para colocarlo en el dispositivo antes de que se ejecute el script.
💡 CONSEJO: Usa ansible-playbook --check durante el desarrollo para hacer una ejecución de prueba que valide la sintaxis y la conectividad sin realizar cambios.
Para Windows (mediante WSL)
Establece el intérprete en PowerShell.
Llama a Ansible a través de WSL:
PowerShell
wsl ansible-playbook /mnt/c/LevelPlaybooks/network_test.yml
WSL debe estar ya instalado y configurado en el dispositivo. Consulta Configuración de Ansible en Windows más abajo.
Para Windows (mediante Cygwin o Git Bash)
PowerShell
C:\cygwin64\bin\bash.exe -lc "ansible-playbook /cygdrive/c/LevelPlaybooks/playbook.yml"
Configuración de Ansible en Endpoints de Windows
Dado que cada dispositivo ejecuta el playbook localmente, los endpoints de Windows necesitan un shell compatible con POSIX con Python y Ansible instalados. Dos opciones:
Opción A: Windows Subsystem for Linux (WSL)
1. En PowerShell como Administrador, ejecuta:
PowerShell
wsl --install
Reinicia cuando se te solicite.
2. Desde el shell de Ubuntu que se abre después del reinicio:
Bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip
pip3 install ansible
3. Verifica:
Bash
ansible --version
ansible-playbook --version
4. En los scripts de Level, llama a Ansible mediante wsl ansible-playbook ... desde PowerShell.
Opción B: Cygwin o Git Bash
1. Instala Cygwin o Git for Windows, seleccionando Python 3, pip y OpenSSH durante la instalación.
2. Desde el shell de Cygwin o Git Bash:
Bash
pip3 install ansible
3. En los scripts de Level, llama a Ansible invocando directamente el ejecutable de Bash:
PowerShell
C:\cygwin64\bin\bash.exe -lc "ansible-playbook /path/to/playbook.yml"
⚠️ ADVERTENCIA: Alinea las versiones de Python y Ansible en todos los endpoints de Windows. Las discrepancias de versiones entre endpoints provocan un comportamiento inconsistente difícil de diagnosticar.
Configuración del Playbook para Ejecución Local
Cuando los playbooks se ejecutan localmente en cada dispositivo en lugar de desde un nodo de control central, algunos ajustes de configuración son útiles:
Usa hosts: localhost with connection: local para las tareas que deben ejecutarse en el propio dispositivo:
YAML
- name: Local configuration
hosts: localhost
connection: local
tasks:
- name: Check connectivity
ansible.builtin.ping:
Añade indicadores de modo detallado durante el desarrollo para obtener resultados detallados en la consola de Level:
Bash
ansible-playbook /path/to/playbook.yml -vv
Level transmite toda la salida de stdout/stderr, por lo que el modo detallado muestra el detalle tarea por tarea de forma inline.
Mejores Prácticas
Valida localmente antes de desplegar a través de Level. Ejecuta
ansible-playbook playbook.yml --checken un dispositivo de prueba primero. Los errores de sintaxis en el playbook aparecen de inmediato en lugar de a mitad de una ejecución en producción.Sal con código distinto de cero en caso de fallo. Level marca una ejecución de script como fallida solo si el script termina con un código distinto de cero. La
if [ $? -ne 0 ]La verificación en el contenedor anterior lo hace automáticamente. Sin ella, un playbook fallido puede parecer exitoso en el historial de ejecuciones de Level.Mantén los playbooks idempotentes. Los playbooks de Ansible deben producir el mismo resultado ya sea que se ejecuten una o diez veces. Esto los hace seguros para volver a ejecutar mediante Level sin efectos secundarios no deseados.
Usa el repositorio de archivos de Level para los playbooks. Sube los archivos del playbook
.ymlarchivos a Automations → Files, luego usa una acción Download File antes del paso del script para colocarlos en cada dispositivo. Esto mantiene tus playbooks con control de versiones en Level y garantiza que cada dispositivo obtenga la versión actual.
Preguntas Frecuentes
¿Necesito Ansible en cada dispositivo administrado o solo en un servidor central? Cada dispositivo en el que desees ejecutar un playbook necesita tener Ansible instalado localmente. Level no se conecta por SSH desde un nodo de control central — distribuye y ejecuta el playbook en cada dispositivo de forma independiente.
¿Puede el playbook apuntar a otros hosts por SSH desde el dispositivo administrado? Sí. El dispositivo administrado actúa como nodo de control de Ansible para cualquier conexión remota definida en el playbook. Las claves SSH y las credenciales deben estar presentes en el propio dispositivo administrado.
Mi playbook funciona bien localmente pero falla en Level. ¿Qué debo verificar primero? Verifica el contexto de usuario. Level ejecuta scripts como
rooten Linux/macOS y comoSYSTEMen Windows. Si el playbook depende del directorio de inicio de un usuario, PATH o una variable de entorno que solo está configurada para un usuario específico, no encontrará esos recursos. Usa rutas absolutas y una configuración de entorno explícita en el playbook.¿Cómo paso variables al playbook en tiempo de ejecución? Usa el
--extra-varsen la llamadaansible-playbooken la llamada. Las variables del sistema de Level y las variables de automatización se pueden pasar usando el{x}del editor de scripts. Por ejemplo:
ansible-playbook /path/to/playbook.yml --extra-vars "hostname={{level_device_name}}"¿Puedo programar el playbook para que se ejecute de forma recurrente? Sí. Adjunta el script a una automatización con un disparador Programado. Establece el horario, añade una acción Download File para el playbook si está almacenado en el repositorio de archivos de Level, luego añade la acción Run Script. La automatización ejecuta el playbook en cada dispositivo que coincida con las condiciones del disparador.
