"It's your new legacy system"
vmaint is a loose collection of maintenance scripts for
managing virtual machines. It's not currently publicly available,
but it will be one day. It's still something of a work-in-progress
at the moment.
vmaint is for managing small "clouds" of virtual machines.
I spent at least an hour this morning trying to find amusing weather-related
project names, but most of them appear to have their domain names
already registered, so vmaint it is ( virtual
machine maintenance, for what it's worth ). You can
pronounce it as 'varmint', if you like. I don't, but you can. Perhaps
you need some entertaining cartoon character to distract you from your
bleak, grim and pointless existence.
vmaint is intended to be used by developers running, say, dozens
of VMs on a handful of local hypervisors rather than
more large-scale data-centre-style deployments.
Most scripts have a web-based interface,
and allow VMs to be instantiated, stopped, started, upgraded, and
applications/files on those
VMs to be deployed, migrated, and rolled back.
You can even use it to manage your applications on remotely accessible
servers, allowing you to use the word 'cloud' in your marketing material,
which should knock another zero or two onto the selling price.
There's also a couple of scripts for monitoring aforementioned applications.
vmaint will probably be the sort of thing you're looking for if
you use a maven/nexus/bamboo-style build system, and VMware Workstation-style
- "Simple" configuration
- all configuration of vmaint is kept in easy-to-read text files (no databases to maintain)
- each CGI script is self-contained (no dependency management)
- VM hosts tested on Ubuntu, Windows, MacOS
- VM guests tested on Ubuntu, Debian, Windows
- Web or command-line driven
- Updates to environment and applications can be initiated via
a browser or through the command-line
- Versioned environments
- physical and virtual environments are kept under source control
- "Simple" environment storage
- the configuration for each VM and hypervisor is kept in a vanilla
source-control system. I use CVS.
- additional deployment attributes (file permissions/ACLs, symlinks etc) are
kept in easily maintained text files for each environment
- Versioned updates
- timestamped backups are made of all changes to any
environment to allow easy rollback.
- MD5 checksums of files are maintained to detect any local changes
- if a hypervisor becomes unavailable, any other hypervisor can be
used to serve the administrative interface
- It's written in perl
- Not really a feature, but does give you the ability to draw upon the decades
of libraries that exist for this language, and idiosyncratically work out how to
navigate simple data structures. Feel free to replace all that with a
system("python whatever-it-is") call.
In its current form, it looks a bit like this:
Physical / Virtual machine view (network view)
Physical / Virtual machine list (table view)
Application list (machine view)
Application list (environment view)
Maven release page
If you're interested in trying this software out, then drop me an
email on firstname.lastname@example.org
and I'm sure we can work something out.