
Декларативный инструмент оркестрации виртуальных машин KVM/QEMU, использующий YAML-файлы компоновки. Управляет стеками из нескольких ВМ с cloud-init, SSH, пробросом PCI и проверкой образов без libvirt или XML.
Docker compose для KVM. Определяйте много-VM стеки в одном YAML-файле. Без libvirt, без XML, без распределённой плоскости управления.
Сайт и документация: https://zeroecco.github.io/holos/
Примитив — это VM, а не контейнер. Каждый экземпляр рабочей нагрузки получает собственную границу ядра, qcow2-оверлей, cloud-init seed и сгенерированный SSH-доступ.
Требуется Linux +
/dev/kvm. Сборки для macOS выполняют офлайн-команды, такие какvalidate,import,imagesиpull, ноupиrunтребуют KVM-хоста.
Одна одноразовая VM, без compose-файла:
holos run alpine
holos exec <printed-project-name>
holos down <printed-project-name>
Односервисный стек, доступный через curl. Сохраните как holos.yaml:
name: hello
services:
web:
image: ubuntu:noble
ports:
- "8080:80"
cloud_init:
packages:
- nginx
write_files:
- path: /var/www/html/index.html
content: "hello from holos\n"
runcmd:
- systemctl restart nginx
holos up
curl localhost:8080
holos down hello
Это настоящая VM, загружающая cloud-образ, устанавливающая пакет, записывающая конфигурацию и пробрасывающая порт хоста.
Готовые бинарные файлы прикреплены к каждому GitHub-релизу:
TAG=v0.6.3
ASSET=holos_${TAG#v}_Linux_x86_64.tar.gz
BASE=https://github.com/zeroecco/holos/releases/download/$TAG
curl -LO $BASE/$ASSET
curl -LO $BASE/checksums.txt
grep " $ASSET$" checksums.txt | sha256sum -c -
gh attestation verify $ASSET --repo zeroecco/holos
sudo tar -xz -C /usr/local/bin -f $ASSET holos
holos version
holos doctor
Страницы релизов содержат контрольные суммы SHA-256 и аттестации артефактов GitHub для подписанного происхождения. Проверьте оба перед установкой бинарных файлов на продакшн-хосты.
Или соберите из исходников:
go build -o bin/holos ./cmd/holos
go test ./...
bin/holos doctor
holos up [-f holos.yaml] [--locked] [--lockfile path] [--lock-timeout 5m|--no-wait]
запустить все сервисы
holos run [flags] <image> [-- cmd...] запустить одноразовую VM
holos down <project> остановить и удалить проект
holos ps [-f holos.yaml] список запущенных проектов
holos start [-f holos.yaml] [svc] запустить остановленный сервис или все сервисы
holos stop [-f holos.yaml] [svc] остановить сервис или все сервисы
holos console <project> [<inst>] подключиться к последовательной консоли
holos exec <project> [<inst>] [-- cmd...]
SSH в экземпляр
holos logs <project> [<svc|inst>] показать логи консоли
holos inspect [-f holos.yaml] [project|instance]
инспектировать состояние как JSON
holos validate [-f holos.yaml] проверить compose-файл (--capacity/--network)
holos pull <image> загрузить cloud-образ
holos verify <image>|--all проверить контрольные суммы кэшированных образов
holos images список доступных образов
holos images lock -f holos.yaml [-o holos.images.lock]
записать lockfile образов проекта
holos snapshots {create|list|rm|restore|export} ... управление снапшотами root
holos volumes [-f holos.yaml] [--json]
список именованных томов
holos volumes rm <project> <volume> удалить отсоединённый именованный том
holos volumes export <project> <volume> <path>
экспортировать отсоединённый именованный том
holos volumes snapshot <project> <volume> <snapshot>
создать снапшот отсоединённого именованного тома
holos volumes snapshots <project> <volume>
список снапшотов тома
holos volumes snapshot-rm <project> <volume> <snapshot>
удалить снапшот тома
holos volumes snapshot-restore <project> <volume> <snapshot>
восстановить снапшот тома
holos volumes snapshot-export <project> <volume> <snapshot> <path>
экспортировать снапшот тома
holos volumes resize [--shrink] <project> <volume> <size>
изменить размер отсоединённого именованного тома
holos devices [--gpu] список PCI-устройств и групп IOMMU
holos completion <bash|zsh|fish> вывести скрипт автодополнения оболочки
holos doctor [--json] проверить зависимости хоста
holos install [-f holos.yaml] [--system] [--enable]
установить systemd-юнит
holos uninstall [-f holos.yaml] [--system]
удалить systemd-юнит
holos import [vm...] [--all] [--xml file] [--connect uri] [-o file]
конвертировать virsh VM в holos.yaml
exec, установка systemd, импорт virsh
и doctor.holos.yaml.Начните с небольшого примера nginx:
holos up -f examples/alpine-nginx/holos.yaml
curl localhost:8080
holos down alpine-nginx
Каталог примеров также включает провижининг через Dockerfile, GPU passthrough
и многосервисный стек, демонстрирующий depends_on, сгенерированную конфигурацию и
реплики.
/dev/kvmqemu-system-x86_64qemu-imgcloud-localds, genisoimage, mkisofs или xorrisossh для holos exec и healthchecksЗапустите holos doctor для проверки хоста.
kex_exchange_identification: read: Connection reset by peer обычно означает,
что cloud-init всё ещё перегенерирует ключи хоста и перезапускает sshd. holos exec
по умолчанию ждёт до 60 с, но очень медленным первым загрузкам может потребоваться ещё одна попытка или
holos exec -w 5m <project>.
Login incorrect