23 11 / 2011
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
- Ruby versions: 1.9.3-p0, 1.9.2-p290, 1.8.7-p352
- VirtualBox 4.1.6
- VirtualBox 4.1.6 Extension pack
- Ubuntu 11.10 32 bit server image file
Assumptions
- 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 https://github.com/jedi4ever/veewee and Fork the repo under your account
Git clone git clone git://github.com/millisami/veewee
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 http://rubygems.org/.......
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
definitions
└── milli-ubuntu-11-10-32-bit
├── definition.rb
├── postinstall.sh
└── 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
Veewee::Session.declare({
: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 => "http://releases.ubuntu.com/11.10/ubuntu-11.10-server-i386.iso",
:iso_md5 => "881d188cb1ca5fb18e3d9132275dceda",
:iso_download_timeout => "1000",
:boot_wait => "10", :boot_cmd_sequence => [
'<Esc><Esc><Enter>',
'/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.sh"], :postinstall_timeout => "10000"
})
Open up the file postinstall.sh 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'
Permalink 7 notes