veewee 0.1.29 → 0.2.0

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.
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