🧠 Ejecutor: shflow
🇪🇸 Descripción
El ejecutor shflow permite aplicar tareas declarativas definidas en YAML sobre uno o varios hosts, usando módulos Shell con trazas reproducibles y documentación bilingüe.
Cada tarea se ejecuta de forma modular, con argumentos defensivos, condiciones opcionales (condition:), y sustitución automática de variables como {{ name }} y {{ label }}.
🧩 Argumentos disponibles
| Opción | Descripción |
|---|---|
-f |
Ruta al archivo YAML con las tareas |
-h |
Host individual definido en el inventario |
-g |
Grupo de hosts definido en el inventario |
--debug |
Muestra trazas extendidas |
version |
Muestra versión y ubicación del ejecutor |
🧩 Nuevas fuentes de destino
Además de -h, -g y hosts:, ahora puedes usar hostgroup: directamente en el playbook para ejecutar tareas sobre un grupo definido en el inventario.
hostgroup: seleccion
tasks:
- name: Actualizar sistema completo
module: package
args:
state: system-update
update_type: full
become: trueEsto equivale a ejecutar:
shflow -f playbook.yaml -g seleccion🧠 Trazas esperadas (--debug)
📦 Playbook: playbook.yaml
📡 Grupo definido en hostgroup: seleccion
🔍 Hosts encontrados: imac, soloconlinux
🔧 Ejecutando tarea: "Actualizar sistema completo"
...▶️ Ejemplo de uso
shflow -f examples/wait.yaml -h localhost
shflow -f examples/basic_conditions.yaml
shflow version🧪 Condiciones con condition:
Puedes usar condition: para ejecutar tareas solo si se cumple una expresión Shell. Se evalúa el código de retorno (0 = éxito).
- name: Solo si el host es localhost
module: wait
args:
seconds: 1
condition: '[ "{{ name }}" = "localhost" ]'
- name: Solo si existe el archivo
module: wait
args:
seconds: 2
condition: 'test -f /tmp/flag.txt'🧠 Trazas esperadas (--debug)
🔧 Ejecutando tarea: "Solo si el host es localhost"
🔍 Condición cumplida: [ "localhost" = "localhost" ]
⏳ [wait] Esperando 1 segundos...
✅ [wait] Pausa completada
🔧 Ejecutando tarea: "Solo si existe el archivo"
⏭️ Tarea omitida por condición: test -f /tmp/flag.txt📜 Changelog
Consulta el historial de cambios en changelog/shflow.md