veewee 0.1.29 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/Gemfile.lock +23 -29
  2. data/lib/veewee/session.rb +10 -7
  3. data/lib/veewee/ssh.rb +70 -42
  4. data/lib/veewee/version.rb +1 -1
  5. data/templates/CentOS-4.8-i386/postinstall.sh +2 -0
  6. data/templates/CentOS-5.6-i386-netboot/postinstall.sh +3 -1
  7. data/templates/CentOS-5.6-i386/postinstall.sh +3 -1
  8. data/templates/CentOS-5.6-x86_64-netboot/postinstall.sh +2 -0
  9. data/templates/CentOS-6.0-i386-netboot/definition.rb +16 -0
  10. data/templates/CentOS-6.0-i386-netboot/ks.cfg +52 -0
  11. data/templates/CentOS-6.0-i386-netboot/postinstall.sh +30 -0
  12. data/templates/CentOS-6.0-i386/definition.rb +17 -0
  13. data/templates/CentOS-6.0-i386/ks.cfg +47 -0
  14. data/templates/CentOS-6.0-i386/postinstall.sh +48 -0
  15. data/templates/CentOS-6.0-x86_64-netboot/definition.rb +16 -0
  16. data/templates/CentOS-6.0-x86_64-netboot/ks.cfg +52 -0
  17. data/templates/CentOS-6.0-x86_64-netboot/postinstall.sh +30 -0
  18. data/templates/CentOS-6.0-x86_64/definition.rb +17 -0
  19. data/templates/CentOS-6.0-x86_64/ks.cfg +47 -0
  20. data/templates/CentOS-6.0-x86_64/postinstall.sh +48 -0
  21. data/templates/Debian-5.0.8-amd64-netboot/postinstall.sh +2 -0
  22. data/templates/Debian-5.0.8-i386-netboot/postinstall.sh +2 -0
  23. data/templates/Debian-6.0.2-amd64-netboot/postinstall.sh +2 -0
  24. data/templates/Debian-6.0.2-i386-netboot/postinstall.sh +2 -0
  25. data/templates/Fedora-14-amd64-netboot/postinstall.sh +2 -0
  26. data/templates/Fedora-14-amd64/postinstall.sh +2 -0
  27. data/templates/Fedora-14-i386-netboot/postinstall.sh +2 -0
  28. data/templates/Fedora-14-i386/postinstall.sh +2 -0
  29. data/templates/Fedora-15-i386-netboot/definition.rb +17 -0
  30. data/templates/Fedora-15-i386-netboot/ks.cfg +82 -0
  31. data/templates/Fedora-15-i386-netboot/postinstall.sh +18 -0
  32. data/templates/Fedora-15-i386/definition.rb +17 -0
  33. data/templates/Fedora-15-i386/ks.cfg +64 -0
  34. data/templates/Fedora-15-i386/postinstall.sh +33 -0
  35. data/templates/archlinux-i386/aif.cfg +33 -0
  36. data/templates/archlinux-i386/definition.rb +29 -0
  37. data/templates/archlinux-i386/postinstall.sh +95 -0
  38. data/templates/archlinux-x86_64/aif.cfg +33 -0
  39. data/templates/{archlinux-64-aif-experimental → archlinux-x86_64}/definition.rb +7 -7
  40. data/templates/archlinux-x86_64/postinstall.sh +95 -0
  41. data/templates/freebsd-8.2-experimental/postinstall.sh +3 -1
  42. data/templates/freebsd-8.2-pcbsd-i386-netboot/postinstall.sh +2 -0
  43. data/templates/freebsd-8.2-pcbsd-i386/postinstall.sh +2 -0
  44. data/templates/gentoo-latest-i386-experimental/postinstall.sh +2 -0
  45. data/templates/openindiana-148-ai-x86/postinstall.sh +2 -0
  46. data/templates/opensuse-11.4-i386-experimental/postinstall.sh +1 -0
  47. data/templates/solaris-11-express-i386/postinstall.sh +2 -0
  48. data/templates/ubuntu-10.04.2-amd64-netboot/postinstall.sh +4 -2
  49. data/templates/ubuntu-10.04.2-server-amd64-alt/definition.rb +57 -0
  50. data/templates/ubuntu-10.04.2-server-amd64-alt/postinstall.sh +249 -0
  51. data/templates/ubuntu-10.04.2-server-amd64-alt/preseed.cfg +124 -0
  52. data/templates/ubuntu-10.04.2-server-amd64/definition.rb +56 -23
  53. data/templates/ubuntu-10.04.2-server-amd64/postinstall.sh +4 -2
  54. data/templates/ubuntu-10.04.2-server-i386-netboot/postinstall.sh +4 -2
  55. data/templates/ubuntu-10.04.2-server-i386/postinstall.sh +3 -1
  56. data/templates/ubuntu-10.10-server-amd64-netboot/postinstall.sh +4 -2
  57. data/templates/ubuntu-10.10-server-amd64/postinstall.sh +3 -1
  58. data/templates/ubuntu-10.10-server-i386-netboot/postinstall.sh +4 -2
  59. data/templates/ubuntu-10.10-server-i386/postinstall.sh +4 -2
  60. data/templates/ubuntu-11.04-server-amd64/postinstall.sh +4 -2
  61. data/templates/ubuntu-11.04-server-i386/postinstall.sh +4 -2
  62. data/templates/ubuntu-8.04.4-server-amd64/postinstall.sh +2 -0
  63. data/templates/ubuntu-8.04.4-server-i386/postinstall.sh +3 -1
  64. data/validation/features/steps/ssh_steps.rb +22 -8
  65. data/veewee.gemspec +2 -2
  66. metadata +40 -21
  67. data/templates/archlinux-64-aif-experimental/postinstall.sh +0 -6
  68. data/templates/archlinux-64-experimental/autorun0 +0 -6
  69. data/templates/archlinux-64-experimental/definition.rb +0 -21
  70. data/templates/archlinux-64-experimental/postinstall.sh +0 -190
  71. data/templates/archlinux-i686/autorun0 +0 -6
  72. data/templates/archlinux-i686/definition.rb +0 -21
  73. data/templates/archlinux-i686/postinstall.sh +0 -191
