← Back to team overview

launchpad-dev team mailing list archive

Micro clouds - could OpenStack be the Launchpad development environment?

 

Hello Launchpad hackers!

For a long time I've dreamed of a development environment that could
easily spin up and down multiple lightweight containers wrapped around
different service components. One way of doing this is with a tool
called Vagrant [1], which will let me specify a base VM image for
Virtualbox and then run chef or puppet recipes to configure the VM to
match my webapp requirements and then automatically mounts my project
source directly to be accessible inside the VM, does port mapping, and
other magic. It's amazing, a little too heavyweight, doesn't scale to
multiple containers to match production. You can see a toy project I
did using Vagrant [3], it's pretty neat to see the whole environment
build up from nothing.

In the last release of OpenStack which is included in Ubuntu 11.04, it
supports a very lightweight and fast container/virtualization
technology called LXC [2]. If you are familiar with FreeBSD jails or
Solaris containers they have many similarities. This means that it is
practical to run a dozen or more OpenStack VMs backed by LXC on a
typical laptop. Another cool feature is that you can run LXC
containers inside EC2 machines - in fact this is how cucumber-chef
does acceptance testing of server configuration recipes [3].

My challenge to you, dear hackers, is can the default Launchpad
developer setup be changed to run in LXC managed by OpenStack? I
imagine there would be many steps along the way, and perhaps the first
one would be to use a single container, perhaps splitting out more
containers as the services rearchitecture moves along. We'd also need
a HOWTO for installing OpenStack on Ubuntu 11.04 and grabbing a
suitable Ubuntu 10.04.2 base image (to best match production). I am
anxious for the day when I could decide to work on a Launchpad feature
without needing to trash my local SSH, Apache, and Postgres configs -
my involvement in projects is so infrequent and wide-ranging that I
can't really afford to have a dedicated Launchpad dev machine.
Basically I want to have the default Launchpad dev setup be something
that lets me run a script on a brand new Ubuntu laptop or a fresh EC2
instance and after a few minutes get the entire environment configured
running with containers, and then also lets me do things like swap out
service implementations by changing container configuration.

OpenStack is making heavy use of Launchpad, is a rising star in data
centers around the world and is under active development, so it seems
the ideal time to start making use of it ourselves. What do you think?

[1] http://vagrantup.com/
[2] http://www.openstack.org/blog/2011/04/openstack-announces-cactus-release/
[3] https://code.launchpad.net/~statik/+junk/gpg-val
[4] https://github.com/Atalanta/cucumber-chef

-- 
Elliot Murphy | https://launchpad.net/~statik/


Follow ups