
holos v0.6.3
YAML कंपोज़ फ़ाइलों का उपयोग करने वाला घोषणात्मक KVM/QEMU VM ऑर्केस्ट्रेशन टूल। बिना libvirt या XML के cloud-init, SSH, PCI पासथ्रू और इमेज सत्यापन के साथ मल्टी-VM स्टैक का प्रबंधन करता है।
KVM के लिए Docker compose। एक YAML फ़ाइल में मल्टी-VM स्टैक परिभाषित करें। न libvirt, न XML, न distributed control plane।
वेबसाइट और दस्तावेज़: https://zeroecco.github.io/holos/
मूल इकाई VM है, कंटेनर नहीं। प्रत्येक वर्कलोड इंस्टेंस को अपना kernel boundary, qcow2 overlay, cloud-init seed, और जनरेट किया गया SSH एक्सेस मिलता है।
त्वरित शुरुआत
Linux +
/dev/kvmआवश्यक है। macOS बिल्ड ऑफ़लाइन कमांड जैसेvalidate,import,images, औरpullचलाते हैं, लेकिनupऔरrunके लिए KVM होस्ट चाहिए।
एक डिस्पोज़ेबल VM, बिना 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 है जो cloud image बूट कर रही है, पैकेज इंस्टॉल कर रही है, कॉन्फ़िग लिख रही है, और होस्ट पोर्ट फ़ॉरवर्ड कर रही है।
इंस्टॉल
प्री-बिल्ट बाइनरीज़ हर GitHub release के साथ संलग्न हैं:
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 चेकसम और साइन किए गए provenance के लिए GitHub artifact attestations शामिल हैं। प्रोडक्शन होस्ट पर बाइनरीज़ इंस्टॉल करने से पहले दोनों सत्यापित करें।
या सोर्स से बिल्ड करें:
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> cloud image खींचें
holos verify <image>|--all कैश्ड image चेकसम सत्यापित करें
holos images उपलब्ध images सूचीबद्ध करें
holos images lock -f holos.yaml [-o holos.images.lock]
प्रोजेक्ट image lockfile लिखें
holos snapshots {create|list|rm|restore|export} ... root snapshots प्रबंधित करें
holos volumes [-f holos.yaml] [--json]
नामित volumes सूचीबद्ध करें
holos volumes rm <project> <volume> डिटैच्ड नामित volume हटाएँ
holos volumes export <project> <volume> <path>
डिटैच्ड नामित volume निर्यात करें
holos volumes snapshot <project> <volume> <snapshot>
डिटैच्ड नामित volume का snapshot लें
holos volumes snapshots <project> <volume>
volume snapshots सूचीबद्ध करें
holos volumes snapshot-rm <project> <volume> <snapshot>
volume snapshot हटाएँ
holos volumes snapshot-restore <project> <volume> <snapshot>
volume snapshot पुनर्स्थापित करें
holos volumes snapshot-export <project> <volume> <snapshot> <path>
volume snapshot निर्यात करें
holos volumes resize [--shrink] <project> <volume> <size>
डिटैच्ड नामित volume का आकार बदलें
holos devices [--gpu] PCI devices और IOMMU groups सूचीबद्ध करें
holos completion <bash|zsh|fish> shell completion स्क्रिप्ट प्रिंट करें
holos doctor [--json] होस्ट निर्भरताएँ जाँचें
holos install [-f holos.yaml] [--system] [--enable]
systemd unit इंस्टॉल करें
holos uninstall [-f holos.yaml] [--system]
systemd unit हटाएँ
holos import [vm...] [--all] [--xml file] [--connect uri] [-o file]
virsh VMs को holos.yaml में बदलें
दस्तावेज़
- वेबसाइट: लैंडिंग पेज और रेंडर किए गए दस्तावेज़।
- CLI गाइड: ad hoc VMs,
exec, systemd install, virsh import, औरdoctor। - Compose फ़ाइल: services, volumes, healthchecks, networking, PCI passthrough, Dockerfile provisioning, और defaults।
- JSON Schema:
holos.yamlके लिए एडिटर completion और validation। - उदाहरण: README-शैली की व्याख्याओं के साथ रन करने योग्य और टेम्पलेट स्टैक।
- अनुपलब्ध सुविधाएँ: प्राथमिकता वाले अंतराल जो holos के single-host KVM compose लक्ष्य में फिट होते हैं।
- विकास: build, test, होस्ट आवश्यकताएँ, और रिलीज़ प्रक्रिया।
- सुरक्षा नीति: समर्थित संस्करण और निजी रिपोर्टिंग।
- खतरा मॉडल / हार्डनिंग: image verification, state permissions, locks, और परिचालन मार्गदर्शन।
- योगदान: build, test, style, और PR परंपराएँ।
उदाहरण
छोटे nginx उदाहरण से शुरू करें:
holos up -f examples/alpine-nginx/holos.yaml
curl localhost:8080
holos down alpine-nginx
examples डायरेक्टरी में Dockerfile provisioning, GPU passthrough,
और एक मल्टी-सर्विस स्टैक भी शामिल है जो depends_on, जनरेट किया गया config, और
replicas दिखाता है।
होस्ट आवश्यकताएँ
- Linux with
/dev/kvm qemu-system-x86_64qemu-imgcloud-localds,genisoimage,mkisofs, याxorrisoमें से एक- UEFI या PCI passthrough के लिए OVMF / edk2-ovmf firmware
holos execऔर healthchecks के लिएssh
होस्ट जाँचने के लिए holos doctor चलाएँ।
समस्या निवारण
पहले बूट पर SSH रीसेट होता है
kex_exchange_identification: read: Connection reset by peer का मतलब आमतौर पर
यह है कि cloud-init अभी भी host keys रीजनरेट कर रहा है और sshd रीस्टार्ट कर रहा है। holos exec
डिफ़ॉल्ट रूप से 60s तक प्रतीक्षा करता है, लेकिन बहुत धीमे पहले बूट को एक और प्रयास या
holos exec -w 5m <project> की आवश्यकता हो सकती है।
कंसोल Login incorrect दिखाता है
सीरियल कंसोल cloud-init के उपयोगकर्ता बनाने से पहले autologin का प्रयास कर सकता है।
कंसोल लॉग में cloud-init ... finished की प्रतीक्षा करें, फिर holos exec का उपयोग करें।
Cloud images आमतौर पर कंसोल पासवर्ड के साथ नहीं आते, और holos कोई पासवर्ड नहीं जोड़ता।
macOS पर up विफल होता है
KVM एक Linux kernel सुविधा है। macOS बाइनरीज़ लेखन और
ऑफ़लाइन कमांड के लिए उपयोगी हैं, लेकिन holos up और holos run को Linux KVM
होस्ट पर निष्पादित होना चाहिए।
गैर-लक्ष्य
holos Kubernetes नहीं है। यह multi-host clustering, live migration, service meshes, overlay networks, schedulers, CRDs, या control plane quorum को हल करने का प्रयास नहीं करता।
लक्ष्य KVM को single-host स्टैक के लिए व्यावहारिक बनाना है, बिना Kubernetes के परिचालन स्वरूप को आयात किए।
लाइसेंस
Apache License, Version 2.0 के अंतर्गत लाइसेंस प्राप्त। एट्रिब्यूशन के लिए
NOTICE देखें।