Nepal on Rails

millisami's rants!

Build Your Own Vagrant Box Ready to Use With Chef-solo Using Veewee

This is my first screencast and its a bit glitchy. The voice is not good because I’d to use the built-in microphone of my MacBook pro. I’ve to get a good one. So bare with me and the audio.

Things to shop


  • You know what is Virtual Box and Vagrant
  • You are familiar with Git and Github
  • You use Bundler and RVM

Building a brand new box using Ubuntu 11.10 32-bit iso image

Visit and Fork the repo under your account

Git clone git clone git:// cd veewee

Bundle install (if you don’t have Bundler installed, do gem install bundler --pre)

millisami at sachin in ~/gitcodes/veewee on master
± bundle install
Fetching gem metadata from [](
Using Platform (0.4.0)
Using archive-tar-minitar (0.5.2)
Using bundler (1.1.rc)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
millisami at sachin in ~/gitcodes/veewee on master

Gems required

gem install vagrant
gem install veewee

Define a basebox template

First, lets see what are the templates available.

millisami at sachin in ~/gitcodes/veewee on master
± bundle exec vagrant basebox templates
The following templates are available:
vagrant basebox define <boxname> ubuntu-10.10-server-i386-netboot
vagrant basebox define <boxname> ubuntu-11.04-server-amd64
vagrant basebox define <boxname> ubuntu-11.04-server-i386

So, the ubuntu 11.10 has not been defined yet. Lets build one based off the ubuntu-11.04-server-i386

millisami at sachin in ~/gitcodes/veewee on master
± bundle exec vagrant basebox define milli-ubuntu-11-10-32-bit ubuntu-11.04-server-i386
The basebox milli-ubuntu-11-10-32-bit has been successfully created from the template ubuntu-11.04-server-i386
You can now edit the definition files stored in definitions/milli-ubuntu-11-10-32-bit
or build the box with:
vagrant basebox build milli-ubuntu-11-10-32-bit

Lets see the structure of the generated folder

millisami at sachin in ~/gitcodes/veewee on master
± tree definitions
└── milli-ubuntu-11-10-32-bit
    ├── definition.rb
    └── preseed.cfg

1 directory, 3 files

Open up the folder in your editor

Open up the file definition.rb and change the version numbers from 11.04 to 11.10

# definition.rb
  :cpu_count => 1, :memory_size=> 384,
  :disk_size => 10140, :disk_format => VDI, :hostiocache => off,
  :os_type_id => Ubuntu,
  :iso_file => "ubuntu-11.10-server-i386.iso",
  :iso_src => "",
  :iso_md5 => "881d188cb1ca5fb18e3d9132275dceda",
  :iso_download_timeout => "1000",
  :boot_wait => "10", :boot_cmd_sequence => [
    /install/vmlinuz noapic preseed/url=http://%IP%:%PORT%/preseed.cfg ,
    debian-installer=en_US auto locale=en_US kbd-chooser/method=us ,
    hostname=%NAME% ,
    fb=false debconf/frontend=noninteractive ,
    keyboard-configuration/layout=USA keyboard-configuration/variant=USA console-setup/ask_detect=false ,
    initrd=/install/initrd.gz -- <Enter>
  :kickstart_port => "7122", :kickstart_timeout => "10000", :kickstart_file => "preseed.cfg",
  :ssh_login_timeout => "10000", :ssh_user => "vagrant", :ssh_password => "vagrant", :ssh_key => "",
  :ssh_host_port => "7222", :ssh_guest_port => "22",
  :sudo_cmd => "echo %p|sudo -S sh %f",
  :shutdown_cmd => "shutdown -P now",
  :postinstall_files => [ ""], :postinstall_timeout => "10000"

Open up the file and change libreadline5-dev to libreadline5 because the Ubuntu Oneiric doesn’t have libreadline5-dev package.

millisami at sachin in ~/gitcodes/veewee on master
± be vagrant basebox build milli-ubuntu-11-10-32-bit