@@ -1,48 +1,44 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- veewee (0.1.29)
5
- cucumber (= 0.8.5)
4
+ veewee (0.2.0)
5
+ cucumber (~> 1.0.2)
6
6
  highline (~> 1.6.1)
7
7
  net-ssh (~> 2.1.0)
8
8
  popen4 (~> 0.1.2)
9
9
  progressbar
10
10
  rspec (~> 2.5.0)
11
11
  thor (~> 0.14.6)
12
- vagrant (~> 0.7.0)
12
+ vagrant (~> 0.8.0)
13
13
 
14
14
  GEM
15
15
  remote: http://rubygems.org/
16
16
  specs:
17
17
  Platform (0.4.0)
18
- abstract (1.0.0)
19
18
  archive-tar-minitar (0.5.2)
20
- builder (2.1.2)
21
- cucumber (0.8.5)
22
- builder (~> 2.1.2)
23
- diff-lcs (~> 1.1.2)
24
- gherkin (~> 2.1.4)
25
- json_pure (~> 1.4.3)
26
- term-ansicolor (~> 1.0.4)
19
+ builder (3.0.0)
20
+ cucumber (1.0.2)
21
+ builder (>= 2.1.2)
22
+ diff-lcs (>= 1.1.2)
23
+ gherkin (~> 2.4.5)
24
+ json (>= 1.4.6)
25
+ term-ansicolor (>= 1.0.5)
27
26
  diff-lcs (1.1.2)
28
- erubis (2.6.6)
29
- abstract (>= 1.0.0)
27
+ erubis (2.7.0)
30
28
  ffi (1.0.9)
31
- gherkin (2.1.5)
32
- trollop (~> 1.16.2)
29
+ gherkin (2.4.5)
30
+ json (>= 1.4.6)
33
31
  highline (1.6.2)
34
32
  i18n (0.5.0)
35
- json (1.5.1)
36
- json_pure (1.4.6)
37
- mario (0.0.6)
33
+ json (1.5.3)
38
34
  net-scp (1.0.4)
39
35
  net-ssh (>= 1.99.1)
40
36
  net-ssh (2.1.4)
41
- open4 (1.0.1)
37
+ open4 (1.1.0)
42
38
  popen4 (0.1.2)
43
39
  Platform (>= 0.4.0)
