Ir al contenido

Primeros pasos

La vía más sencilla: un solo comando, que elige el binario adecuado para su sistema operativo y arquitectura:

Ventana de terminal
curl -fsSL https://get.enodia.sh/unix | sh # Linux/macOS/Android (Termux)
Ventana de terminal
irm https://get.enodia.sh/windows | iex # Windows

enodia se puede ejecutar inmediatamente después en esa misma ventana de PowerShell: el instalador modifica directamente el PATH de la sesión actual, no solo el valor persistido en el registro que recogería una terminal nueva.

En Windows también funciona Chocolatey, si prefiere que su gestor de paquetes se ocupe de las actualizaciones (hay un paquete de winget en camino, aún no publicado):

Ventana de terminal
choco install enodia

O un paquete, si prefiere que su gestor de paquetes se ocupe de las actualizaciones:

Ventana de terminal
sudo dpkg -i enodia_linux_amd64.deb # Debian/Ubuntu
sudo rpm -i enodia_linux_amd64.rpm # Fedora/RHEL
apk add --allow-untrusted enodia_linux_amd64.apk # Alpine
sudo pacman -U enodia_linux_amd64.pkg.tar.zst # Arch

Todos los paquetes instalan el binario en /usr/bin/enodia y las páginas de manual en /usr/share/man/man1/, y crean un usuario de sistema enodia dedicado y sin privilegios: nada de esto necesita root para ejecutarse. Descargue el adecuado desde la última versión.

O un contenedor:

Ventana de terminal
docker run --rm \
-v /etc/enodia:/config:ro \
ghcr.io/epicmorg/enodia:latest check --config /config/config.yaml

Desde la 1.1.0, esta imagen la compila y publica un repositorio complementario, EpicMorg/docker, con su propio calendario, y ya no el pipeline de publicación de este proyecto, aunque la dirección publicada y las etiquetas siguen siendo las mismas. También se publica en docker.io/epicmorg/enodia y en Quay, con las mismas etiquetas: latest, la versión mayor sola (2) y la versión exacta sin sufijo de compilación (p. ej. 2.0.0, confirmado en vivo en los tres registros; las etiquetas de un pipeline anterior tenían la forma 1.0.0-1, que se pueden seguir descargando, pero así ya no se etiquetarán las nuevas versiones). Dos cambios reales que conviene conocer: la imagen ahora es solo linux/amd64 (arm64 se eliminó al trasladarse la publicación) y se ejecuta como root en lugar de un usuario dedicado, sobre la base propia del proyecto debian:trixie-light en lugar de scratch.

Requiere Go; consulte go.mod para ver la versión exacta a la que se dirige enodia actualmente.

Ventana de terminal
git clone https://github.com/EpicMorg/enodia.git
cd enodia
go build -o enodia ./cmd/enodia
./enodia version
SO Arquitectura Versión mínima
Linux amd64, arm64 Kernel 3.2 o posterior: Debian 8+, Ubuntu 14.04+ y RHEL/CentOS 7+ cumplen el requisito con holgura
Windows amd64, arm64, 386 Windows 10 / Windows Server 2016 o posterior
macOS amd64, arm64 macOS 12 Monterey o posterior
Android (Termux) solo arm64 Android 7 o posterior: el mínimo del propio Termux, más estricto que el mínimo de compatibilidad con PIE de Android 5.0 Lollipop que motivó en realidad la compilación separada (consulte la nota sobre Termux más arriba). Los dispositivos con root pueden necesitar su: consulte la advertencia anterior

Estos son los mínimos de la propia cadena de herramientas de Go, no algo que enodia añada por su cuenta. Compilar desde el código fuente con un Go más reciente eleva aún más el mínimo de macOS; es una decisión de la cadena de herramientas, no del proyecto.

Cree enodia.yaml junto al binario (o en cualquiera de las ubicaciones indicadas en Configuración):

enodia.yaml
schemaVersion: 1
targets:
- id: gitlab-main
product: gitlab
address: https://gitlab.example.com

A continuación, ejecute:

Ventana de terminal
enodia check
Ventana de terminal
ID PRODUCT PATCH LIFECYCLE BRANCH SEVERITY REASON CVES
gitlab-main gitlab ...

check sin --from recopila y evalúa en un único proceso: enodia accede a su destino y después accede a internet para consultar los datos de su ciclo de vida. Si su destino solo tiene acceso de red a su infraestructura (un entorno cerrado) y no a internet, separe las dos fases:

Ventana de terminal
# dentro de la red cerrada: no se necesita internet
enodia collect --config enodia.yaml -o inventory.jsonl
# en cualquier otro lugar: no se necesita acceso a sus servicios
enodia check --from inventory.jsonl

Un destino con una API privada necesita una credencial con nombre, que se resuelve a partir del mapa credentials: del propio enodia.yaml (o de un credentials.yaml separado; consulte Configuración):

enodia.yaml
schemaVersion: 1
targets:
- id: gitlab-main
product: gitlab
address: https://gitlab.example.com
credentials: gitlab-token
credentials:
gitlab-token:
kind: token-header
header: PRIVATE-TOKEN
value: "${GITLAB_TOKEN}"

${GITLAB_TOKEN} se interpola desde el entorno en el momento de la carga; consulte Configuración. Los secretos nunca tienen por qué estar en el mismo archivo que su inventario de servicios.

  • Conceptos, para las decisiones de diseño que hay detrás de todo esto.
  • Referencia de la CLI, para todos los comandos y opciones.
  • Vistas, para lifecycle, drift y fleet, no solo la tabla predeterminada.