A while back I wrote about etcd-compute. It's a collection of Python that combines Placement, etcd, and libvirt to provide a very simple system for starting VMs on a collection of hosts. It started out as a non-working learning and exploration tool, but it keeps getting closer to something useful.
This evening I had some time to refresh the code a bit and do a few useful cleanups so now seemed like a good time to give an update on how things are going. The recent changes are:
Placement and etcd run in two docker containers. The
dockerenvfile used for placement was out of date with the much more consistent configuration system that is now available.
Prior to today, when a VM management process (now called
ecompute) was shut down its inventory in placement was orphaned. Now,
ecomputecan declare and reuse a UUID so that between different runs it is using the same inventory and when it is shut down with a
SIGINTor Ctrl-C, it will lock its inventory so that nothing will try to schedule to it while it is down. When it comes back up later, it will unlock itself.
When a VM is destroyed, its disk is destroyed too.
Console-script entry-points are now used for
eschedule. This will eventually allow for tidier packaging.
Some areas continue to need help. Much of these are in areas that require expertise I've yet to have the opportunity acquire. Help wanted. Patches accepted. Etc.
Many of the commands spawn sub-processes to virt-install and related command line tools. That's icky.
Image management is less than ideal. Handling is naive, cumbersome, and slow (unless you turn off image resizing in config).
Network handling is also rather naive. Some instructions on how to make use of a bridge are available, but incomplete.
A metadata server is present, and can provide an ssh key and other data to the instance, but it is poorly managed.
But, despite all that, it works pretty well. I can spin up several VMs across several hosts, quickly and easily. The README describes how to get started. If you look at it, it will be obvious that it has grown organically and could do with a reset now that it can actually do things. Suggestions, as always, welcomed.