44
40
  open4 (>= 0.4.0)
45
- progressbar (0.9.0)
41
+ progressbar (0.9.1)
46
42
  rspec (2.5.0)
47
43
  rspec-core (~> 2.5.0)
48
44
  rspec-expectations (~> 2.5.0)
@@ -51,21 +47,19 @@ GEM
51
47
  rspec-expectations (2.5.0)
52
48
  diff-lcs (~> 1.1.2)
53
49
  rspec-mocks (2.5.0)
54
- term-ansicolor (1.0.5)
50
+ term-ansicolor (1.0.6)
55
51
  thor (0.14.6)
56
- trollop (1.16.2)
57
- vagrant (0.7.5)
52
+ vagrant (0.8.1)
58
53
  archive-tar-minitar (= 0.5.2)
59
- erubis (~> 2.6.6)
54
+ erubis (~> 2.7.0)
60
55
  i18n (~> 0.5.0)
61
56
  json (~> 1.5.1)
62
- mario (~> 0.0.6)
63
57
  net-scp (~> 1.0.4)
64
- net-ssh (~> 2.1.0)
58
+ net-ssh (~> 2.1.4)
65
59
  thor (~> 0.14.6)
66
- virtualbox (~> 0.8.3)
67
- virtualbox (0.8.6)
68
- ffi (~> 1.0)
60
+ virtualbox (~> 0.9.0)
61
+ virtualbox (0.9.0)
62
+ ffi (~> 1.0.9)
69
63
 
70
64
  PLATFORMS
71
65
  ruby
@@ -6,6 +6,9 @@ require 'open-uri'
6
6
  require 'progressbar'
7
7
  require 'highline/import'
8
8
  require 'tempfile'
9
+ require 'virtualbox'
10
+ require 'virtualbox/abstract_model'
11
+ require 'virtualbox/ext/byte_normalizer'
9
12
 
10
13
 
11
14
  module Veewee
@@ -69,7 +72,7 @@ module Veewee
69
72
  FileUtils.mkdir(File.join(@definition_dir,boxname))
70
73
  end
71
74
  FileUtils.cp_r(File.join(@template_dir,template_name,'.'),File.join(@definition_dir,boxname))
72
- puts "The basebox '#{boxname}' has been succesfully created from the template ''#{template_name}'"
75
+ puts "The basebox '#{boxname}' has been successfully created from the template ''#{template_name}'"
73
76
  puts "You can now edit the definition files stored in definitions/#{boxname}"
74
77
  puts "or build the box with:"
75
78
  if (options["format"]=='vagrant')
@@ -346,7 +349,7 @@ module Veewee
346
349
  begin
347
350
  Veewee::Ssh.transfer_file("localhost",filename,File.basename(filename),ssh_options)
348
351
  rescue RuntimeError
349
- puts "error transfering file, possible not enough permissions to write?"
352
+ puts "error transferring file, possible not enough permissions to write?"
350
353
  exit
351
354
  end
352
355
  command=@definition[:sudo_cmd]
@@ -362,11 +365,11 @@ module Veewee
362
365
 
363
366
  end
364
367
 
365
- puts "#{boxname} was build succesfully. "
368
+ puts "#{boxname} was built successfully. "
366
369
  puts ""
367
370
  puts "Now you can: "
368
- puts "- verify your box by running : vagrant basebox validate #{boxname}"
369
- puts "- export your vm to a .box fileby running : vagrant basebox export #{boxname}"
371
+ puts "- verify your box by running : vagrant basebox validate #{boxname}"
372
+ puts "- export your vm to a .box file by running : vagrant basebox export #{boxname}"
370
373
 
371
374
  end
372
375
 
@@ -889,11 +892,11 @@ module Veewee
889
892
 
890
893
  #Need to look it up again because if it was an initial load
891
894
  vm=VirtualBox::VM.find(boxname)
892
- puts "Step [#{current_step_nr}] was succesfully - saving state"
895
+ puts "Step [#{current_step_nr}] was successfully - saving state"
893
896
  vm.save_state
894
897
  sleep 2 #waiting for it to be ok
895
898
  #puts "about to snapshot #{vm}"
896
- #take snapshot after succesful execution
899
+ #take snapshot after successful execution
897
900
  vm.take_snapshot(step_name,"snapshot taken by veewee")
