Recommended approach & tools to provision a VM instance(s) from node.js?

I am trying to implement a 'lab in the cloud' to allow people to have a sandbox to experiment and learn in; i.e. for devops (chef/puppet), installing or configuring software etc. I have a node.js server implementation to manage this and looking for sane and reasonable ways to attack this problem.

The options are bewilderingly diverse: puppet or chef directly, or vagrant seems appropriate. But Openstack, cloudfoundry, Amazon EC2 also provide their own feature sets. Ideally a micro-cloud solution (multiple VM's per instance) would be ideal as there isn't going to be any large computational load.

Suggestions most appreciated.

Cheers

After some investigation, it seems that LXC on EC2 might be the way forward:

It gives

  1. lightweight, instances on a single EC2 instance
  2. supports hibernate/restore
  3. fast to standup
  4. able to automate using chef/cucumber

EC2 virtualization using LXC

Chef-lxc

Testing infrastructure code in LXC using Cucumber