veewee 0.1.20 → 0.1.21
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/README.md +69 -19
- data/lib/veewee/command.rb +1 -1
- data/lib/veewee/session.rb +17 -4
- data/lib/veewee/version.rb +1 -1
- data/templates/{Debian-6.0-amd64-netboot → Debian-6.0.1a-amd64-netboot}/definition.rb +3 -3
- data/templates/{Debian-6.0-amd64-netboot → Debian-6.0.1a-amd64-netboot}/postinstall.sh +0 -0
- data/templates/{Debian-6.0-amd64-netboot → Debian-6.0.1a-amd64-netboot}/preseed.cfg +0 -0
- data/templates/{Debian-6.0-i386-netboot → Debian-6.0.1a-i386-netboot}/definition.rb +3 -3
- data/templates/{Debian-6.0-i386-netboot → Debian-6.0.1a-i386-netboot}/postinstall.sh +0 -0
- data/templates/{Debian-6.0-i386-netboot → Debian-6.0.1a-i386-netboot}/preseed.cfg +0 -0
- data/templates/solaris-11-express-i386/definition.rb +5 -0
- data/templates/solaris-11-express-i386/postinstall.sh +13 -11
- data/templates/ubuntu-10.10-server-i386-netboot/definition.rb +1 -1
- metadata +10 -10
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -8,33 +8,53 @@ Before we can actually build the boxes, we need to take care of the minimal thin
|
|
8
8
|
- Have Virtualbox 4.x installed -> download it from http://download.virtualbox.org/virtualbox/
|
9
9
|
|
10
10
|
|
11
|
-
|
11
|
+
People have reported good experiences, why don't you give it a try?
|
12
12
|
|
13
13
|
## Installation:
|
14
|
-
|
14
|
+
__as a gem__
|
15
|
+
<pre>
|
16
|
+
$ gem install veewee
|
17
|
+
</pre>
|
15
18
|
|
19
|
+
__from source__
|
16
20
|
<pre>
|
17
21
|
$ git clone https://github.com/jedi4ever/veewee.git
|
18
22
|
$ cd veewee
|
19
23
|
$ gem install bundler
|
20
24
|
$ bundle install
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
$ gem install veewee
|
25
|
+
|
26
|
+
If you don't use rvm, be sure to execute vagrant through bundle exec
|
27
|
+
$ alias vagrant="bundle exec vagrant"
|
25
28
|
</pre>
|
26
29
|
|
30
|
+
|
27
31
|
## List all templates
|
28
32
|
<pre>
|
29
33
|
$ vagrant basebox templates
|
30
34
|
The following templates are available:
|
31
|
-
|
32
|
-
vagrant basebox define 'boxname' '
|
33
|
-
vagrant basebox define 'boxname' 'CentOS-
|
34
|
-
vagrant basebox define 'boxname' '
|
35
|
-
vagrant basebox define 'boxname' '
|
36
|
-
vagrant basebox define 'boxname' '
|
37
|
-
vagrant basebox define 'boxname' '
|
35
|
+
The following templates are available:
|
36
|
+
vagrant basebox define '<boxname>' 'Archlinux-latest'
|
37
|
+
vagrant basebox define '<boxname>' 'CentOS-4.8-i386'
|
38
|
+
vagrant basebox define '<boxname>' 'CentOS-5.5-i386'
|
39
|
+
vagrant basebox define '<boxname>' 'CentOS-5.5-i386-netboot'
|
40
|
+
vagrant basebox define '<boxname>' 'Debian-6.0-amd64-netboot'
|
41
|
+
vagrant basebox define '<boxname>' 'Debian-6.0-i386-netboot'
|
42
|
+
vagrant basebox define '<boxname>' 'Fedora-14-amd64'
|
43
|
+
vagrant basebox define '<boxname>' 'Fedora-14-amd64-netboot'
|
44
|
+
vagrant basebox define '<boxname>' 'Fedora-14-i386'
|
45
|
+
vagrant basebox define '<boxname>' 'Fedora-14-i386-netboot'
|
46
|
+
vagrant basebox define '<boxname>' 'freebsd-8.2-experimental'
|
47
|
+
vagrant basebox define '<boxname>' 'freebsd-8.2-pcbsd-i386'
|
48
|
+
vagrant basebox define '<boxname>' 'freebsd-8.2-pcbsd-i386-netboot'
|
49
|
+
vagrant basebox define '<boxname>' 'solaris-11-express-i386'
|
50
|
+
vagrant basebox define '<boxname>' 'Sysrescuecd-2.0.0-experimental'
|
51
|
+
vagrant basebox define '<boxname>' 'ubuntu-10.04.2-server-amd64'
|
52
|
+
vagrant basebox define '<boxname>' 'ubuntu-10.04.2-server-i386'
|
53
|
+
vagrant basebox define '<boxname>' 'ubuntu-10.10-server-amd64'
|
54
|
+
vagrant basebox define '<boxname>' 'ubuntu-10.10-server-amd64-netboot'
|
55
|
+
vagrant basebox define '<boxname>' 'ubuntu-10.10-server-i386'
|
56
|
+
vagrant basebox define '<boxname>' 'ubuntu-10.10-server-i386-netboot'
|
57
|
+
|
38
58
|
|
39
59
|
</pre>
|
40
60
|
## Define a new box
|
@@ -54,7 +74,7 @@ definition.rb postinstall.sh postinstall2.sh preseed.cfg
|
|
54
74
|
<pre>
|
55
75
|
Veewee::Session.declare( {
|
56
76
|
:cpu_count => '1', :memory_size=> '256',
|
57
|
-
:disk_size => '10140', :disk_format => 'VDI'
|
77
|
+
:disk_size => '10140', :disk_format => 'VDI',
|
58
78
|
:os_type_id => 'Ubuntu',
|
59
79
|
:iso_file => "ubuntu-10.10-server-i386.iso",
|
60
80
|
:iso_src => "http://releases.ubuntu.com/maverick/ubuntu-10.10-server-i386.iso",
|
@@ -88,6 +108,7 @@ Put your isofile inside the 'currentdir'/iso directory or if you don't run
|
|
88
108
|
|
89
109
|
- the build assumes your iso files are in 'currentdir'/iso
|
90
110
|
- if it can not find it will suggest to download the iso for you
|
111
|
+
- use '--force' to overwrite an existing install
|
91
112
|
|
92
113
|
## Build the new box:
|
93
114
|
<pre>
|
@@ -102,6 +123,11 @@ $ vagrant basebox build 'myubuntubox'</pre>
|
|
102
123
|
- Wait for ssh login to work with :ssh_user , :ssh_password
|
103
124
|
- Sudo execute the :postinstall_files
|
104
125
|
|
126
|
+
## Validate the vm
|
127
|
+
<pre>$ vagrant basebox validate 'myubuntubox' </pre>
|
128
|
+
|
129
|
+
this will run some cucumber test against the box to see if it has the necessary bits and pieces for vagrant to work
|
130
|
+
|
105
131
|
## Export the vm to a .box file
|
106
132
|
<pre>$ vagrant basebox export 'myubuntubox' </pre>
|
107
133
|
|
@@ -122,6 +148,35 @@ $ vagrant init 'myubuntubox'
|
|
122
148
|
$ vagrant up
|
123
149
|
$ vagrant ssh
|
124
150
|
</pre>
|
151
|
+
|
152
|
+
## How to add a new OS/installation (needs some love)
|
153
|
+
|
154
|
+
- I suggest the easiest way is to get an account on github
|
155
|
+
- fork of the veewee repository
|
156
|
+
|
157
|
+
<pre>
|
158
|
+
$ git clone https://github.com/*your account*/veewee.git
|
159
|
+
$ cd veewee
|
160
|
+
$ gem install bundler
|
161
|
+
$ bundle install
|
162
|
+
</pre>
|
163
|
+
|
164
|
+
If you don't use rvm, be sure to execute vagrant through bundle exec
|
165
|
+
<pre>
|
166
|
+
$ alias vagrant="bundle exec vagrant"
|
167
|
+
</pre>
|
168
|
+
|
169
|
+
Start of an existing one
|
170
|
+
<pre>
|
171
|
+
$ vagrant basebox define 'mynewos' 'ubuntu...'
|
172
|
+
</pre>
|
173
|
+
|
174
|
+
- Do changes in the currentdir/definitions/mynewos
|
175
|
+
- When it builds ok, move the definition/mynewos to a sensible directory under templates
|
176
|
+
- commit the changes (git commit -a)
|
177
|
+
- push the changes to github (git push)
|
178
|
+
- go to the github gui and issue a pull request for it
|
179
|
+
|
125
180
|
## If you have a setup working, share your 'definition' with me. That would be fun!
|
126
181
|
|
127
182
|
IDEAS:
|
@@ -130,11 +185,6 @@ IDEAS:
|
|
130
185
|
|
131
186
|
FUTURE IDEAS:
|
132
187
|
|
133
|
-
- use snapshots to fastforward initial boot, and every postinstall command
|
134
188
|
- export to AMI too
|
135
189
|
- provide for more failsafe execution, testing parameters
|
136
|
-
- use more virtualbox ruby instead of calling the VBoxManage command
|
137
|
-
- Verify the installation with cucumber-nagios (ssh functionality)
|
138
190
|
- Do the same for Vmware Fusion
|
139
|
-
|
140
|
-
BUGS: Lots = Like I said it currently works for me, on my machine and with the correct magic sequence :)
|
data/lib/veewee/command.rb
CHANGED
@@ -12,7 +12,7 @@ definition_dir= File.expand_path(File.join(veewee_dir, "definitions"))
|
|
12
12
|
tmp_dir=File.expand_path(File.join(veewee_dir, "tmp"))
|
13
13
|
iso_dir=File.expand_path(File.join(veewee_dir, "iso"))
|
14
14
|
box_dir=File.expand_path(File.join(veewee_dir, "boxes"))
|
15
|
-
validation_dir=File.expand_path(File.join(
|
15
|
+
validation_dir=File.expand_path(File.join(lib_dir, "validation"))
|
16
16
|
|
17
17
|
#Initialize
|
18
18
|
Veewee::Session.setenv({:veewee_dir => veewee_dir, :definition_dir => definition_dir,
|
data/lib/veewee/session.rb
CHANGED
@@ -149,16 +149,29 @@ module Veewee
|
|
149
149
|
puts
|
150
150
|
puts "Verifying the isofile #{filename} is ok."
|
151
151
|
else
|
152
|
+
|
152
153
|
full_path=File.join(@iso_dir,filename)
|
153
154
|
path1=Pathname.new(full_path)
|
154
155
|
path2=Pathname.new(Dir.pwd)
|
155
156
|
rel_path=path1.relative_path_from(path2).to_s
|
156
157
|
|
157
158
|
puts
|
158
|
-
puts "We did not find an isofile in <currentdir>/iso.
|
159
|
-
|
159
|
+
puts "We did not find an isofile in <currentdir>/iso. \n\nThe definition provided the following download information:"
|
160
|
+
unless "#{@definition[:iso_src]}"==""
|
161
|
+
puts "- Download url: #{@definition[:iso_src]}"
|
162
|
+
end
|
160
163
|
puts "- Md5 Checksum: #{@definition[:iso_md5]}"
|
161
|
-
puts ""
|
164
|
+
puts "#{@definition[:iso_download_instructions]}"
|
165
|
+
puts
|
166
|
+
|
167
|
+
if @definition[:iso_src] == ""
|
168
|
+
puts "Please follow the instructions above:"
|
169
|
+
puts "- to get the ISO"
|
170
|
+
puts" - put it in <currentdir>/iso"
|
171
|
+
puts "- then re-run the command"
|
172
|
+
puts
|
173
|
+
exit
|
174
|
+
else
|
162
175
|
|
163
176
|
question=ask("Download? (Yes/No)") {|q| q.default="No"}
|
164
177
|
if question.downcase == "yes"
|
@@ -176,7 +189,7 @@ module Veewee
|
|
176
189
|
exit
|
177
190
|
end
|
178
191
|
|
179
|
-
|
192
|
+
end
|
180
193
|
end
|
181
194
|
|
182
195
|
end
|
data/lib/veewee/version.rb
CHANGED
@@ -3,9 +3,9 @@ Veewee::Session.declare({
|
|
3
3
|
:memory_size=> '256',
|
4
4
|
:disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
|
5
5
|
:os_type_id => 'Debian_64',
|
6
|
-
:iso_file => "debian-6.0.
|
7
|
-
:iso_src => "http://
|
8
|
-
:iso_md5 => "
|
6
|
+
:iso_file => "debian-6.0.1a-amd64-netinst.iso",
|
7
|
+
:iso_src => "http://cdimage.debian.org/debian-cd/6.0.1a/amd64/iso-cd/debian-6.0.1a-amd64-netinst.iso",
|
8
|
+
:iso_md5 => "eb25e5098ed0e60381f78b4efdde8737",
|
9
9
|
:iso_download_timeout => "1000",
|
10
10
|
:boot_wait => "10", :boot_cmd_sequence => [
|
11
11
|
'<Esc>',
|
File without changes
|
File without changes
|
@@ -5,9 +5,9 @@ Veewee::Session.declare({
|
|
5
5
|
:memory_size=> '256',
|
6
6
|
:disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off',
|
7
7
|
:os_type_id => 'Debian',
|
8
|
-
:iso_file => "debian-6.0.
|
9
|
-
:iso_src => "http://
|
10
|
-
:iso_md5 => "
|
8
|
+
:iso_file => "debian-6.0.1a-i386-netinst.iso",
|
9
|
+
:iso_src => "http://cdimage.debian.org/debian-cd/6.0.1a/i386/iso-cd/debian-6.0.1a-i386-netinst.iso",
|
10
|
+
:iso_md5 => "57bd4f765d0f5909cc84f1a7c1eaf976",
|
11
11
|
:iso_download_timeout => "1000",
|
12
12
|
:boot_wait => "10", :boot_cmd_sequence => [
|
13
13
|
'<Esc>',
|
File without changes
|
File without changes
|
@@ -5,6 +5,11 @@ Veewee::Session.declare({
|
|
5
5
|
:os_type_id => 'OpenSolaris',
|
6
6
|
:iso_file => "sol-11-exp-201011-ai-x86.iso",
|
7
7
|
:iso_src => "",
|
8
|
+
:iso_download_instructions => "- You need to download this manually as there is no automated way to do it\n"+
|
9
|
+
"http://www.oracle.com/technetwork/server-storage/solaris11/downloads/index.html\n"+
|
10
|
+
"\n"+
|
11
|
+
"- The version tested is 2010.11\n"+
|
12
|
+
"- For other version: changed the iso filename+checksum\n",
|
8
13
|
:iso_md5 => "36527d4d49a645ef6f6d2677c8e0118c",
|
9
14
|
:iso_download_timeout => 1000,
|
10
15
|
:boot_wait => "10", :boot_cmd_sequence => [
|
@@ -12,23 +12,23 @@ yes|/usr/sbin/pkgadd -d http://mirror.opencsw.org/opencsw/pkgutil-`uname -p`.pkg
|
|
12
12
|
/usr/bin/pkg install SUNWarc SUNWsfwhea SUNWhea SUNWtoo
|
13
13
|
/usr/bin/pkg install math/header-math
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
/opt/csw/bin/pkgutil -y -i CSWgsed
|
16
|
+
/opt/csw/bin/pkgutil -y -i CSWruby18-gcc4
|
17
|
+
/opt/csw/bin/pkgutil -y -i CSWruby18-dev
|
18
|
+
/opt/csw/bin/pkgutil -y -i CSWrubygems
|
19
19
|
|
20
20
|
# These are needed to get a compiler working
|
21
21
|
# Mainly because chef depends on compiling some native gems
|
22
22
|
export PATH=/opt/csw/bin/:$PATH
|
23
23
|
export PATH=/opt/csw/gcc4/bin/:$PATH
|
24
24
|
|
25
|
-
|
25
|
+
/opt/csw/bin/pkgutil -y -i CSWgcc4core
|
26
26
|
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
/opt/csw/bin/pkgutil -y -i CSWgcc4g++
|
29
|
+
/opt/csw/bin/pkgutil -y -i CSWreadline
|
30
|
+
/opt/csw/bin/pkgutil -y -i CSWzlib
|
31
|
+
/opt/csw/bin/pkgutil -y -i CSWossldevel
|
32
32
|
|
33
33
|
# prevents ":in `require': no such file to load -- mkmf (LoadError)"
|
34
34
|
# yes|/opt/csw/bin/pkgutil -i CSWruby
|
@@ -36,8 +36,8 @@ yes | /opt/csw/bin/pkgutil -i CSWossldevel
|
|
36
36
|
# has entries in /opt/csw/lib/ruby/1.8/i386-solaris2.9/rbconfig.rb
|
37
37
|
# luckily there is another one
|
38
38
|
# For some reason these don't get installed ok, we need to give them a slight kick again
|
39
|
-
|
40
|
-
|
39
|
+
/opt/csw/bin/pkgutil -y -i CSWgcc4core
|
40
|
+
/opt/csw/bin/pkgutil -y -i CSWruby18-gcc4
|
41
41
|
|
42
42
|
# no solaris2.11 .... mkheaders here ! needs some fixing ??
|
43
43
|
# /opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.3.3/install-tools/mkheaders
|
@@ -69,6 +69,8 @@ yes|/usr/sbin/pkgadd -d . SUNWvbox
|
|
69
69
|
echo "export PATH=/opt/csw/bin:/opt/csw/sbin/:$PATH" >> /root/.profile
|
70
70
|
echo "export PATH=/opt/csw/bin:/opt/csw/sbin/:$PATH" >> /export/home/vagrant/.profile
|
71
71
|
|
72
|
+
puts "Note: validation of this box wil fail, as it's not linux based, working on that"
|
73
|
+
|
72
74
|
exit
|
73
75
|
|
74
76
|
#Inspiration for ruby enterprise
|
@@ -7,7 +7,7 @@ Veewee::Session.declare({
|
|
7
7
|
:iso_md5 => "02abb1a71bde21a1335e9368dad529ca",
|
8
8
|
:iso_download_timeout => "1000",
|
9
9
|
:boot_wait => "10", :boot_cmd_sequence => [
|
10
|
-
'<
|
10
|
+
'<Tab>',
|
11
11
|
'noapic preseed/url=http://%IP%:%PORT%/preseed.cfg ',
|
12
12
|
'debian-installer=en_US auto locale=en_US kbd-chooser/method=us ',
|
13
13
|
'hostname=%NAME% ',
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: veewee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 49
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 21
|
10
|
+
version: 0.1.21
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Patrick Debois
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-05-
|
19
|
+
date: 2011-05-04 00:00:00 +02:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -204,12 +204,12 @@ files:
|
|
204
204
|
- templates/CentOS-5.5-i386/definition.rb
|
205
205
|
- templates/CentOS-5.5-i386/ks.cfg
|
206
206
|
- templates/CentOS-5.5-i386/postinstall.sh
|
207
|
-
- templates/Debian-6.0-amd64-netboot/definition.rb
|
208
|
-
- templates/Debian-6.0-amd64-netboot/postinstall.sh
|
209
|
-
- templates/Debian-6.0-amd64-netboot/preseed.cfg
|
210
|
-
- templates/Debian-6.0-i386-netboot/definition.rb
|
211
|
-
- templates/Debian-6.0-i386-netboot/postinstall.sh
|
212
|
-
- templates/Debian-6.0-i386-netboot/preseed.cfg
|
207
|
+
- templates/Debian-6.0.1a-amd64-netboot/definition.rb
|
208
|
+
- templates/Debian-6.0.1a-amd64-netboot/postinstall.sh
|
209
|
+
- templates/Debian-6.0.1a-amd64-netboot/preseed.cfg
|
210
|
+
- templates/Debian-6.0.1a-i386-netboot/definition.rb
|
211
|
+
- templates/Debian-6.0.1a-i386-netboot/postinstall.sh
|
212
|
+
- templates/Debian-6.0.1a-i386-netboot/preseed.cfg
|
213
213
|
- templates/Fedora-14-amd64-netboot/definition.rb
|
214
214
|
- templates/Fedora-14-amd64-netboot/ks.cfg
|
215
215
|
- templates/Fedora-14-amd64-netboot/postinstall.sh
|