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 puntos de terminación de Windows que necesitan un entorno compatible con POSIX para ejecutar Ansible.
⚙️ REQUISITOS PREVIOS
Ansible instalado en cada dispositivo de destino (no un nodo de control central — ver a continuación)
Para dispositivos Unix/macOS/Linux:
ansibleyansible-playbookdisponibles enPATHPara dispositivos Windows: un entorno compatible con POSIX (WSL o Cygwin/Git Bash) con Ansible instalado
Agente Level desplegado en todos los dispositivos de destino
Cómo Level Ejecuta Playbooks de Ansible
Ansible estándar utiliza una máquina de control central para SSH en 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 comando ansible-playbook se ejecuta en un dispositivo:
El script (y los archivos de playbook adjuntos) se descargan 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 se ejecuta el playbook.
Esto significa que cada dispositivo necesita Ansible instalado, no solo una máquina central. También significa que los playbooks que apuntan a hosts: localhost o tipos de conexión locales funcionan mejor para la automatización distribuida de Level.
ℹ️ NOTA: Los playbooks que apuntan a hosts remotos a través de SSH siguen funcionando — el dispositivo actúa como el nodo de control de Ansible para esas conexiones remotas. Esto es útil en casos donde un dispositivo administrado necesita alcanzar otros en su red local.
Crear un Script de Level para Ansible
El script de Level es un envoltorio de shell que llama a ansible-playbook. El archivo de 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. Agrega 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 de playbook al script o cárgalo en Automations → Files y usa una acción Download File para colocarlo en el dispositivo antes de ejecutar 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 hacer cambios.
Para Windows (vía 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 ya debe estar instalado y configurado en el dispositivo. Ver Configurar Ansible en Windows a continuación.
Para Windows (vía Cygwin o Git Bash)
PowerShell
C:\cygwin64\bin\bash.exe -lc "ansible-playbook /cygdrive/c/LevelPlaybooks/playbook.yml"
Configurar Ansible en Puntos de Terminación de Windows
Porque cada dispositivo ejecuta el playbook localmente, los puntos de terminación de Windows necesitan una 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 scripts de Level, llama a Ansible a través de 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 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 puntos de terminación de Windows. Las incompatibilidades de versión entre puntos de terminación causan comportamiento inconsistente que es difícil de diagnosticar.
Configuración de 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 ayudan:
Usa hosts: localhost con connection: local para tareas que deben ejecutarse en el dispositivo mismo:
YAML
- name: Local configuration
hosts: localhost
connection: local
tasks:
- name: Check connectivity
ansible.builtin.ping:
Agrega banderas verbosas durante el desarrollo para obtener una salida detallada en la consola de Level:
Bash
ansible-playbook /path/to/playbook.yml -vv
Level transmite toda la salida stdout/stderr, así que el modo verbose muestra los detalles de cada tarea en línea.
Mejores Prácticas
Valida localmente antes de desplegar a través de Level. Ejecuta
ansible-playbook playbook.yml --checkprimero en un dispositivo de prueba. Los errores de sintaxis en el playbook aparecen inmediatamente en lugar de a mitad de una ejecución de producción.Sal con un código diferente de cero en caso de fallo. Level marca una ejecución de script como fallida solo si el script sale con un código diferente de cero. La verificación
if [ $? -ne 0 ]anterior lo hace automáticamente. Sin ella, un playbook fallido puede parecer un éxito en el historial de ejecución 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 re-ejecutar a través de Level sin efectos secundarios no intencionados.
Usa el repositorio de archivos de Level para playbooks. Carga archivos de playbook
.ymla Automations → Files, luego usa una acción Download File antes del paso de script para colocarlos en cada dispositivo. Esto mantiene tus playbooks versionados en Level y asegura que cada dispositivo obtenga la versión actual.
Preguntas Frecuentes
¿Necesito Ansible en cada dispositivo administrado o solo un servidor central? Cada dispositivo en el que quieras ejecutar un playbook necesita Ansible instalado localmente. Level no hace 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 a través de SSH desde el dispositivo administrado? Sí. El dispositivo administrado actúa como el 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 dispositivo administrado en sí.
Mi playbook funciona bien localmente pero falla en Level. ¿Qué debo verificar primero? Verifica el contexto del usuario. Level ejecuta scripts como
rooten Linux/macOS y comoSYSTEMen Windows. Si el playbook depende de un directorio de inicio de usuario, PATH o variable de entorno que solo se establece para un usuario específico, no encontrará esos recursos. Usa rutas absolutas y configuración de entorno explícita en el playbook.¿Cómo paso variables al playbook en tiempo de ejecución? Usa la bandera
--extra-varsen la llamadaansible-playbook. Las variables del sistema de Level y las variables de automatización se pueden pasar usando el selector{x}en el editor de scripts. Por ejemplo:
ansible-playbook /path/to/playbook.yml --extra-vars "hostname=##{{level_device_name}}"¿Puedo programar el playbook para ejecutarse periódicamente? Sí. Adjunta el script a una automatización con un desencadenador programado. Establece el horario, agrega una acción Download File para el playbook si está almacenado en el repositorio de archivos de Level, luego agrega la acción Run Script. La automatización ejecuta el playbook en cada dispositivo que coincida con las condiciones del desencadenador.
