
YAMLコンポーズファイルを使用する宣言型KVM/QEMU VMオーケストレーションツール。libvirtやXMLを使わずに、cloud-init、SSH、PCIパススルー、イメージ検証を備えたマルチVMスタックを管理します。
KVM向けのDocker Compose。1つのYAMLファイルでマルチVMスタックを定義。libvirt不要、XML不要、分散コントロールプレーン不要。
Webサイトとドキュメント:https://zeroecco.github.io/holos/
プリミティブはコンテナではなくVMです。各ワークロードインスタンスは、独自のカーネル境界、qcow2オーバーレイ、cloud-initシード、および生成されたSSHアクセスを取得します。
Linux +
/dev/kvmが必要です。macOSビルドはvalidate,import,images,pullなどのオフラインコマンドを実行できますが、upおよびrunにはKVMホストが必要です。
使い捨てVM1台、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です。
プレビルドバイナリは各 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]
start all services
holos run [flags] <image> [-- cmd...] launch a one-off VM
holos down <project> stop and remove a project
holos ps [-f holos.yaml] list running projects
holos start [-f holos.yaml] [svc] start a stopped service or all services
holos stop [-f holos.yaml] [svc] stop a service or all services
holos console <project> [<inst>] attach serial console
holos exec <project> [<inst>] [-- cmd...]
SSH into an instance
holos logs <project> [<svc|inst>] show console logs
holos inspect [-f holos.yaml] [project|instance]
inspect state as JSON
holos validate [-f holos.yaml] validate compose file (--capacity/--network)
holos pull <image> pull a cloud image
holos verify <image>|--all verify cached image checksums
holos images list available images
holos images lock -f holos.yaml [-o holos.images.lock]
write project image lockfile
holos snapshots {create|list|rm|restore|export} ... manage root snapshots
holos volumes [-f holos.yaml] [--json]
list named volumes
holos volumes rm <project> <volume> remove a detached named volume
holos volumes export <project> <volume> <path>
export a detached named volume
holos volumes snapshot <project> <volume> <snapshot>
snapshot a detached named volume
holos volumes snapshots <project> <volume>
list volume snapshots
holos volumes snapshot-rm <project> <volume> <snapshot>
remove a volume snapshot
holos volumes snapshot-restore <project> <volume> <snapshot>
restore a volume snapshot
holos volumes snapshot-export <project> <volume> <snapshot> <path>
export a volume snapshot
holos volumes resize [--shrink] <project> <volume> <size>
resize a detached named volume
holos devices [--gpu] list PCI devices and IOMMU groups
holos completion <bash|zsh|fish> print shell completion script
holos doctor [--json] check host dependencies
holos install [-f holos.yaml] [--system] [--enable]
install a systemd unit
holos uninstall [-f holos.yaml] [--system]
remove the systemd unit
holos import [vm...] [--all] [--xml file] [--connect uri] [-o file]
convert virsh VMs into holos.yaml
exec、systemdインストール、virshインポート、doctor。holos.yamlのエディタ補完と検証。小さなnginxの例から始めましょう:
holos up -f examples/alpine-nginx/holos.yaml
curl localhost:8080
holos down alpine-nginx
examplesディレクトリには、Dockerfileプロビジョニング、GPUパススルー、およびdepends_on、生成された設定、レプリカを示すマルチサービススタックも含まれています。
/dev/kvmを備えたLinuxqemu-system-x86_64qemu-imgcloud-localds、genisoimage、mkisofs、またはxorrisoのいずれかholos execとヘルスチェック用のsshホストを確認するにはholos doctorを実行します。
kex_exchange_identification: read: Connection reset by peer は通常、cloud-initがまだホストキーを再生成しsshdを再起動していることを意味します。holos execはデフォルトで最大60秒待機しますが、非常に遅い初回起動では、再試行するかholos exec -w 5m <project>が必要になる場合があります。
Login incorrect と表示されるシリアルコンソールは、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を参照してください。