Przejdź do głównej zawartości

Pierwsze kroki

Najprostsza droga — jedno polecenie, które samo wybiera właściwy plik binarny dla danego systemu i architektury:

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

enodia można uruchomić od razu w tym samym oknie PowerShell — instalator modyfikuje PATH bieżącej sesji bezpośrednio, a nie tylko wartość zapisaną w rejestrze, którą odczytałby dopiero nowy terminal.

W systemie Windows działa również Chocolatey, jeśli aktualizacje ma śledzić menedżer pakietów (pakiet winget jest w przygotowaniu, jeszcze nie został opublikowany):

Okno terminala
choco install enodia

Można też użyć pakietu, jeśli aktualizacje ma śledzić menedżer pakietów:

Okno terminala
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

Każdy pakiet instaluje plik binarny w /usr/bin/enodia, strony man w /usr/share/man/man1/ i tworzy dedykowanego, nieuprzywilejowanego użytkownika systemowego enodia — nic tu nie wymaga uprawnień roota do działania. Właściwy pakiet można pobrać z najnowszego wydania.

Albo kontener:

Okno terminala
docker run --rm \
-v /etc/enodia:/config:ro \
ghcr.io/epicmorg/enodia:latest check --config /config/config.yaml

Od wersji 1.1.0 ten obraz jest budowany i publikowany przez repozytorium towarzyszące, EpicMorg/docker, według własnego harmonogramu — nie przez potok wydań tego projektu, choć adres publikacji i tagi pozostają takie same. Obraz jest też publikowany w docker.io/epicmorg/enodia i Quay, z tymi samymi tagami — latest, sama wersja główna (2) oraz dokładna wersja bez sufiksu kompilacji (np. 2.0.0 — potwierdzone na żywo we wszystkich trzech rejestrach; tagi wcześniejszego potoku wyglądały zamiast tego jak 1.0.0-1, nadal można je pobrać, ale nowe wydania nie są już tak tagowane). Dwie realne zmiany, o których warto wiedzieć: obraz jest teraz wyłącznie linux/amd64 (arm64 porzucono przy przeniesieniu publikacji) i działa jako root, a nie jako dedykowany użytkownik, na własnym obrazie bazowym projektu debian:trixie-light zamiast scratch.

Wymaga Go — dokładną wersję, na którą obecnie celuje enodia, podaje plik go.mod.

Okno terminala
git clone https://github.com/EpicMorg/enodia.git
cd enodia
go build -o enodia ./cmd/enodia
./enodia version
System Architektura Minimalna wersja
Linux amd64, arm64 Jądro 3.2 lub nowsze — Debian 8+, Ubuntu 14.04+, RHEL/CentOS 7+ spełniają to z zapasem
Windows amd64, arm64, 386 Windows 10 / Windows Server 2016 lub nowszy
macOS amd64, arm64 macOS 12 Monterey lub nowszy
Android (Termux) tylko arm64 Android 7 lub nowszy — minimum samego Termuxa, bardziej restrykcyjne niż minimum Androida 5.0 Lollipop z obsługą PIE, które faktycznie wymusiło osobną kompilację (zobacz uwagę o Termuxie powyżej). Urządzenia z rootem mogą wymagać su — zobacz ostrzeżenie powyżej

Są to minima samego zestawu narzędzi Go, a nie coś, co enodia dokłada od siebie. Kompilacja ze źródeł nowszą wersją Go podnosi minimum dla macOS jeszcze wyżej — to decyzja zestawu narzędzi, a nie projektu.

Należy utworzyć enodia.yaml obok pliku binarnego (albo w dowolnej z lokalizacji wymienionych w sekcji Konfiguracja):

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

Następnie uruchomić:

Okno terminala
enodia check
Okno terminala
ID PRODUCT PATCH LIFECYCLE BRANCH SEVERITY REASON CVES
gitlab-main gitlab ...

check bez --from zbiera i ocenia dane w jednym procesie — enodia łączy się z celem, a następnie z internetem, aby sprawdzić dane cyklu życia. Jeśli cel ma dostęp sieciowy tylko do infrastruktury (środowisko zamknięte), a nie do internetu, należy zamiast tego rozdzielić obie fazy:

Okno terminala
# wewnątrz sieci zamkniętej - dostęp do internetu nie jest potrzebny
enodia collect --config enodia.yaml -o inventory.jsonl
# gdziekolwiek indziej - dostęp do usług nie jest potrzebny
enodia check --from inventory.jsonl

Cel z prywatnym API potrzebuje nazwanego poświadczenia, rozwiązywanego z mapy credentials: w samym enodia.yaml (albo z osobnego pliku credentials.yaml — zobacz Konfiguracja):

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} jest podstawiane ze środowiska w chwili wczytywania — zobacz Konfiguracja. Sekrety nigdy nie muszą znajdować się w tym samym pliku co inwentarz usług.

  • Koncepcje — decyzje projektowe stojące za tym wszystkim.
  • Dokumentacja CLI — każde polecenie i flaga.
  • Widokilifecycle, drift i fleet, a nie tylko domyślna tabela.