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 :)