Pular para o conteúdo

Primeiros passos

O caminho mais fácil — um único comando, que escolhe o binário certo para o seu SO/arquitetura:

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

O enodia pode ser executado imediatamente depois, nessa mesma janela do PowerShell — o instalador altera o PATH da sessão atual diretamente, e não apenas o valor persistido no registro que um terminal novo carregaria.

No Windows, o Chocolatey também funciona, se você preferir que o gerenciador de pacotes acompanhe as atualizações (um pacote winget está a caminho, ainda não publicado):

Janela do terminal
choco install enodia

Ou um pacote, se você preferir que o gerenciador de pacotes acompanhe as atualizações:

Janela do 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 os pacotes instalam o binário em /usr/bin/enodia e as páginas de manual em /usr/share/man/man1/, e criam um usuário de sistema enodia dedicado e sem privilégios — nada aqui precisa de root para rodar. Baixe o pacote certo na versão mais recente.

Ou um contêiner:

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

Desde a 1.1.0, esta imagem é construída e publicada por um repositório companheiro, EpicMorg/docker, com seu próprio cronograma — e não mais pelo pipeline de release deste projeto, embora o endereço publicado e as tags continuem os mesmos. Ela também é publicada em docker.io/epicmorg/enodia e no Quay, com as mesmas tags — latest, a versão major isolada (2) e a versão exata sem sufixo de build (por exemplo, 2.0.0 — confirmado na prática nos três registries; as tags de um pipeline anterior tinham o formato 1.0.0-1, que ainda podem ser baixadas, mas não é assim que as novas versões são marcadas daqui em diante). Duas mudanças reais que vale conhecer: a imagem agora é apenas linux/amd64 (o arm64 foi descartado quando a publicação mudou de lugar) e ela roda como root em vez de um usuário dedicado, sobre a base própria do projeto, debian:trixie-light, em vez de scratch.

Requer Go — verifique o go.mod para saber a versão exata que o enodia usa atualmente.

Janela do terminal
git clone https://github.com/EpicMorg/enodia.git
cd enodia
go build -o enodia ./cmd/enodia
./enodia version
SO Arquitetura Versão mínima
Linux amd64, arm64 Kernel 3.2 ou posterior — Debian 8+, Ubuntu 14.04+, RHEL/CentOS 7+ atendem com folga
Windows amd64, arm64, 386 Windows 10 / Windows Server 2016 ou posterior
macOS amd64, arm64 macOS 12 Monterey ou posterior
Android (Termux) somente arm64 Android 7 ou posterior — o piso do próprio Termux, mais restrito que o mínimo de suporte a PIE do Android 5.0 Lollipop, que foi o que de fato motivou o build separado (veja a nota sobre o Termux acima). Dispositivos com root podem precisar de su — veja o aviso acima

Esses são os pisos do próprio toolchain do Go, e não algo que o enodia acrescenta. Compilar a partir do código-fonte com um Go mais novo eleva ainda mais o piso do macOS — essa é uma decisão do toolchain, não do projeto.

Crie um enodia.yaml ao lado do binário (ou em qualquer um dos locais listados em Configuração):

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

Depois execute:

Janela do terminal
enodia check
Janela do terminal
ID PRODUCT PATCH LIFECYCLE BRANCH SEVERITY REASON CVES
gitlab-main gitlab ...

O check sem --from coleta e avalia em um único processo — o enodia acessa o seu alvo e depois acessa a internet para consultar os dados de ciclo de vida. Se o seu alvo só tem acesso de rede à sua infraestrutura (um ambiente fechado) e não à internet, separe as duas fases:

Janela do terminal
# dentro da rede fechada - não precisa de internet
enodia collect --config enodia.yaml -o inventory.jsonl
# em qualquer outro lugar - não precisa de acesso aos seus serviços
enodia check --from inventory.jsonl

Um alvo com uma API privada precisa de uma credencial nomeada, resolvida a partir do mapa credentials: do próprio enodia.yaml (ou de um credentials.yaml separado — consulte Configuração):

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} é interpolado a partir do ambiente no momento do carregamento — consulte Configuração. Os segredos nunca precisam ficar no mesmo arquivo que o inventário dos seus serviços.

  • Conceitos para as decisões de design por trás de tudo isso.
  • Referência da CLI para todos os comandos e flags.
  • Visões para lifecycle, drift e fleet — não só a tabela padrão.