veewee 0.3.1 → 0.3.2
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 +4 -0
- data/README.md +1 -1
- data/doc/definition.md +18 -0
- data/doc/kvm.md +28 -1
- data/doc/template.md +53 -2
- data/lib/veewee/command/fusion.rb +37 -3
- data/lib/veewee/command/vagrant/basebox.rb +2 -0
- data/lib/veewee/command/vagrant/winrm.rb +39 -0
- data/lib/veewee/command/vbox.rb +18 -0
- data/lib/veewee/definition.rb +13 -3
- data/lib/veewee/error.rb +3 -0
- data/lib/veewee/provider/core/box.rb +7 -0
- data/lib/veewee/provider/core/box/build.rb +34 -14
- data/lib/veewee/provider/core/box/copy.rb +17 -0
- data/lib/veewee/provider/core/box/exec.rb +31 -12
- data/lib/veewee/provider/core/box/floppy.rb +1 -0
- data/lib/veewee/provider/core/box/halt.rb +7 -3
- data/lib/veewee/provider/core/box/validate_tags.rb +8 -2
- data/lib/veewee/provider/core/box/wincp.rb +120 -0
- data/lib/veewee/provider/core/box/winrm.rb +59 -0
- data/lib/veewee/provider/core/helper/comm.rb +47 -0
- data/lib/veewee/provider/core/helper/web.rb +20 -9
- data/lib/veewee/provider/core/helper/winrm.rb +167 -0
- data/lib/veewee/provider/kvm/box/create.rb +59 -3
- data/lib/veewee/provider/kvm/provider.rb +6 -6
- data/lib/veewee/provider/parallels/box/helper/buildinfo.rb +1 -1
- data/lib/veewee/provider/virtualbox/box.rb +1 -0
- data/lib/veewee/provider/virtualbox/box/build.rb +4 -2
- data/lib/veewee/provider/virtualbox/box/create.rb +32 -12
- data/lib/veewee/provider/virtualbox/box/helper/buildinfo.rb +6 -3
- data/lib/veewee/provider/virtualbox/box/helper/create.rb +20 -5
- data/lib/veewee/provider/virtualbox/box/helper/winrm_options.rb +31 -0
- data/lib/veewee/provider/virtualbox/box/up.rb +33 -12
- data/lib/veewee/provider/virtualbox/box/winrm.rb +13 -0
- data/lib/veewee/provider/vmfusion/box.rb +2 -0
- data/lib/veewee/provider/vmfusion/box/add_share.rb +18 -0
- data/lib/veewee/provider/vmfusion/box/build.rb +3 -1
- data/lib/veewee/provider/vmfusion/box/create.rb +7 -2
- data/lib/veewee/provider/vmfusion/box/helper/buildinfo.rb +9 -6
- data/lib/veewee/provider/vmfusion/box/helper/ip.rb +1 -1
- data/lib/veewee/provider/vmfusion/box/helper/winrm_options.rb +21 -0
- data/lib/veewee/provider/vmfusion/box/template.rb +7 -3
- data/lib/veewee/provider/vmfusion/box/template.vmx.erb +6 -0
- data/lib/veewee/provider/vmfusion/box/winrm.rb +12 -0
- data/lib/veewee/provider/vmfusion/provider.rb +7 -1
- data/lib/veewee/version.rb +1 -1
- data/templates/CentOS-5.6-x86_64-netboot-packages/definition.rb +16 -0
- data/templates/CentOS-5.6-x86_64-netboot-packages/ks.cfg +47 -0
- data/templates/CentOS-5.6-x86_64-netboot-packages/postinstall.sh +61 -0
- data/templates/Debian-7.0-b3-amd64-netboot/base.sh +27 -0
- data/templates/Debian-7.0-b3-amd64-netboot/chef.sh +2 -0
- data/templates/Debian-7.0-b3-amd64-netboot/cleanup-virtualbox.sh +4 -0
- data/templates/Debian-7.0-b3-amd64-netboot/cleanup.sh +17 -0
- data/templates/Debian-7.0-b3-amd64-netboot/definition.rb +51 -0
- data/templates/Debian-7.0-b3-amd64-netboot/preseed.cfg +313 -0
- data/templates/Debian-7.0-b3-amd64-netboot/puppet.sh +2 -0
- data/templates/Debian-7.0-b3-amd64-netboot/ruby.sh +10 -0
- data/templates/Debian-7.0-b3-amd64-netboot/vagrant.sh +25 -0
- data/templates/Debian-7.0-b3-amd64-netboot/virtualbox.sh +13 -0
- data/templates/Debian-7.0-b3-amd64-netboot/zerodisk.sh +3 -0
- data/templates/Fedora-18-i386/definition.rb +17 -0
- data/templates/Fedora-18-i386/ks.cfg +75 -0
- data/templates/Fedora-18-i386/postinstall.sh +38 -0
- data/templates/Fedora-18-x86_64/definition.rb +17 -0
- data/templates/Fedora-18-x86_64/ks.cfg +75 -0
- data/templates/Fedora-18-x86_64/postinstall.sh +38 -0
- data/templates/OracleLinux-6.3-x86_64-DVD/base.sh +30 -0
- data/templates/OracleLinux-6.3-x86_64-DVD/chef.sh +3 -0
- data/templates/OracleLinux-6.3-x86_64-DVD/cleanup.sh +5 -0
- data/templates/OracleLinux-6.3-x86_64-DVD/definition.rb +40 -0
- data/templates/OracleLinux-6.3-x86_64-DVD/ks.cfg +42 -0
- data/templates/OracleLinux-6.3-x86_64-DVD/puppet.sh +12 -0
- data/templates/OracleLinux-6.3-x86_64-DVD/ruby.sh +3 -0
- data/templates/OracleLinux-6.3-x86_64-DVD/vagrant.sh +18 -0
- data/templates/OracleLinux-6.3-x86_64-DVD/virtualbox.sh +8 -0
- data/templates/OracleLinux-6.3-x86_64-DVD/zerodisk.sh +3 -0
- data/templates/funtoo-latest-x86_64/definition.rb +37 -0
- data/templates/funtoo-latest-x86_64/postinstall.sh +401 -0
- data/templates/openbsd50_amd64/definition.rb +3 -2
- data/templates/openbsd50_amd64/postinstall.sh +4 -4
- data/templates/openbsd50_i386/definition.rb +4 -4
- data/templates/openbsd52_amd64/README +28 -0
- data/templates/openbsd52_amd64/definition.rb +85 -0
- data/templates/openbsd52_amd64/postinstall.sh +81 -0
- data/templates/openbsd52_i386/README +28 -0
- data/templates/openbsd52_i386/definition.rb +85 -0
- data/templates/openbsd52_i386/postinstall.sh +81 -0
- data/templates/windows-2008R1-serverstandard-amd64/Autounattend.xml +6 -6
- data/templates/windows-2008R1-serverweb-amd64/install-winrm.bat +1 -1
- data/templates/windows-2008R2-serverstandard-amd64-winrm/Autounattend.xml +224 -0
- data/templates/windows-2008R2-serverstandard-amd64-winrm/README.md +87 -0
- data/templates/windows-2008R2-serverstandard-amd64-winrm/definition.rb +33 -0
- data/templates/windows-2008R2-serverstandard-amd64-winrm/install-chef.bat +2 -0
- data/templates/windows-2008R2-serverstandard-amd64-winrm/install-vbox.bat +4 -0
- data/templates/windows-2008R2-serverstandard-amd64-winrm/oracle-cert.cer +0 -0
- data/templates/windows-2008R2-serverstandard-amd64-winrm/postinstall.sh +74 -0
- data/templates/windows-7-enterprise-amd64-winrm/Autounattend.xml +227 -0
- data/templates/windows-7-enterprise-amd64-winrm/README.md +52 -0
- data/templates/windows-7-enterprise-amd64-winrm/definition.rb +27 -0
- data/templates/windows-7-enterprise-amd64-winrm/install-chef.bat +2 -0
- data/templates/windows-7-enterprise-amd64-winrm/install-fusion.bat +18 -0
- data/templates/windows-7-enterprise-amd64-winrm/install-puppet.bat +4 -0
- data/templates/windows-7-enterprise-amd64-winrm/install-vbox.bat +4 -0
- data/templates/windows-7-enterprise-amd64-winrm/oracle-cert.cer +0 -0
- data/templates/windows-7-enterprise-amd64-winrm/postinstall.bat +74 -0
- data/validation/veewee-windows.feature +34 -0
- data/veewee.gemspec +1 -1
- metadata +73 -7
|
@@ -31,6 +31,15 @@ module Veewee
|
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
+
def add_winrm_nat_mapping
|
|
35
|
+
|
|
36
|
+
unless definition.nil?
|
|
37
|
+
#Map SSH Ports
|
|
38
|
+
command="#{@vboxcmd} modifyvm '#{name}' --natpf1 'guestwinrm,tcp,,#{definition.winrm_host_port},,#{definition.winrm_guest_port}'"
|
|
39
|
+
shell_exec("#{command}")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
34
43
|
def add_shared_folder
|
|
35
44
|
command="#{@vboxcmd} sharedfolder add \"#{name}\" --name \"veewee-validation\" --hostpath \"#{File.expand_path(env.validation_dir)}\" --automount"
|
|
36
45
|
shell_exec("#{command}")
|
|
@@ -75,8 +84,7 @@ module Veewee
|
|
|
75
84
|
|
|
76
85
|
end
|
|
77
86
|
|
|
78
|
-
def
|
|
79
|
-
|
|
87
|
+
def attach_disk_common(storagectl, device_number)
|
|
80
88
|
place=get_vbox_home
|
|
81
89
|
location=name+"."+definition.disk_format.downcase
|
|
82
90
|
|
|
@@ -84,16 +92,23 @@ module Veewee
|
|
|
84
92
|
ui.info "Attaching disk: #{location}"
|
|
85
93
|
|
|
86
94
|
#command => "${vboxcmd} storageattach \"${vname}\" --storagectl \"SATA Controller\" --port 0 --device 0 --type hdd --medium \"${vname}.vdi\"",
|
|
87
|
-
command ="#{@vboxcmd} storageattach \"#{name}\" --storagectl \"
|
|
95
|
+
command ="#{@vboxcmd} storageattach \"#{name}\" --storagectl \"#{storagectl}\" --port 0 --device #{device_number} --type hdd --medium \"#{location}\""
|
|
88
96
|
shell_exec("#{command}")
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def attach_disk_ide(device_number=0)
|
|
100
|
+
self.attach_disk_common("IDE Controller", device_number)
|
|
101
|
+
end
|
|
89
102
|
|
|
103
|
+
def attach_disk_sata(device_number=0)
|
|
104
|
+
self.attach_disk_common("SATA Controller", device_number)
|
|
90
105
|
end
|
|
91
106
|
|
|
92
107
|
|
|
93
|
-
def attach_isofile
|
|
108
|
+
def attach_isofile(device_number=0)
|
|
94
109
|
full_iso_file=File.join(env.config.veewee.iso_dir,definition.iso_file)
|
|
95
110
|
ui.info "Mounting cdrom: #{full_iso_file}"
|
|
96
|
-
command ="#{@vboxcmd} storageattach \"#{name}\" --storagectl \"IDE Controller\" --type dvddrive --port 0 --device
|
|
111
|
+
command ="#{@vboxcmd} storageattach \"#{name}\" --storagectl \"IDE Controller\" --type dvddrive --port 0 --device #{device_number} --medium \"#{full_iso_file}\""
|
|
97
112
|
shell_exec("#{command}")
|
|
98
113
|
end
|
|
99
114
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Veewee
|
|
2
|
+
module Provider
|
|
3
|
+
module Virtualbox
|
|
4
|
+
module BoxCommand
|
|
5
|
+
|
|
6
|
+
def winrm_options
|
|
7
|
+
port=definition.winrm_host_port
|
|
8
|
+
if self.exists?
|
|
9
|
+
forward=self.forwarding("guestwinrm")
|
|
10
|
+
unless forward.nil?
|
|
11
|
+
port=forward[:host_port]
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
winrm_options={
|
|
16
|
+
:user => definition.winrm_user,
|
|
17
|
+
:pass => definition.winrm_password,
|
|
18
|
+
:port => port,
|
|
19
|
+
# :port => (port.to_i+1).to_s, # debug, by running charles with a reverse proxy
|
|
20
|
+
:basic_auth_only => true,
|
|
21
|
+
:timeout => definition.winrm_login_timeout.to_i,
|
|
22
|
+
:operation_timeout => 600 # ten minutes
|
|
23
|
+
}
|
|
24
|
+
return winrm_options
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -13,20 +13,41 @@ module Veewee
|
|
|
13
13
|
|
|
14
14
|
raise Veewee::Error,"Box is already running" if self.running?
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
16
|
+
if definition.winrm_user && definition.winrm_password # prefer winrm
|
|
17
|
+
# Before we start,correct the ssh/winrm port if needed
|
|
18
|
+
forward=self.forwarding("guestwinrm")
|
|
19
|
+
guessed_port=guess_free_port(definition.winrm_host_port.to_i,definition.winrm_host_port.to_i+40).to_s
|
|
20
|
+
definition.winrm_host_port=guessed_port.to_s
|
|
21
|
+
|
|
22
|
+
unless forward.nil?
|
|
23
|
+
if guessed_port!=forward[:guest_port]
|
|
24
|
+
# Remove the existing one
|
|
25
|
+
self.delete_forwarding("guestwinrm")
|
|
26
|
+
env.ui.warn "Changing winrm port on UP from #{forward[:guest_port]} to #{guessed_port}"
|
|
27
|
+
self.add_winrm_nat_mapping
|
|
28
|
+
end
|
|
29
|
+
else
|
|
30
|
+
self.add_winrm_nat_mapping
|
|
27
31
|
end
|
|
32
|
+
|
|
28
33
|
else
|
|
29
|
-
|
|
34
|
+
|
|
35
|
+
# Before we start,correct the ssh port if needed
|
|
36
|
+
forward=self.forwarding("guestssh")
|
|
37
|
+
guessed_port=guess_free_port(definition.ssh_host_port.to_i,definition.ssh_host_port.to_i+40).to_s
|
|
38
|
+
definition.ssh_host_port=guessed_port.to_s
|
|
39
|
+
|
|
40
|
+
unless forward.nil?
|
|
41
|
+
if guessed_port!=forward[:guest_port]
|
|
42
|
+
# Remove the existing one
|
|
43
|
+
self.delete_forwarding("guestssh")
|
|
44
|
+
env.ui.warn "Changing ssh port from #{forward[:guest_port]} to #{guessed_port}"
|
|
45
|
+
self.add_ssh_nat_mapping
|
|
46
|
+
end
|
|
47
|
+
else
|
|
48
|
+
self.add_ssh_nat_mapping
|
|
49
|
+
end
|
|
50
|
+
|
|
30
51
|
end
|
|
31
52
|
|
|
32
53
|
self.suppress_messages
|
|
@@ -5,6 +5,7 @@ require 'veewee/provider/core/helper/tcp'
|
|
|
5
5
|
require 'veewee/provider/vmfusion/box/helper/status'
|
|
6
6
|
require 'veewee/provider/vmfusion/box/helper/ip'
|
|
7
7
|
require 'veewee/provider/vmfusion/box/helper/ssh_options'
|
|
8
|
+
require 'veewee/provider/vmfusion/box/helper/winrm_options'
|
|
8
9
|
require 'veewee/provider/vmfusion/box/helper/vnc'
|
|
9
10
|
require 'veewee/provider/vmfusion/box/helper/console_type'
|
|
10
11
|
require 'veewee/provider/vmfusion/box/helper/buildinfo'
|
|
@@ -19,6 +20,7 @@ require 'veewee/provider/vmfusion/box/ssh'
|
|
|
19
20
|
require 'veewee/provider/vmfusion/box/template'
|
|
20
21
|
require 'veewee/provider/vmfusion/box/validate_vmfusion'
|
|
21
22
|
require 'veewee/provider/vmfusion/box/export_ova'
|
|
23
|
+
require 'veewee/provider/vmfusion/box/add_share'
|
|
22
24
|
|
|
23
25
|
|
|
24
26
|
module Veewee
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Veewee
|
|
2
|
+
module Provider
|
|
3
|
+
module Vmfusion
|
|
4
|
+
module BoxCommand
|
|
5
|
+
# This function 'adds a share' the box based on the definition
|
|
6
|
+
def add_share(share_name, share_path)
|
|
7
|
+
shell_exec("#{(vmrun_cmd).shellescape} -T fusion addSharedFolder #{vmx_file_path.shellescape} '#{share_name}' #{::File.expand_path(share_path).shellescape}")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def add_share_from_defn
|
|
11
|
+
definition.add_shares.each do |share_name, share_path|
|
|
12
|
+
add_share(share_name, share_path)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -43,16 +43,21 @@ module Veewee
|
|
|
43
43
|
fusion_definition=definition.dup
|
|
44
44
|
|
|
45
45
|
fusion_definition.os_type_id=fusion_os_type(definition.os_type_id)
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
FileUtils.mkdir_p(vm_path)
|
|
48
48
|
current_dir=FileUtils.pwd
|
|
49
49
|
FileUtils.chdir(vm_path)
|
|
50
|
+
|
|
51
|
+
unless definition.vmdk_file.nil?
|
|
52
|
+
src = "#{File.join(definition.path,definition.vmdk_file)}"
|
|
53
|
+
FileUtils.cp(src, vm_path)
|
|
54
|
+
end
|
|
55
|
+
|
|
50
56
|
aFile = File.new(vmx_file_path, "w")
|
|
51
57
|
aFile.write(vmx_template(fusion_definition))
|
|
52
58
|
aFile.close
|
|
53
59
|
FileUtils.chdir(current_dir)
|
|
54
60
|
end
|
|
55
|
-
|
|
56
61
|
end
|
|
57
62
|
end
|
|
58
63
|
end
|
|
@@ -40,12 +40,15 @@ module Veewee
|
|
|
40
40
|
# When we get here, ssh is available and no postinstall scripts have been executed yet
|
|
41
41
|
# So we begin by transferring the ISO file of the vmware tools
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
if not (definition.winrm_user && definition.winrm_password)
|
|
44
|
+
# with windows, we just use the mounted volume
|
|
45
|
+
env.logger.info "About to transfer vmware tools iso buildinfo to the box #{name} - #{ip_address} - #{ssh_options}"
|
|
46
|
+
iso_image=guest_iso_path
|
|
47
|
+
if File.exists?(iso_image)
|
|
48
|
+
self.copy_to_box(iso_image,File.basename(iso_image))
|
|
49
|
+
else
|
|
50
|
+
raise Veewee::Error, "We could not find the file #{iso_image}. In newer versions of Fusion, you might have to download the Guest Additions yourself. You can do this by first manually creating a vm and than 'installing the guest additions'"
|
|
51
|
+
end
|
|
49
52
|
end
|
|
50
53
|
end
|
|
51
54
|
|
|
@@ -25,7 +25,7 @@ module Veewee
|
|
|
25
25
|
raise ::Fission::Error,"VM #{name} does not exist" unless self.exists?
|
|
26
26
|
|
|
27
27
|
unless mac_address.nil?
|
|
28
|
-
lease = Fission::Lease.
|
|
28
|
+
lease = Fission::Lease.find_by_mac_address(mac_address).data
|
|
29
29
|
return lease.ip_address unless lease.nil?
|
|
30
30
|
return nil
|
|
31
31
|
else
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Veewee
|
|
2
|
+
module Provider
|
|
3
|
+
module Vmfusion
|
|
4
|
+
module BoxCommand
|
|
5
|
+
|
|
6
|
+
def winrm_options
|
|
7
|
+
winrm_options={
|
|
8
|
+
:user => definition.winrm_user,
|
|
9
|
+
:pass => definition.winrm_password,
|
|
10
|
+
:port => definition.winrm_host_port,
|
|
11
|
+
:basic_auth_only => true,
|
|
12
|
+
:timeout => definition.winrm_login_timeout.to_i,
|
|
13
|
+
:operation_timeout => 600 # ten minutes
|
|
14
|
+
}
|
|
15
|
+
return winrm_options
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -17,14 +17,16 @@ module Veewee
|
|
|
17
17
|
unless definition.floppy_files.nil?
|
|
18
18
|
floppy_path=File.join(definition.path,'virtualfloppy.img')
|
|
19
19
|
end
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
# Depending on the fusion version, we need to update the virtualhw version
|
|
22
22
|
if @provider.fusion_version.start_with?('5.')
|
|
23
23
|
virtualhw_version = 9
|
|
24
24
|
else
|
|
25
25
|
virtualhw_version = 7
|
|
26
26
|
end
|
|
27
|
-
|
|
27
|
+
|
|
28
|
+
puts definition.vmdk_file
|
|
29
|
+
vmdk_file = File.basename(definition.vmdk_file) unless definition.vmdk_file.nil?
|
|
28
30
|
# Setup the variables for in the erb template
|
|
29
31
|
data = {
|
|
30
32
|
:cpu_count => definition.cpu_count, :memory_size => definition.memory_size,
|
|
@@ -35,7 +37,9 @@ module Veewee
|
|
|
35
37
|
:mac_addres => "auto generated",
|
|
36
38
|
:iso_file => "#{File.join(env.config.veewee.iso_dir,definition.iso_file)}",
|
|
37
39
|
:box_name => name,
|
|
38
|
-
:vnc_port => guess_vnc_port
|
|
40
|
+
:vnc_port => guess_vnc_port,
|
|
41
|
+
:fusion_version => @provider.fusion_version,
|
|
42
|
+
:vmdk_file => vmdk_file
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
vars = ErbBinding.new(data)
|
|
@@ -82,3 +82,9 @@ ethernet0.displayName = "Ethernet"
|
|
|
82
82
|
sound.startConnected = "FALSE"
|
|
83
83
|
RemoteDisplay.vnc.enabled = "TRUE"
|
|
84
84
|
RemoteDisplay.vnc.port = "<%= vnc_port %>"
|
|
85
|
+
<% if fusion_version.start_with?('5.') %>bios.bootOrder = "hdd,CDROM"<% end %>
|
|
86
|
+
<% unless vmdk_file.nil? %>
|
|
87
|
+
scsi0:2.present = "TRUE"
|
|
88
|
+
scsi0:2.fileName = "<%= vmdk_file %>"
|
|
89
|
+
scsi0:2.redo = ""
|
|
90
|
+
<% end %>
|
|
@@ -27,7 +27,13 @@ module Veewee
|
|
|
27
27
|
env.logger.info("Checking version by querying the system_profiler")
|
|
28
28
|
env.logger.debug(shell_results.stdout)
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
if (shell_results.stdout == "")
|
|
31
|
+
ui.warn "Could not detect the exact version of vmware. assuming 5.1"
|
|
32
|
+
version = "5.1"
|
|
33
|
+
else
|
|
34
|
+
version = shell_results.stdout.split(/VMware/)[1].split(/\n/)[2].split(/:/)[1].strip
|
|
35
|
+
end
|
|
36
|
+
|
|
31
37
|
return version
|
|
32
38
|
end
|
|
33
39
|
|
data/lib/veewee/version.rb
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Veewee::Definition.declare({
|
|
2
|
+
:cpu_count => '1', :memory_size=> '384',
|
|
3
|
+
:disk_size => '10140', :disk_format => 'VDI', :hostiocache => 'off', :ioapic => 'on', :pae => 'on',
|
|
4
|
+
:os_type_id => 'RedHat_64',
|
|
5
|
+
:iso_file => "CentOS-5.6-x86_64-netinstall.iso",
|
|
6
|
+
:iso_src => "http://vault.centos.org/5.6/isos/x86_64/CentOS-5.6-x86_64-netinstall.iso",
|
|
7
|
+
:iso_md5 => "02cf3a5e32aaa5eed27af775ad292beb",
|
|
8
|
+
:iso_download_timeout => 1000,
|
|
9
|
+
:boot_wait => "10", :boot_cmd_sequence => [ 'linux text ks=http://%IP%:%PORT%/ks.cfg<Enter>' ],
|
|
10
|
+
:kickstart_port => "7122", :kickstart_timeout => 10000, :kickstart_file => "ks.cfg",
|
|
11
|
+
:ssh_login_timeout => "10000", :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,47 @@
|
|
|
1
|
+
# Kickstart file automatically generated by anaconda.
|
|
2
|
+
|
|
3
|
+
install
|
|
4
|
+
url --url=http://vault.centos.org/5.6/os/x86_64
|
|
5
|
+
lang en_US.UTF-8
|
|
6
|
+
langsupport --default=en_US.UTF-8 en_US.UTF-8
|
|
7
|
+
keyboard us
|
|
8
|
+
xconfig --card "VMWare" --videoram 16384 --hsync 31.5-37.9 --vsync 50-70 --resolution 800x600 --depth 16
|
|
9
|
+
network --device eth0 --bootproto dhcp
|
|
10
|
+
rootpw --iscrypted $1$vSG8FjAu$ekQ0grf16hS4G93HTPcco/
|
|
11
|
+
firewall --enabled --trust eth0 --ssh
|
|
12
|
+
selinux --enforcing
|
|
13
|
+
authconfig --enableshadow --enablemd5
|
|
14
|
+
timezone Europe/London
|
|
15
|
+
bootloader --location=mbr
|
|
16
|
+
# The following is the partition information you requested
|
|
17
|
+
# Note that any partitions you deleted are not expressed
|
|
18
|
+
# here so unless you clear all partitions first, this is
|
|
19
|
+
# not guaranteed to work
|
|
20
|
+
clearpart --all --drives=sda --initlabel
|
|
21
|
+
part /boot --fstype ext3 --size=100 --ondisk=sda
|
|
22
|
+
part pv.2 --size=0 --grow --ondisk=sda
|
|
23
|
+
volgroup VolGroup00 --pesize=32768 pv.2
|
|
24
|
+
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=528 --grow --maxsize=1056
|
|
25
|
+
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
|
|
26
|
+
reboot
|
|
27
|
+
|
|
28
|
+
%packages
|
|
29
|
+
#@ admin-tools
|
|
30
|
+
#@ text-internet
|
|
31
|
+
#@ dialup
|
|
32
|
+
#@ smb-server
|
|
33
|
+
#@ web-server
|
|
34
|
+
#@ printing
|
|
35
|
+
#@ server-cfg
|
|
36
|
+
@ core
|
|
37
|
+
grub
|
|
38
|
+
e2fsprogs
|
|
39
|
+
lvm2
|
|
40
|
+
kernel
|
|
41
|
+
kernel-devel
|
|
42
|
+
|
|
43
|
+
%post
|
|
44
|
+
/usr/sbin/groupadd vagrant
|
|
45
|
+
/usr/sbin/useradd vagrant -g vagrant -G wheel
|
|
46
|
+
echo "vagrant"|passwd --stdin vagrant
|
|
47
|
+
echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# based on http://chrisadams.me.uk/2010/05/10/setting-up-a-centos-base-box-for-development-and-testing-with-vagrant/
|
|
2
|
+
# but with all the source building moved to packages & puppet focussed
|
|
3
|
+
|
|
4
|
+
date > /etc/vagrant_box_build_time
|
|
5
|
+
|
|
6
|
+
fail()
|
|
7
|
+
{
|
|
8
|
+
echo "FATAL: $*"
|
|
9
|
+
exit 1
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
#kernel source is needed for vbox additions
|
|
13
|
+
yum -y install gcc bzip2 make
|
|
14
|
+
# kernel-devel-`uname -r` is now installed in the KS to ensure we get matching kernel & kernel-devel on the first boot
|
|
15
|
+
#yum -y update
|
|
16
|
+
#yum -y upgrade
|
|
17
|
+
|
|
18
|
+
yum -y install gcc-c++ zlib-devel openssl-devel readline-devel sqlite3-devel
|
|
19
|
+
yum -y erase gtk2 libX11 hicolor-icon-theme avahi freetype bitstream-vera-fonts
|
|
20
|
+
|
|
21
|
+
# puppet
|
|
22
|
+
rpm -ivh http://yum.puppetlabs.com/el/5/products/i386/puppetlabs-release-5-6.noarch.rpm
|
|
23
|
+
yum -y install puppet-2.6.10
|
|
24
|
+
|
|
25
|
+
# chef, via gem
|
|
26
|
+
#yum install ruby ruby-devel ruby-ri ruby-rdoc ruby-shadow gcc gcc-c++ automake autoconf make curl dmidecode
|
|
27
|
+
#gem install chef --no-ri --no-rdoc
|
|
28
|
+
|
|
29
|
+
# chef, via rpms (I'm not sure how sane this is, it installs lots of rubygem-xxx packages)
|
|
30
|
+
rpm -Uvh http://rbel.co/rbel5
|
|
31
|
+
yum -y install rubygem-chef
|
|
32
|
+
|
|
33
|
+
# clean up yum meta data cache
|
|
34
|
+
yum -y clean all
|
|
35
|
+
|
|
36
|
+
#Installing vagrant keys
|
|
37
|
+
mkdir /home/vagrant/.ssh
|
|
38
|
+
chmod 700 /home/vagrant/.ssh
|
|
39
|
+
cd /home/vagrant/.ssh
|
|
40
|
+
wget --no-check-certificate 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub' -O authorized_keys
|
|
41
|
+
chown -R vagrant /home/vagrant/.ssh
|
|
42
|
+
|
|
43
|
+
#Installing the virtualbox guest additions
|
|
44
|
+
VBOX_VERSION=$(cat /home/vagrant/.vbox_version)
|
|
45
|
+
cd /tmp
|
|
46
|
+
wget http://download.virtualbox.org/virtualbox/$VBOX_VERSION/VBoxGuestAdditions_$VBOX_VERSION.iso
|
|
47
|
+
mount -o loop VBoxGuestAdditions_$VBOX_VERSION.iso /mnt
|
|
48
|
+
sh /mnt/VBoxLinuxAdditions.run
|
|
49
|
+
umount /mnt
|
|
50
|
+
|
|
51
|
+
rm VBoxGuestAdditions_$VBOX_VERSION.iso
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers
|
|
55
|
+
sed -i "s/^\(.*env_keep = \"\)/\1PATH /" /etc/sudoers
|
|
56
|
+
|
|
57
|
+
# Zero out the free space to save space in the final image:
|
|
58
|
+
dd if=/dev/zero of=/EMPTY bs=1M
|
|
59
|
+
rm -f /EMPTY
|
|
60
|
+
|
|
61
|
+
exit
|