アップデート一覧に戻る
New releaseSep 21, 2026

holos v0.6.3

YAMLコンポーズファイルを使用する宣言型KVM/QEMU VMオーケストレーションツール。libvirtやXMLを使わずに、cloud-init、SSH、PCIパススルー、イメージ検証を備えたマルチVMスタックを管理します。

共有
holos

KVM 用の Docker compose。1 つの YAML ファイルでマルチ VM スタックを定義。libvirt も XML も分散コントロールプレーンも不要。

ウェブサイトとドキュメント: https://zeroecco.github.io/holos/

プリミティブはコンテナではなく VM。すべてのワークロードインスタンスは独自の カーネル境界、qcow2 オーバーレイ、cloud-init シード、生成された SSH アクセスを 持ちます。

クイックスタート

Linux + /dev/kvm が必要です。macOS ビルドでは validateimportimagespull などのオフラインコマンドは実行できますが、uprun には 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 を備えた Linux
  • qemu-system-x86_64
  • qemu-img
  • cloud-localdsgenisoimagemkisofs、または 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 upholos run は Linux KVM ホスト上で 実行する必要があります。

非目標

holos は Kubernetes ではありません。マルチホストクラスタリング、ライブ マイグレーション、サービスメッシュ、オーバーレイネットワーク、スケジューラ、 CRD、コントロールプレーンのクォーラムを解決しようとはしません。

目標は、Kubernetes の運用形態を持ち込むことなく、シングルホストスタックで KVM を使いやすくすることです。

ライセンス

Apache License, Version 2.0 の下でライセンスされています。帰属表示に ついては NOTICE を参照してください。

カテゴリ