
holos v0.6.2
YAML कंपोज़ फ़ाइलों का उपयोग करने वाला घोषणात्मक KVM/QEMU VM ऑर्केस्ट्रेशन टूल। बिना libvirt या XML के cloud-init, SSH, PCI पासथ्रू और इमेज सत्यापन के साथ मल्टी-VM स्टैक का प्रबंधन करता है।
KVM के लिए Docker compose. एक YAML फ़ाइल में मल्टी-VM स्टैक परिभाषित करें। कोई libvirt नहीं, कोई XML नहीं, कोई वितरित नियंत्रण प्लेन नहीं।
वेबसाइट और दस्तावेज़: https://zeroecco.github.io/holos/
मूल तत्व एक VM है, कंटेनर नहीं। प्रत्येक वर्कलोड इंस्टेंस को अपनी स्वयं की कर्नेल सीमा, qcow2 ओवरले, cloud-init सीड, और उत्पन्न SSH पहुँच मिलती है।
Quick Start
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 है जो क्लाउड इमेज बूट कर रहा है, पैकेज इंस्टॉल कर रहा है, कॉन्फ़िग लिख रहा है, और होस्ट पोर्ट फ़ॉरवर्ड कर रहा है।
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 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]
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
Docs
- Website: लैंडिंग पेज और रेंडर किए गए दस्तावेज़।
- CLI guide: एड हॉक VM,
exec, systemd इंस्टॉल, virsh import, औरdoctor। - Compose file: सेवाएँ, वॉल्यूम, हेल्थचेक, नेटवर्किंग, PCI पासथ्रू, Dockerfile प्रोविज़निंग, और डिफ़ॉल्ट।
- JSON Schema:
holos.yamlके लिए एडिटर पूर्णता और मान्यता। - Examples: README-शैली स्पष्टीकरण के साथ चलने योग्य और टेम्पलेट स्टैक।
- Missing features: प्राथमिकता वाले अंतर जो holos के एकल-होस्ट KVM compose लक्ष्य में फिट होते हैं।
- Development: बिल्ड, टेस्ट, होस्ट आवश्यकताएँ, और रिलीज़ प्रक्रिया।
- Security policy: समर्थित संस्करण और निजी रिपोर्टिंग।
- Threat model / hardening: इमेज सत्यापन, स्थिति अनुमतियाँ, लॉक, और परिचालन मार्गदर्शन।
- Contributing: बिल्ड, टेस्ट, शैली, और PR परंपराएँ।
Examples
छोटे nginx उदाहरण से शुरू करें:
holos up -f examples/alpine-nginx/holos.yaml
curl localhost:8080
holos down alpine-nginx
उदाहरण निर्देशिका में Dockerfile प्रोविज़निंग, GPU पासथ्रू, और एक मल्टी-सेवा स्टैक भी शामिल है जो depends_on, उत्पन्न कॉन्फ़िग, और रेप्लिका दिखाता है।
Host Requirements
- Linux के साथ
/dev/kvm qemu-system-x86_64qemu-imgcloud-localds,genisoimage,mkisofs, याxorrisoमें से एक- UEFI या PCI पासथ्रू के लिए OVMF / edk2-ovmf फर्मवेयर
holos execऔर हेल्थचेक के लिएssh
होस्ट की जाँच करने के लिए holos doctor चलाएँ।
Troubleshooting
SSH resets on first boot
kex_exchange_identification: read: Connection reset by peer आमतौर पर इसका अर्थ है कि cloud-init अभी भी होस्ट कुंजियाँ पुनर्जीवित कर रहा है और sshd को पुनरारंभ कर रहा है। holos exec डिफ़ॉल्ट रूप से 60 सेकंड तक प्रतीक्षा करता है, लेकिन बहुत धीमी पहली बूट को एक और प्रयास या holos exec -w 5m <project> की आवश्यकता हो सकती है।
Console shows Login incorrect
सीरियल कंसोल cloud-init द्वारा उपयोगकर्ता बनाने से पहले ऑटोलॉगिन का प्रयास कर सकता है। कंसोल लॉग में cloud-init ... finished की प्रतीक्षा करें, फिर holos exec का उपयोग करें। क्लाउड इमेज में आमतौर पर कंसोल पासवर्ड नहीं होता है, और holos कोई पासवर्ड नहीं जोड़ता है।
up fails on macOS
KVM एक Linux कर्नेल सुविधा है। macOS बाइनरी लेखन और ऑफलाइन कमांड के लिए उपयोगी हैं, लेकिन holos up और holos run को Linux KVM होस्ट पर निष्पादित होना चाहिए।
Non-Goals
holos Kubernetes नहीं है। यह मल्टी-होस्ट क्लस्टरिंग, लाइव माइग्रेशन, सर्विस मेश, ओवरले नेटवर्क, शेड्यूलर, CRD, या कंट्रोल प्लेन कोरम को हल करने का प्रयास नहीं करता है। लक्ष्य KVM को एकल-होस्ट स्टैक के लिए कार्यशील बनाना है, बिना Kubernetes के परिचालन आकार को आयात किए।
License
Apache License, Version 2.0 के तहत लाइसेंस प्राप्त। एट्रिब्यूशन के लिए NOTICE देखें।