898
901
  sleep 2 #waiting for it to be started again
899
902
  vm.start
@@ -13,14 +13,26 @@ module Veewee
13
13
  begin
14
14
  Timeout::timeout(options[:timeout]) do
15
15
  connected=false
16
+ @key_auth_tried = false
17
+ ssh_options = { :port => options[:port] , :password => options[:password], :paranoid => false, :timeout => options[:timeout] }
16
18
  while !connected do
17
19
  begin
18
20
  print "."
19
- Net::SSH.start(ip, options[:user], { :port => options[:port] , :password => options[:password], :paranoid => false, :timeout => options[:timeout] }) do |ssh|
21
+ Net::SSH.start(ip, options[:user], ssh_options) do |ssh|
20
22
  block.call(ip);
21
23
  puts ""
22
24
  return true
23
25
  end
26
+ rescue Net::SSH::AuthenticationFailed
27
+ options[:keys] = File.join(File.dirname(__FILE__),'./../../validation/vagrant')
28
+ options.delete(:password)
29
+ ssh_options = options
30
+ if @key_auth_tried
31
+ raise
32
+ else
33
+ @key_auth_tried = true
34
+ retry
35
+ end
24
36
  rescue Net::SSH::Disconnect,Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::ECONNABORTED, Errno::ECONNRESET, Errno::ENETUNREACH
25
37
  sleep 5
26
38
  end
@@ -89,64 +101,80 @@ module Veewee
89
101
 
90
102
  puts "Executing command: #{command}"
91
103
 
92
- Net::SSH.start(host, options[:user], { :port => options[:port], :password => options[:password], :paranoid => false }) do |ssh|
104
+ @key_auth_tried = false
105
+ ssh_options = { :port => options[:port], :password => options[:password], :paranoid => false}
106
+ # ssh_options[:verbose] => :debug
107
+ begin
108
+ Net::SSH.start(host, options[:user], ssh_options) do |ssh|
93
109
 
94
- # open a new channel and configure a minimal set of callbacks, then run
95
- # the event loop until the channel finishes (closes)
96
- channel = ssh.open_channel do |ch|
110
+ # open a new channel and configure a minimal set of callbacks, then run
111
+ # the event loop until the channel finishes (closes)
112
+ channel = ssh.open_channel do |ch|
97
113
 
98
- #request pty for sudo stuff and so
99
- ch.request_pty do |ch, success|
100
- raise "Error requesting pty" unless success
101
- end
102
-
114
+ #request pty for sudo stuff and so
115
+ ch.request_pty do |ch, success|
116
+ raise "Error requesting pty" unless success
117
+ end
103
118
 
104
- ch.exec "#{command}" do |ch, success|
105
- raise "could not execute command" unless success
106
119
 
120
+ ch.exec "#{command}" do |ch, success|
121
+ raise "could not execute command" unless success
107
122
 
108
-
109
- # "on_data" is called when the process writes something to stdout
110
- ch.on_data do |c, data|
111
- @stdout+=data
112
123
 
113
- print data
114
124
 
115
- end
125
+ # "on_data" is called when the process writes something to stdout
126
+ ch.on_data do |c, data|
127
+ @stdout+=data
128
+
129
+ print data
116
130
 
117
- # "on_extended_data" is called when the process writes something to stderr
118
- ch.on_extended_data do |c, type, data|
119
- @stderr+=data
131
+ end
120
132
 
121
- print data
133
+ # "on_extended_data" is called when the process writes something to stderr
134
+ ch.on_extended_data do |c, type, data|
135
+ @stderr+=data
122
136
 
123
- end
137
+ print data
124
138
 
125
- #exit code
126
- #http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/a806b0f5dae4e1e2
127
- channel.on_request("exit-status") do |ch, data|
128
- exit_code = data.read_long
129
- @status=exit_code
130
- if exit_code > 0
131
- puts "ERROR: exit code #{exit_code}"
132
- else
133
- #puts "Successfully executed"
134
139
  end
135
- end
136
140
 
