📦 Inventario ShFlow

🇪🇸 Descripción

El sistema de inventario de ShFlow permite definir los hosts, grupos y variables que participan en las tareas automatizadas. Se compone de tres archivos principales ubicados en core/inventory/:

core/inventory/
├── hosts.yaml      # Define los hosts y su pertenencia a grupos
├── groups.yaml     # Describe los grupos y sus metadatos
└── vars/
    └── all.yaml    # Variables globales para todos los hosts

🧩 hosts.yaml — Inventario principal

Este archivo define los hosts disponibles y su agrupación lógica. Cada host puede tener atributos como IP, privilegios (become), o variables específicas.

🧬 Sintaxis

all:
  hosts:
    nombre_host:
      ansible_host: <IP o FQDN>
      become: <true|false>
      <clave>: <valor>
  children:
    nombre_grupo:
      hosts:
        nombre_host:

🧪 Ejemplo

all:
  hosts:
    equipo1:
      ansible_host: 192.168.1.10
      become: true
      env: staging

    equipo2:
      ansible_host: 192.168.1.11
      become: false

  children:
    servidores_web:
      hosts:
        equipo1:
        equipo2:

🧩 groups.yaml — Metadatos de grupos

Este archivo permite describir los grupos definidos en hosts.yaml, asignar etiquetas y facilitar la organización.

🧬 Sintaxis

groups:
  nombre_grupo:
    description: <texto descriptivo>
    tags: [tag1, tag2, ...]

🧪 Ejemplo

groups:
  servidores_web:
    description: "Grupo de servidores que exponen servicios HTTP"
    tags: [nginx, apache, frontend]

🧩 vars/all.yaml — Variables globales

Este archivo define variables comunes que se aplican a todos los hosts, salvo que sean sobrescritas por variables de grupo o de host.

🧬 Sintaxis

clave: valor

🧪 Ejemplo

timezone: Europe/Madrid
ntp_servers:
  - 0.europe.pool.ntp.org
  - 1.europe.pool.ntp.org
default_packages:
  - curl
  - vim
  - bash-completion
ssh_port: 22
become: true
env: production
vault_enabled: true
vault_rotation_interval: 30d

🔄 Herencia y sobreescritura

  • Las variables definidas en vars/all.yaml se aplican a todos los hosts.
  • Pueden ser sobrescritas por variables definidas en:
    • vars/grupo.yaml (si existe)
    • vars/host.yaml (si existe)
  • Los atributos definidos en hosts.yaml tienen prioridad sobre los globales.

📜 Changelog

Consulta el historial de cambios en changelog/inventory.md