🧠 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: true

Esto 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