137
- channel.on_request("exit-signal") do |ch, data|
138
- puts "SIGNAL: #{data.read_long}"
139
- end
141
+ #exit code
142
+ #http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/a806b0f5dae4e1e2
143
+ channel.on_request("exit-status") do |ch, data|
144
+ exit_code = data.read_long
145
+ @status=exit_code
146
+ if exit_code > 0
147
+ puts "ERROR: exit code #{exit_code}"
148
+ else
149
+ #puts "Successfully executed"
150
+ end
151
+ end
152
+
153
+ channel.on_request("exit-signal") do |ch, data|
154
+ puts "SIGNAL: #{data.read_long}"
155
+ end
140
156
 
141
- ch.on_close {
142
- #puts "done!"
143
- }
144
- #status=ch.exec "echo $?"
157
+ ch.on_close {
158
+ #puts "done!"
159
+ }
160
+ #status=ch.exec "echo $?"
161
+ end
145
162
  end
163
+ channel.wait
146
164
  end
147
- channel.wait
165
+ rescue Net::SSH::AuthenticationFailed
166
+ ssh_options[:keys] = Array.new([File.join(File.dirname(__FILE__),'./../../validation/vagrant')])
167
+ ssh_options.delete(:password)
168
+ ssh_options[:auth_methods] = ['publickey']
169
+ if @key_auth_tried
170
+ raise
171
+ else
172
+ @key_auth_tried = true
173
+ retry
148
174
  end
149
-
175
+ rescue Net::SSH::Disconnect, Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::ECONNABORTED, Errno::ECONNRESET, Errno::ENETUNREACH
176
+ sleep 1
177
+ end
150
178
 
151
179
  if (@status.to_s != options[:exitcode] )
152
180
  if (options[:exitcode]=="*")
@@ -1,3 +1,3 @@
1
1
  module Veewee
2
- VERSION = "0.1.29"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,6 +1,8 @@
1
1
  #http://chrisadams.me.uk/2010/05/10/setting-up-a-centos-base-box-for-development-and-testing-with-vagrant/
2
2
  #kernel source is needed for vbox additions
3
3
 
4
+ date > /etc/vagrant_box_build_time
5
+
4
6
  yum -y install gcc bzip2 make kernel-devel-`uname -r`
5
7
 
6
8
  #yum -y update
@@ -1,6 +1,8 @@
1
1
  #http://chrisadams.me.uk/2010/05/10/setting-up-a-centos-base-box-for-development-and-testing-with-vagrant/
2
2
  #kernel source is needed for vbox additions
3
3
 
4
+ date > /etc/vagrant_box_build_time
5
+
4
6
  yum -y install gcc bzip2 make kernel-devel-`uname -r`
5
7
 
6
8
  #yum -y update
@@ -47,4 +49,4 @@ sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers
47
49
 
48
50
  #poweroff -h
49
51
 
50
- exit
52
+ exit
@@ -1,6 +1,8 @@
1
1
  #http://chrisadams.me.uk/2010/05/10/setting-up-a-centos-base-box-for-development-and-testing-with-vagrant/
2
2
  #kernel source is needed for vbox additions
3
3
 
4
+ date > /etc/vagrant_box_build_time
5
+
4
6
  yum -y install gcc bzip2 make kernel-devel-`uname -r`
5
7
 
6
8
  #yum -y update
@@ -45,4 +47,4 @@ sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers
45
47
 
46
48
  #poweroff -h
47
49
 
48
- exit
50
+ exit
@@ -1,5 +1,7 @@
1
1
  #http://chrisadams.me.uk/2010/05/10/setting-up-a-centos-base-box-for-development-and-testing-with-vagrant/
2
2
 
3
+ date > /etc/vagrant_box_build_time
4
+
3
5
  fail()
