
holos v0.6.3
YAMLコンポーズファイルを使用する宣言型KVM/QEMU VMオーケストレーションツール。libvirtやXMLを使わずに、cloud-init、SSH、PCIパススルー、イメージ検証を備えたマルチVMスタックを管理します。
KVM 用の Docker compose。1 つの 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 1 台、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.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
CLI
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 に変換
ドキュメント
- ウェブサイト: ランディングページとレンダリングされたドキュメント。
- CLI ガイド: アドホック VM、
exec、systemd インストール、virsh インポート、 およびdoctor。 - Compose ファイル: サービス、ボリューム、ヘルスチェック、 ネットワーキング、PCI パススルー、Dockerfile プロビジョニング、およびデフォルト。
- JSON Schema:
holos.yamlのエディタ補完と検証。 - サンプル: README 形式の説明付きの実行可能なスタックと テンプレートスタック。
- 未実装の機能: holos のシングルホスト KVM compose 目標に 適合する優先度付きのギャップ。
- 開発: ビルド、テスト、ホスト要件、および リリースプロセス。
- セキュリティポリシー: サポート対象バージョンと非公開報告。
- 脅威モデル / ハードニング: イメージ検証、状態のパーミッション、ロック、および運用ガイダンス。
- コントリビューション: ビルド、テスト、スタイル、および PR の規約。
サンプル
小さな 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のいずれか- UEFI または PCI パススルー用の OVMF / edk2-ovmf ファームウェア
holos execとヘルスチェック用のssh
holos doctor を実行してホストをチェックしてください。
トラブルシューティング
初回起動時に SSH がリセットされる
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 も追加しません。
macOS で up が失敗する
KVM は Linux カーネルの機能です。macOS バイナリはオーサリングやオフライン
コマンドには便利ですが、holos up と holos run は Linux KVM ホスト上で
実行する必要があります。
非目標
holos は Kubernetes ではありません。マルチホストクラスタリング、ライブ マイグレーション、サービスメッシュ、オーバーレイネットワーク、スケジューラ、 CRD、コントロールプレーンのクォーラムを解決しようとはしません。
目標は、Kubernetes の運用形態を持ち込むことなく、シングルホストスタックで KVM を使いやすくすることです。
ライセンス
Apache License, Version 2.0 の下でライセンスされています。帰属表示に
ついては NOTICE を参照してください。