Vagrant Project Proposal


This project explores some initial steps in linking Vagrant to LCFG and the DICE environment.


Initially COs for testing purposes, experimentation with LCFG, Puppet etc. Researchers and teaching staff.


The goal of the project is to evaluate the suitability of Vagrant and similar virtual machine configuration systems as a way of facilitating easier desktop virtualisation for users.

When users require facilities that don't exist on DICE desktop e.g. newer versions of software, their main option is to go self-managed. They then have the overhead of installing services they would otherwise get for free with DICE and we have the possibility that they introduce security holes. Sometimes the need is simply for one application to run in a different environment e.g. as in RT 58027.

Providing a pre-built Dice-like VM environment that is configurable by the user may fill a niche in the services we provide. Similarly providing an easy way for users to build and deploy VMs running other OSes for local desktop virtualisation would meet another of our computing plan goals.

Vagrant is a virtual-machine distribution and configuration application. Currently based on VirtualBox it allows users to download pre-built images or 'boxes' and configure and manage them using 'provisioners' such as Puppet, Chef or a simple shell-based mechanism.

Running in userspace a vagrant 'project' can configure multiple VMs from a single config file. The VM clients can also share filespace with the host machine. Example usage is generally software testing of web-based services, client-server configuration testing etc.

System administrators can build and distribute new base-boxes based on their operating system distribution of choice. This could facilitate lightweight distributable environments for research or teaching with desirable local features built-in yet with the ability for users to configure and self-manage them.

This project may lead to partial solutions for issues in other pending projects e.g.

  • Project 86 - Minimal LCFG
  • Project 105 - LCFG Component Test Framework
  • Project 239 - Virtual image for teaching
  • Project 252 - DICE VM for staff
  • Project 141 - LCFG Beginners Guide


  1. Provide a lightweight DICE-like VM environment that is downloadable and configurable by the user. OR Provide a lightweight environment for facilitating VM usage by staff on DICE (using other OSes) - OR - both of these ?
  2. Documentation for users and computing support staff.
  3. A website - from which to download base-boxes
  4. (optional) Specify and script a method for automatically building base boxes from the current LCFG release.
  5. Project Report


Initially we would want to be able to configure things with LCFG as this is what we know best.

There is an issue with filespace and where large VMs are stored. If we don't want people filling up they're AFS space with VM disk images, then we need to jigger the configuration so VMs are e.g. stored in /disk/scratch. This then means we need to see people are backing up responsibly or storing data files in AFS

Vagrant comes as an RPM only (not an SRPM) which doesn't install cleanly with pkgsubmit. Eventually we'd need to look at building from source.

Vagrant depends on ssh public/private keys which are initially set the same for all vagrant boxes and usually with a shared root password. We obviously couldn't package DICE-alike boxes with the DICE root password, so we need to think about security.

Consider how users can specify their own package lists, and how we let them package things up. What about PkgForge? Put the packages in the shared filespace? This would be similar to the DIY-Dice approach.

People may want to begin with a distribution other than one we provide and simply add things like AFS, kerberos, ldap, printing. The most likely distribution would be Ubuntu, possibly followed by Fedora. This would mean we would


Vagrant is fairly new software and is undergoing rapid development.


There are no dependencies on other projects.

Vagrant depends on VirtualBox and Ruby; when upgrades happen incompatibilities can arise (VirtualBoxGuestAdditions ). These should be documented and workarounds provided.



Setup requires a machine with VirtualBox and Ruby. (No ruby programming knowledge is initially required)

External resources


  1. Investigate and document similar systems e.g BoxGrinder to assess if Vagrant is the best vehicle for this kind of VM project. If so...
  2. Investigate the shell provisioner. Build a base-box from a non-DICE distribution and configure it using the shell provisioner to e.g. reset yum repositories to point to our own. This is the most basic way users would be able to interact with the system.
  3. Build a base-box based on the packages in the DICE install root / install base.
  4. Investigate the idea of a standalone LCFG client/server ( lcfg-solo ) - similar to the example in the appendix of the LCFG book. (See project 86 for issues)
  5. Build a minimal base-box, for a server only example, e.g. a Drupal or Wordpress installation with configuration options
  6. (optional) Investigate building VMs of other distributions - initially Fedora/Ubuntu - and using Vagrant to provision them with useful Informatics features.
  7. (optional) Write a provisioner script in Ruby to hook LCFG in to the Vagrantfile setup mechanism. Test it using their framework.
  8. (optional) Write a set of scripts - to install enough LCFG infrastructure into an alien OS to have some of it's services provided by LCFG (call it lcfg-assimilate component)
  9. Website for box distribution
  10. Documentation
  11. Project Report


This project is scheduled to take 8 weeks. This would include time to write up documentation and project report.




Getting started on things like Puppet is an important but not urgent priority.

-- GordonReid - 21 Aug 2012

Topic revision: r5 - 21 Sep 2012 - 16:02:00 - GordonReid
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
This Wiki uses Cookies