Початок роботи
Установлення
Section titled “Установлення”Найпростіший шлях — одна команда, яка сама обирає потрібний бінарник для Вашої ОС/архітектури:
curl -fsSL https://get.enodia.sh/unix | sh # Linux/macOS/Android (Termux)irm https://get.enodia.sh/windows | iex # Windowsenodia можна запускати одразу після цього в тому самому вікні
PowerShell — інсталятор оновлює PATH поточного сеансу напряму, а не лише
збережене значення в реєстрі, яке підхопив би новий термінал.
У Windows також працює Chocolatey, якщо Ви бажаєте, щоб оновлення відстежував менеджер пакетів (пакет winget на підході, але ще не опублікований):
choco install enodiaАбо пакет, якщо Ви бажаєте, щоб оновлення відстежував менеджер пакетів:
sudo dpkg -i enodia_linux_amd64.deb # Debian/Ubuntusudo rpm -i enodia_linux_amd64.rpm # Fedora/RHELapk add --allow-untrusted enodia_linux_amd64.apk # Alpinesudo pacman -U enodia_linux_amd64.pkg.tar.zst # ArchКожен пакет установлює бінарник у /usr/bin/enodia, man-сторінки — у
/usr/share/man/man1/ і створює окремого непривілейованого системного
користувача enodia — для роботи тут нічого не потребує root. Потрібний
пакет можна завантажити з
останнього релізу.
Або контейнер:
docker run --rm \ -v /etc/enodia:/config:ro \ ghcr.io/epicmorg/enodia:latest check --config /config/config.yamlПочинаючи з 1.1.0, цей образ збирає та публікує супутній репозиторій
EpicMorg/docker
за власним розкладом — а не конвеєр релізів цього проєкту, хоча адреса
публікації та теги залишилися тими самими. Образ також публікується в
docker.io/epicmorg/enodia і Quay з тими самими тегами — latest, гола
мажорна версія (2) і точна версія без суфікса збірки (наприклад,
2.0.0 — перевірено наживо в усіх трьох реєстрах; теги попереднього
конвеєра натомість мали вигляд 1.0.0-1, їх досі можна завантажити, але
нові релізи відтепер так не позначаються). Дві реальні зміни, про які
варто знати: образ тепер лише linux/amd64 (arm64 прибрали, коли
публікація переїхала), і він працює від імені root, а не окремого
користувача, на власній базі проєкту debian:trixie-light замість
scratch.
Збирання з вихідного коду
Section titled “Збирання з вихідного коду”Потрібен Go — точну версію, на яку наразі орієнтується enodia, дивіться в
go.mod.
git clone https://github.com/EpicMorg/enodia.gitcd enodiago build -o enodia ./cmd/enodia./enodia versionПідтримувані платформи
Section titled “Підтримувані платформи”| ОС | Архітектура | Мінімальна версія |
|---|---|---|
| Linux | amd64, arm64 | Ядро 3.2 або новіше — Debian 8+, Ubuntu 14.04+, RHEL/CentOS 7+ цілком підходять |
| Windows | amd64, arm64, 386 | Windows 10 / Windows Server 2016 або новіші |
| macOS | amd64, arm64 | macOS 12 Monterey або новіша |
| Android (Termux) | лише arm64 | Android 7 або новіший — власна нижня межа Termux, суворіша за мінімум підтримки PIE в Android 5.0 Lollipop, який і зумовив окрему збірку (див. примітку про Termux вище). Пристроям із root може знадобитися su — див. застереження вище |
Це власна нижня межа інструментарію Go, а не те, що enodia додає зверху. Збирання з вихідного коду новішою версією Go ще більше підіймає нижню межу для macOS — це рішення інструментарію, а не проєкту.
Ваша перша конфігурація
Section titled “Ваша перша конфігурація”Створіть enodia.yaml поруч із бінарником (або в будь-якому з місць,
перелічених у розділі Конфігурація):
schemaVersion: 1targets: - id: gitlab-main product: gitlab address: https://gitlab.example.comПотім запустіть:
enodia checkID PRODUCT PATCH LIFECYCLE BRANCH SEVERITY REASON CVESgitlab-main gitlab ...check без --from збирає дані та оцінює їх в одному процесі — enodia
звертається до Вашої цілі, а потім до інтернету, щоб перевірити дані її
життєвого циклу. Якщо з місця, де розташована Ваша ціль, є мережевий
доступ лише до Вашої інфраструктури (закрите середовище), а до інтернету
немає, розділіть ці дві фази:
# усередині закритої мережі - інтернет не потрібенenodia collect --config enodia.yaml -o inventory.jsonl
# будь-де ще - доступ до Ваших сервісів не потрібенenodia check --from inventory.jsonlДодавання облікових даних
Section titled “Додавання облікових даних”Цілі з приватним API потрібні іменовані облікові дані, які беруться з
власної мапи credentials: в enodia.yaml (або з окремого
credentials.yaml — див. Конфігурація):
schemaVersion: 1targets: - 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} підставляється із середовища під час завантаження —
див. Конфігурація.
Секретам ніколи не потрібно зберігатися в тому самому файлі, що й інвентар
Ваших сервісів.
- Концепції — архітектурні рішення, що стоять за всім цим.
- Довідник CLI — кожна команда та прапорець.
- Подання —
lifecycle,driftіfleet, а не лише таблиця за замовчуванням.