アップデート一覧に戻る
New releaseAug 14, 2026

holos v0.6.2

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

共有
holos

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です。

Install

プレビルドバイナリは各 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

CLI

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

ドキュメント

  • Webサイト: ランディングページとレンダリングされたドキュメント。
  • CLIガイド: アドホックVM、exec、systemdインストール、virshインポート、doctor
  • Composeファイル: サービス、ボリューム、ヘルスチェック、ネットワーキング、PCIパススルー、Dockerfileプロビジョニング、デフォルト。
  • JSONスキーマ: holos.yamlのエディタ補完と検証。
  • : READMEスタイルの説明付きの実行可能およびテンプレートスタック。
  • 不足機能: holosのシングルホストKVMコンポーズ目標に適合する優先順位付けされたギャップ。
  • 開発: ビルド、テスト、ホスト要件、リリースプロセス。
  • セキュリティポリシー: サポート対象バージョンと非公開報告。
  • 脅威モデル / 堅牢化: イメージ検証、状態権限、ロック、運用ガイダンス。
  • 貢献: ビルド、テスト、スタイル、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 upおよびholos runはLinux KVMホスト上で実行する必要があります。

非目標

holosはKubernetesではありません。マルチホストクラスタリング、ライブマイグレーション、サービスメッシュ、オーバーレイネットワーク、スケジューラ、CRD、コントロールプレーンクォーラムを解決しようとはしていません。目標は、Kubernetesの運用形態を持ち込まずに、シングルホストスタックでKVMを実用的にすることです。

ライセンス

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

カテゴリ