ShFlow– Automatización ligera y extensible con Shell
Framework modular en Bash para automatización distribuida, inspirado en la filosofía de Ansible pero optimizado para entornos shell-friendly.
Este proyecto ha sido renombreado a ShFlow (y se abandona el anterior nombre BashFlow)

Este proyecto está pendiente de estudiar bajo que licencia es liberado, puede que con la licencia GNU GPLv3 para garantizar que ShFlow y cualquier derivado permanezcan libre y abierto...
ShFlow. Estamos en aún en desarrollo
Dado que he visto suficiente interes en el proyecto, temporalemente lo he pasado a modo privado para su desarrollo y validación
Dejo aplazado su publicación hasta avanzar en el desarrollo y disponer de una version estable.
ShFlow. Idea y el Porqué
La automatización mediante procesos bash es uno de los primeros conceptos existentes en la historia de los servidores. El proceso se ha intentado mejorar usando las ventajas de los nuevos lenguajes de programación, como es Python y se ha "encapsulado" en un nuevo paradigma de la automatización Ansible que parece ser es el que se está convirtiendo en un estandar.
Sin embargo usando Ansible, que depende totalmente de Python hay que pelear con el problema de dependencias e incompatibilidad entre los módulos de python y sus versiones, tanto en el servidor que ejecuta la automatización, como con la versiones de Python de los servidores administrados.
Mi propuesta es crear una herramienta de automatización inspirada en Ansible pero basada en la Shell de Linux, en particular en bash.
Esta solución tiene mucho sentido si lo que buscas es simplicidad, portabilidad y evitar el infierno de dependencias de Python.
Bash es ubicuo, ligero y muy estable en entornos Unix-like.
Mi propuesta, es un proyecto que he denominado ShFlow
.
El nombre lo he elegido por las siguiente razones, suena moderno, ágil y transmite justo lo que queremos: flujo de automatización con Shell, sin complicaciones.
ShFlow. Diseño Base y Punto de partida
La idea inicial es incorporar una sintaxis tipo YAML en ShFlow.
Permitimos que los usuarios actuales de Ansible se sientan en terreno familiar, se facilita la lectura declarativa de tareas, y mantiene la flexibilidad de Bash como motor de ejecución.
Ejemplo de playbook para shflow
usando sintaxis yaml.
En este ejemplo el playbook usa el modulo package.sh
para realizar 2 tareas:
- Actualizar el Sistema Operativo de modo completo (tanto si está basado en paquetería .deb o .rpm)
- Actualizaciones de Seguridad, si el servidor está basado en RPM, el sistema solo realiza la actualizacion de los parches de seguirad (en Debian se corresponde con una actualización completa)
tasks:
- name: Actualizar sistema completo
module: package
args:
state: system-update
update_type: full
become: true
- name: Aplicar parches de seguridad (solo RPM)
module: package
args:
state: system-update
update_type: security
become: true
Si por ejemplo nos quedamos con la primera tarea del playbook lo podemos ejecutar de la siguiente forma:
./bashflow.sh -f /tmp/update_so.yaml -h soloconlinux
Y se realizará la actualización del S.O del servidor soloconlinux:

Módulos y Documentación
la idea es que la herramienta pueda crecer simplemente incorporando y mejorando sus módulos, estos módulos son scripts en bash que realizan el trabajo duro que se le indica en el playbook.
Además en importante el mantener documentado todo, por lo que el propio framework de BashFlow incluye su propio documentador.
Su uso es tan sencilo como escribir en la línea de comando:
core/utils/module-docgen.sh
✅ Documentación generada en docs/modules-list.md
El fichero que se genera se muestra así:

Repositorio
El código de todo el proyecto estará disponible en mi propio repositorio de Gitea.
En la estructura basica del proyecto hay 3 directorios diferenciados:
core/
: módulos base y utilidadescommunity_modules/
: módulos especializados o experimentalesuser_modules/
: módulos propios del usuario o de una organización
Estado del Proyecto
Para estar al tanto del avance de BashFlow
te recomiendo sigas las publicaciones de SoloConLinux, aquí iremos publicando el avance del proyecto y las funcionalidades incluidas.
Actualmente el repositorio del proyecto está en modo privado.