4
6
  {
5
7
  echo "FATAL: $*"
@@ -0,0 +1,16 @@
1
+ Veewee::Session.declare({
2
+ :cpu_count => '1', :memory_size=> '392',
3
+ :disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off', :ioapic => 'on', :pae => 'on',
4
+ :os_type_id => 'RedHat',
5
+ :iso_file => "CentOS-6.0-i386-netinstall.iso",
6
+ :iso_src => "http://be.mirror.eurid.eu/centos/6.0/isos/i386/CentOS-6.0-i386-netinstall.iso",
7
+ :iso_md5 => "65731c29c49630dea6cde103d02ccffb",
8
+ :iso_download_timeout => 1000,
9
+ :boot_wait => "15", :boot_cmd_sequence => [ '<Tab> text ks=http://%IP%:%PORT%/ks.cfg<Enter>' ],
10
+ :kickstart_port => "7122", :kickstart_timeout => 10000, :kickstart_file => "ks.cfg",
11
+ :ssh_login_timeout => "100", :ssh_user => "vagrant", :ssh_password => "vagrant", :ssh_key => "",
12
+ :ssh_host_port => "7222", :ssh_guest_port => "22",
13
+ :sudo_cmd => "echo '%p'|sudo -S sh '%f'",
14
+ :shutdown_cmd => "/sbin/halt -h -p",
15
+ :postinstall_files => [ "postinstall.sh"], :postinstall_timeout => 10000
16
+ })
@@ -0,0 +1,52 @@
1
+ install
2
+ url --url=http://be.mirror.eurid.eu/centos/6.0/os/i386/
3
+ lang en_US.UTF-8
4
+ keyboard us
5
+ network --bootproto dhcp
6
+ rootpw --iscrypted $1$damlkd,f$UC/u5pUts5QiU3ow.CSso/
7
+ firewall --enabled --trust eth0 --ssh
8
+ authconfig --enableshadow --enablemd5
9
+ selinux --disabled
10
+ timezone Europe/Brussels
11
+ bootloader --location=mbr
12
+
13
+ text
14
+ skipx
15
+ zerombr
16
+
17
+ clearpart --all --initlabel
18
+ autopart
19
+
20
+ auth --useshadow --enablemd5
21
+ firstboot --disabled
22
+ reboot
23
+
24
+ repo --name=epel --baseurl=http://download.fedora.redhat.com/pub/epel/6/i386/ --includepkgs='ruby-augeas,ruby-shadow'
25
+ repo --name=puppetlabs --baseurl=http://stahnma.fedorapeople.org/puppetlabs/6/i386 --includepkgs='puppet,facter'
26
+
27
+ %packages
28
+ @ core
29
+ ruby
30
+ ruby-devel
31
+ rubygems
32
+ kernel-devel
33
+ gcc
34
+ gcc-c++
35
+ bzip2
36
+ make
37
+ zlib-devel
38
+ openssl-devel
39
+ readline-devel
40
+ sqlite-devel
41
+ puppet
42
+ facter
43
+
44
+ -ipw2100-firmware
45
+ -ipw2200-firmware
46
+ -ivtv-firmware
47
+
48
+ %post
49
+ /usr/sbin/groupadd vagrant
50
+ /usr/sbin/useradd vagrant -g vagrant -G wheel
51
+ echo "vagrant"|passwd --stdin vagrant
52
+ echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
@@ -0,0 +1,30 @@
1
+ #http://chrisadams.me.uk/2010/05/10/setting-up-a-centos-base-box-for-development-and-testing-with-vagrant/
2
+
3
+ date > /etc/vagrant_box_build_time
4
+
5
+ yum -y erase wireless-tools gtk2 libX11 hicolor-icon-theme avahi freetype bitstream-vera-fonts
6
+ yum -y clean all
7
+
8
+ gem install --no-ri --no-rdoc chef
9
+
10
+ # Installing vagrant keys
11
+ mkdir /home/vagrant/.ssh
12
+ chmod 700 /home/vagrant/.ssh
13
+ cd /home/vagrant/.ssh
14
+ wget --no-check-certificate 'http://github.com/mitchellh/vagrant/raw/master/keys/vagrant.pub' -O authorized_keys
15
+ chown -R vagrant /home/vagrant/.ssh
16
+
17
+ # Installing the virtualbox guest additions
18
+ VBOX_VERSION=$(cat /home/vagrant/.vbox_version)
19
+ cd /tmp
20
+ wget http://download.virtualbox.org/virtualbox/$VBOX_VERSION/VBoxGuestAdditions_$VBOX_VERSION.iso
21
+ mount -o loop VBoxGuestAdditions_$VBOX_VERSION.iso /mnt
22
+ sh /mnt/VBoxLinuxAdditions.run
23
+ umount /mnt
24
+ rm VBoxGuestAdditions_$VBOX_VERSION.iso
25
+
26
+ sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers
27
+
28
+ dd if=/dev/zero of=/tmp/clean || rm /tmp/clean
29
+
30
+ exit