
YAML compose 파일을 사용하는 선언적 KVM/QEMU VM 오케스트레이션 도구입니다. cloud-init, SSH, PCI 패스스루, 이미지 검증을 통해 libvirt나 XML 없이 멀티 VM 스택을 관리합니다.
KVM용 Docker Compose. 하나의 YAML 파일로 멀티 VM 스택을 정의할 수 있습니다. libvirt, XML, 분산 제어 평면이 필요 없습니다.
웹사이트 및 문서: https://zeroecco.github.io/holos/
기본 단위는 컨테이너가 아닌 VM입니다. 모든 워크로드는 고유한 커널 경계, qcow2 오버레이, cloud-init 시드, 생성된 SSH 접근 권한을 갖게 됩니다.
Linux +
/dev/kvm이 필요합니다. macOS 빌드는validate,import,images,pull같은 오프라인 명령은 실행할 수 있지만,up과run은 KVM 호스트가 있어야 합니다.
사용 후 폐기 가능한 VM 하나, Compose 파일 불필요:
holos run alpine
holos exec <출력된-프로젝트-이름>
holos down <출력된-프로젝트-이름>
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이 클라우드 이미지를 부팅하고, 패키지를 설치하고, 설정을 작성하고, 호스트 포트를 전달하는 과정입니다.
사전 빌드된 바이너리는 모든 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
릴리스 페이지에는 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> 클라우드 이미지 가져오기
holos verify <image>|--all 캐시된 이미지 체크섬 확인
holos images 사용 가능한 이미지 목록
holos images lock -f holos.yaml [-o holos.images.lock]
프로젝트 이미지 잠금 파일 작성
holos snapshots {create|list|rm|restore|export} ... 루트 스냅샷 관리
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 패스스루, depends_on, 생성된 구성, 복제본을 보여주는 멀티 서비스 스택도 포함되어 있습니다.
/dev/kvmqemu-system-x86_64qemu-imgcloud-localds, genisoimage, mkisofs 또는 xorriso 중 하나holos exec 및 헬스체크를 위한 sshholos doctor를 실행하여 호스트를 확인하세요.
kex_exchange_identification: read: Connection reset by peer는 일반적으로 cloud-init이 호스트 키를 다시 생성하고 sshd를 다시 시작하는 중임을 의미합니다. holos exec는 기본적으로 최대 60초 동안 대기하지만, 매우 느린 첫 부팅의 경우 재시도가 더 필요하거나 holos exec -w 5m <project>를 사용해야 할 수 있습니다.
직렬 콘솔은 cloud-init이 사용자를 생성하기 전에 자동 로그인을 시도할 수 있습니다. 콘솔 로그에서 cloud-init ... finished를 기다린 후 holos exec를 사용하세요. 클라우드 이미지에는 일반적으로 콘솔 비밀번호가 없으며, holos는 비밀번호를 추가하지 않습니다.
up 실패KVM은 Linux 커널 기능입니다. macOS 바이너리는 작성 및 오프라인 명령에 유용하지만, holos up와 holos run은 Linux KVM 호스트에서 실행되어야 합니다.
holos는 Kubernetes가 아닙니다. 멀티 호스트 클러스터링, 라이브 마이그레이션, 서비스 메시, 오버레이 네트워크, 스케줄러, CRD 또는 제어 평면 쿼럼을 해결하려고 하지 않습니다.
목표는 Kubernetes의 운영 형태를 가져오지 않고 단일 호스트 스택에서 KVM을 사용 가능하게 만드는 것입니다.
Apache License, Version 2.0에 따라 라이선스가 부여됩니다. 라이선스 귀속 정보는 NOTICE를 참조하십시오.