Booting up a fresh virtual machine takes time. Front
speeds up VM boot
time by preinitializing a pool of VMs. When you need a fresh instance,
use front next
and you are ready to work instantly. And while you work
it rebuilds the old VM for your next refill!
Install with rubygems:
$ gem install front
When starting a work session, create a new Vagrantfile for your project.
Then create a new pool with create
. Without an inventory file, front
uses a default Vagrantfile with a Ubuntu precise64
box.
$ front create
As soon as the 1st VM is ready control is returned to you while the other instances in the pool are being preloaded. You can now login to this VM with,
$ front ssh
After you are done with this instance, and need a fresh one, you can
fetch it with front next
.
$ front next
An inventory file is maintained with the SSH port every time you switch
instances. This can be accessed with the inventory
action.
$ front inventory
Finally when done, dispose of the pool with the destroy
action.
$ front destroy
Front
clones your project Vagrantfile into a .front
directory
containing the virtual machine instances. When you access the
front
commands it steps into these subdirectories and calls the
corresponding vagrant command. Most actions run in the background
allowing you to continue working while they complete.
$ front [options] [action]
Actions
create : create a new pool
destroy : destroy pool
next : switch to next instance in pool
ssh : ssh to current instance => vagrant ssh
ssh_config : print ssh config for current instance
inventory : print inventory file
Options
-s, --size <size> Size of instance pool
-V, --version Print Front version
-h, --help Print Front help
- Running multiple VMs requires a fast computer with lots of RAM. The actual amount depends on the number of VMs, and their configuration. Eg:- For a Ubuntu box with 512MB ram with a pool of size 4, you need at least 2GB for Virtual Box. Plus additional RAM for the host system.
- Default pool size is 2.
- Needs to handle Vagrant errors better.
- Pool size once created should be persistent.
- If an instance isn't ready should be able to show it's status.
- Allow running of other vagrant subcommands
- This project uses the gitflow branching model. PR's go against
develop
.