veewee 0.1.20 → 0.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|