"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 hypervisors.


  • "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)
  • Cross-platform
    • 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
  • Resilient
    • 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)

    VM deployment

    Application list (machine view)

    Application list (environment view)

    Deployment history

    Pre-deployment changelist

    Maven release page

    VM upgrades


    If you're interested in trying this software out, then drop me an email on testing@vmaint.com and I'm sure we can work something out.