🚀 Primeros pasos con ShFlow

Esta guía te ayudará a instalar ShFlow, configurar un inventario mínimo y ejecutar tu primer playbook para obtener información de un equipo remoto usando el módulo facts.


🧭 Requisitos

  • Linux con Shell ≥ 4.4
  • yq y jq instalados
  • Acceso SSH a los hosts definidos
  • Git (para clonar el proyecto)

📦 Instalación

git clone https://github.com/luisgulo/ShFlow.git
cd ShFlow
./install.sh

🗂️ Inventario mínimo

Crea el archivo core/inventory/hosts.yaml:

all:
  hosts:
    mi_equipo:
      ansible_host: 192.168.1.100
      label: Equipo de pruebas

📄 Playbook básico

Crea el archivo facts_test.yaml:

tasks:
  - name: Inventario del sistema
    module: facts
    args:
      format: md
      output: "/tmp/informe_{{ name }}.md"
      host_label: "{{ label }}"

▶️ Ejecución

./shflow.sh -f facts_test.yaml -h mi_equipo --debug

Esto generará un informe en /tmp/informe_mi_equipo.md con datos del sistema remoto.


✅ Resultado esperado

  • Conexión SSH establecida
  • Trazas limpias en consola
  • Informe Markdown con CPU, RAM, OS, particiones, red…

📚 ¿Y ahora qué?

  • Explora otros módulos en docs/modules/
  • Crea grupos en el inventario
  • Usa vars/ para definir configuración global

⚙️ Instalación automatizada con install.sh

ShFlow incluye un script de instalación que prepara la estructura base del proyecto, crea los directorios necesarios y configura el entorno para que puedas usar los comandos desde cualquier terminal, sin importar la ruta.

🧩 ¿Qué hace install.sh?

  • Detecta si la instalación es global (/opt/shflow) o local ($HOME/shflow)
  • Crea las rutas estándar: core/modules/, core/inventory/, docs/, etc.
  • Copia los archivos base del proyecto
  • Preserva rutas sensibles como vault, inventory y user_modules si ya existen
  • Crea symlinks en el PATH (shflow, shflow-doc, shflow-check, etc.)
  • Añade SHFLOW_HOME y el PATH al .bashrc o .zshrc del usuario

▶️ Ejecución

./install.sh

Una vez completado, puedes ejecutar ShFlow desde cualquier terminal:

shflow -f facts_test.yaml -h mi_equipo

No necesitas estar en el directorio del proyecto.

📎 Verificación

shflow version
shflow-check