control your cluster of virtual machines
Go to file
Jeff Carr e0970840e2 admin "show droplets" works 2025-03-10 18:09:14 -05:00
resources compiles again 2024-10-31 13:37:00 -05:00
.gitignore git ignore files/ directory 2024-11-04 06:12:58 -06:00
LICENSE initial something. doesn't do anything yet. 2024-10-11 13:55:13 -05:00
Makefile Unmarshal() droplets 2025-03-10 07:53:11 -05:00
README.md so it shows up on pkg.go.dev 2024-11-07 07:32:41 -06:00
argv.go make admin mode 2025-03-10 04:36:35 -05:00
build build notes 2024-11-02 23:46:53 -05:00
control make a simple .deb package 2024-10-30 20:31:14 -05:00
doAdminGui.go admin "show droplets" works 2025-03-10 18:09:14 -05:00
doGui.go admin "show droplets" works 2025-03-10 18:09:14 -05:00
dump.go switch virtbuf to virtpb 2025-02-22 17:45:50 -06:00
event.go switch virtbuf to virtpb 2025-02-22 17:45:50 -06:00
exit.go make admin mode 2025-03-10 04:36:35 -05:00
http.go feed back the protobuf 2025-03-10 09:19:52 -05:00
importDomain.go switch virtbuf to virtpb 2025-02-22 17:45:50 -06:00
main.go make admin mode 2025-03-10 04:36:35 -05:00
me.go Unmarshal() droplets 2025-03-10 07:53:11 -05:00
poll.go switch virtbuf to virtpb 2025-02-22 17:45:50 -06:00
post.go import worked 2024-11-01 08:30:55 -05:00
start.go switch virtbuf to virtpb 2025-02-22 17:45:50 -06:00
structs.go Unmarshal() droplets 2025-03-10 07:53:11 -05:00
validate.go switch virtbuf to virtpb 2025-02-22 17:45:50 -06:00
watchdog.go compiles again 2024-10-31 13:37:00 -05:00
windowDroplets.go admin "show droplets" works 2025-03-10 18:09:14 -05:00
windowGeneric.go add GenericWindow() 2025-02-23 13:13:30 -06:00

README.md

virtigo: a control panel for your virtual machine cluster

There is no greater thrill for a linux sys admin than running your own cloud.

This is an attempt to make something that should:

  • Maintain the master list of virtual machines that should be running at all times
  • Work with a cluster of dom0 hypervisiors via libvirt and/or qemu
  • Understand the cluster and autostart droplets that have failed
  • Initiate and Handle all droplet events: start, stop, clone, migrate, etc
  • Verify consistancy on the hypervisors
  • Initiate and handle live migrations between hypervisors
  • Talk to the hypervisors using only the virtigo daemon via protobuf
  • Work in GUI mode (GTK/QT/etc) but ALSO the console (ncurses)
  • GPL'd with the intent for use with homelab and personal hobbyists

Notes & Goals:

  • Be super easy to use.
  • Automatically map access to serial and graphical consoles
  • Only temporarily generate libvirt XML files for virsh create
  • This is intended for managing Virtual Machines, not for containers
  • This often uses the DO nomenclature 'droplets' instead of 'virtual machines' or 'domU'
  • Every droplet is considered hostile
  • When possible, use protobuf
  • Let security be handled externally at the socket layer with other tools
  • Put network, cpu, etc stats in external tools
  • Automatic live migration to decommission nodes
  • Implement iptable rules via the virtigo daemon

Inspired by:

  • kvm
  • virt-manager
  • golang
  • the simplicity of the DO droplet control panel