
Ferramenta declarativa de orquestração de VMs KVM/QEMU usando arquivos de composição YAML. Gerencia stacks de múltiplas VMs com cloud-init, SSH, PCI passthrough e verificação de imagens sem libvirt ou XML.
Docker compose para KVM. Defina stacks multi-VM em um único arquivo YAML. Sem libvirt, sem XML, sem plano de controle distribuído.
Website e documentação: https://zeroecco.github.io/holos/
O primitivo é uma VM, não um container. Cada instância de workload ganha seu próprio limite de kernel, overlay qcow2, seed cloud-init e acesso SSH gerado.
Requer Linux +
/dev/kvm. Builds macOS executam comandos off-line comovalidate,import,imagesepull, masuperunprecisam de um host KVM.
Uma VM descartável, sem arquivo compose:
holos run alpine
holos exec <printed-project-name>
holos down <printed-project-name>
Uma stack de serviço único que você pode curl. Salve como 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
Isso é uma VM real inicializando uma cloud image, instalando um pacote, escrevendo configuração e encaminhando uma porta do host.
Binários pré-compilados estão anexados a cada lançamento do GitHub:
TAG=v0.6.1
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
As páginas de lançamento incluem somas de verificação SHA-256 e atestações de artefatos do GitHub para proveniência assinada. Verifique ambos antes de instalar binários em hosts de produção.
Ou compile a partir do código-fonte:
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]
iniciar todos os serviços
holos run [flags] <image> [-- cmd...] lançar uma VM avulsa
holos down <project> parar e remover um projeto
holos ps [-f holos.yaml] listar projetos em execução
holos start [-f holos.yaml] [svc] iniciar um serviço parado ou todos os serviços
holos stop [-f holos.yaml] [svc] parar um serviço ou todos os serviços
holos console <project> [<inst>] anexar console serial
holos exec <project> [<inst>] [-- cmd...]
conectar SSH em uma instância
holos logs <project> [<svc|inst>] mostrar logs do console
holos inspect [-f holos.yaml] [project|instance]
inspecionar estado como JSON
holos validate [-f holos.yaml] validar arquivo compose (--capacity/--network)
holos pull <image> puxar uma cloud image
holos verify <image>|--all verificar somas de verificação da imagem em cache
holos images listar imagens disponíveis
holos images lock -f holos.yaml [-o holos.images.lock]
escrever arquivo de bloqueio de imagem do projeto
holos snapshots {create|list|rm|restore|export} ... gerenciar snapshots raiz
holos volumes [-f holos.yaml] [--json]
listar volumes nomeados
holos volumes rm <project> <volume> remover um volume nomeado desanexado
holos volumes export <project> <volume> <path>
exportar um volume nomeado desanexado
holos volumes snapshot <project> <volume> <snapshot>
criar snapshot de um volume nomeado desanexado
holos volumes snapshots <project> <volume>
listar snapshots de volume
holos volumes snapshot-rm <project> <volume> <snapshot>
remover um snapshot de volume
holos volumes snapshot-restore <project> <volume> <snapshot>
restaurar um snapshot de volume
holos volumes snapshot-export <project> <volume> <snapshot> <path>
exportar um snapshot de volume
holos volumes resize [--shrink] <project> <volume> <size>
redimensionar um volume nomeado desanexado
holos devices [--gpu] listar dispositivos PCI e grupos IOMMU
holos completion <bash|zsh|fish> imprimir script de completação de shell
holos doctor [--json] verificar dependências do host
holos install [-f holos.yaml] [--system] [--enable]
instalar uma unit systemd
holos uninstall [-f holos.yaml] [--system]
remover a unit systemd
holos import [vm...] [--all] [--xml file] [--connect uri] [-o file]
converter VMs virsh em holos.yaml
exec, instalação systemd, importação virsh e doctor.holos.yaml.Comece com o pequeno exemplo nginx:
holos up -f examples/alpine-nginx/holos.yaml
curl localhost:8080
holos down alpine-nginx
O diretório de exemplos também inclui provisionamento com Dockerfile, passagem GPU,
e uma stack multi-serviço que mostra depends_on, configuração gerada e
réplicas.
/dev/kvmqemu-system-x86_64qemu-imgcloud-localds, genisoimage, mkisofs ou xorrisossh para holos exec e healthchecksExecute holos doctor para verificar o host.
kex_exchange_identification: read: Connection reset by peer geralmente significa
que o cloud-init ainda está regenerando as chaves do host e reiniciando o sshd. holos exec
aguarda até 60s por padrão, mas inicializações muito lentas podem precisar de outra tentativa ou
holos exec -w 5m <project>.
Login incorrectO console serial pode tentar login automático antes que o cloud-init crie o usuário.
Aguarde por cloud-init ... finished no log do console e depois use holos exec.
Cloud images geralmente não vêm com uma senha de console, e o holos não adiciona uma.
up falha no macOSKVM é um recurso do kernel Linux. Binários macOS são úteis para criação e
comandos off-line, mas holos up e holos run devem ser executados em um host Linux KVM.
holos não é Kubernetes. Não tenta resolver clustering multi-host, migração ao vivo, service meshes, redes overlay, schedulers, CRDs ou quorum de plano de controle.
O objetivo é tornar o KVM funcional para stacks de host único sem importar a forma operacional do Kubernetes.
Licenciado sob a Apache License, Version 2.0. Veja
NOTICE para atribuição.