README.md in veewee-0.1.20 vs README.md in veewee-0.1.21

- old
+ new

@@ -6,38 +6,58 @@ Before we can actually build the boxes, we need to take care of the minimal things to install: - Have Virtualbox 4.x installed -> download it from http://download.virtualbox.org/virtualbox/ -ALPHA CODE: -> you're on your own.... +People have reported good experiences, why don't you give it a try? ## Installation: -__from source__ +__as a gem__ +<pre> +$ gem install veewee +</pre> +__from source__ <pre> $ git clone https://github.com/jedi4ever/veewee.git $ cd veewee $ gem install bundler $ bundle install + +If you don't use rvm, be sure to execute vagrant through bundle exec +$ alias vagrant="bundle exec vagrant" </pre> -__as a gem__ -<pre> -$ gem install veewee -</pre> + ## List all templates <pre> $ vagrant basebox templates The following templates are available: -vagrant basebox define 'boxname' 'CentOS-4.8-i386' -vagrant basebox define 'boxname' 'CentOS-5.5-i386' -vagrant basebox define 'boxname' 'CentOS-5.5-i386-netboot' -vagrant basebox define 'boxname' 'ubuntu-10.04.1-server-amd64' -vagrant basebox define 'boxname' 'ubuntu-10.04.1-server-i386' -vagrant basebox define 'boxname' 'ubuntu-10.10-server-amd64' -vagrant basebox define 'boxname' 'ubuntu-10.10-server-i386' +The following templates are available: +vagrant basebox define '<boxname>' 'Archlinux-latest' +vagrant basebox define '<boxname>' 'CentOS-4.8-i386' +vagrant basebox define '<boxname>' 'CentOS-5.5-i386' +vagrant basebox define '<boxname>' 'CentOS-5.5-i386-netboot' +vagrant basebox define '<boxname>' 'Debian-6.0-amd64-netboot' +vagrant basebox define '<boxname>' 'Debian-6.0-i386-netboot' +vagrant basebox define '<boxname>' 'Fedora-14-amd64' +vagrant basebox define '<boxname>' 'Fedora-14-amd64-netboot' +vagrant basebox define '<boxname>' 'Fedora-14-i386' +vagrant basebox define '<boxname>' 'Fedora-14-i386-netboot' +vagrant basebox define '<boxname>' 'freebsd-8.2-experimental' +vagrant basebox define '<boxname>' 'freebsd-8.2-pcbsd-i386' +vagrant basebox define '<boxname>' 'freebsd-8.2-pcbsd-i386-netboot' +vagrant basebox define '<boxname>' 'solaris-11-express-i386' +vagrant basebox define '<boxname>' 'Sysrescuecd-2.0.0-experimental' +vagrant basebox define '<boxname>' 'ubuntu-10.04.2-server-amd64' +vagrant basebox define '<boxname>' 'ubuntu-10.04.2-server-i386' +vagrant basebox define '<boxname>' 'ubuntu-10.10-server-amd64' +vagrant basebox define '<boxname>' 'ubuntu-10.10-server-amd64-netboot' +vagrant basebox define '<boxname>' 'ubuntu-10.10-server-i386' +vagrant basebox define '<boxname>' 'ubuntu-10.10-server-i386-netboot' + </pre> ## Define a new box Let's define a Ubuntu 10.10 server i386 basebox called myunbuntubox this is essentially making a copy based on the templates provided above. <pre>$ vagrant basebox define 'myubuntubox' 'ubuntu-10.10-server-i386'</pre> @@ -52,11 +72,11 @@ ## Optionally modify the definition.rb , postinstall.sh or preseed.cfg <pre> Veewee::Session.declare( { :cpu_count => '1', :memory_size=> '256', - :disk_size => '10140', :disk_format => 'VDI',:disk_size => '10240' , + :disk_size => '10140', :disk_format => 'VDI', :os_type_id => 'Ubuntu', :iso_file => "ubuntu-10.10-server-i386.iso", :iso_src => "http://releases.ubuntu.com/maverick/ubuntu-10.10-server-i386.iso", :iso_md5 => "ce1cee108de737d7492e37069eed538e", :iso_download_timeout => "1000", @@ -86,10 +106,11 @@ Put your isofile inside the 'currentdir'/iso directory or if you don't run <pre>$ vagrant basebox build 'myubuntubox'</pre> - the build assumes your iso files are in 'currentdir'/iso - if it can not find it will suggest to download the iso for you +- use '--force' to overwrite an existing install ## Build the new box: <pre> $ vagrant basebox build 'myubuntubox'</pre> @@ -100,10 +121,15 @@ - Send the keystrokes in :boot_cmd_sequence - Startup a webserver on :kickstart_port to wait for a request for the :kickstart_file - Wait for ssh login to work with :ssh_user , :ssh_password - Sudo execute the :postinstall_files +## Validate the vm +<pre>$ vagrant basebox validate 'myubuntubox' </pre> + +this will run some cucumber test against the box to see if it has the necessary bits and pieces for vagrant to work + ## Export the vm to a .box file <pre>$ vagrant basebox export 'myubuntubox' </pre> this is actually calling - vagrant package --base 'myubuntubox' --output 'boxes/myubuntubox.box' @@ -120,21 +146,45 @@ <pre> $ vagrant init 'myubuntubox' $ vagrant up $ vagrant ssh </pre> + +## How to add a new OS/installation (needs some love) + +- I suggest the easiest way is to get an account on github +- fork of the veewee repository + +<pre> +$ git clone https://github.com/*your account*/veewee.git +$ cd veewee +$ gem install bundler +$ bundle install +</pre> + +If you don't use rvm, be sure to execute vagrant through bundle exec +<pre> +$ alias vagrant="bundle exec vagrant" +</pre> + +Start of an existing one +<pre> +$ vagrant basebox define 'mynewos' 'ubuntu...' +</pre> + +- Do changes in the currentdir/definitions/mynewos +- When it builds ok, move the definition/mynewos to a sensible directory under templates +- commit the changes (git commit -a) +- push the changes to github (git push) +- go to the github gui and issue a pull request for it + ## If you have a setup working, share your 'definition' with me. That would be fun! IDEAS: - Now you integrate this with your CI build to create a daily basebox FUTURE IDEAS: -- use snapshots to fastforward initial boot, and every postinstall command - export to AMI too - provide for more failsafe execution, testing parameters -- use more virtualbox ruby instead of calling the VBoxManage command -- Verify the installation with cucumber-nagios (ssh functionality) - Do the same for Vmware Fusion - -BUGS: Lots = Like I said it currently works for me, on my machine and with the correct magic sequence :)