diff --git a/README.md b/README.md new file mode 100644 index 0000000..f6a776f --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +## clustvirt - Libvirt cluster manager + +Clustered virtualization has gotten to complicated. We have a great system for it built into +the Linux kernel, with shared software stacks between whatever base distro you want to use. + +Every other option has buy in, and buzzwords. I want something truly simple that can manage virtual +machines on multiple hosts, integrating with existing tools, running from one/all of the hosts, a raspberry pi, +or as a guest machine on the cluster itself. + +The mission: Talk to libvirt hosts, coordinate them, manage them, and let people take their clusters back. + +Overall goals: +- HA Cluster resource manager (simpler then existing options, just for libvirt) + - Share secrets + - Share VM configs + - know what VM is running on what cluster host + - trigger migrations of hosts + - most simple quorum algorithm possible, ability to run 2 hosts reliably, up to ?? hosts without worry +- Shared Network management +- Shared storage managment + - Does not include clustered storage configuration + - Can use different clustered storage systems (just not configure them directly) +- Reliable backup and snapshotting + - The tools exist for this, just needs to be exposed +- Install on any libvirt system, as long as the basic requirements are met as far as compatibility is concerned + - Should be able to have hosts on RedHat, Rocky, Arch, Ubuntu, Debian, whatever without worry +- Cloud-init configuration help to create useful and reusable cloud-init files, that don't need to be used + by the system only. It's a standard, use it. + +### Existing tools and libraries to use +- [https://pkg.go.dev/libvirt.org/go/libvirt] Go Bindings for libvirt + - Not sure if it can be used without libvirt existing on the system it's running on. Worth a try. + + +### Roadmap +1. Create simple daemon that can run on 1 or more hosts that will keep track of things + - Libvirt daemon + - Host Capabilities + - Migration Capabilities + - Secret management + - Storage pool management + - Volume management + - Guest management + - Connection management (to other libvirt hosts) +2. Create a simple WebUI with HTMX to monitor that stuff +3. Add the ability to manage that stuff once we can monitor it, through the WebUI.