chef-provisioning-vbox 0.1.8 → 0.1.9
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc31b536b3f6fa9040b27838e6e17cdffeb188e2
|
4
|
+
data.tar.gz: 00368baf6e49da437c210bf942c50e2e1965026c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8cb7280dcf8138a3291df8f29df883421be7050525a88260c27877a0e7a178b2f2f5d8ae3cc7c63310a330f5276bf50b8480fb78180f18fba6baaf634a3347f8
|
7
|
+
data.tar.gz: 723cce59cad2aecd671d897f90b25be2fbae65eda8798cbb3c7a63e9768ec55d8a1584a2918362d8d39d1775f4690ae51fe0e71dfb18bd8aa63525ef9137e962
|
@@ -3,127 +3,126 @@ require 'chef/provisioning/vbox_driver/version'
|
|
3
3
|
|
4
4
|
class Chef
|
5
5
|
module Provisioning
|
6
|
-
|
7
|
-
|
6
|
+
module VboxDriver
|
7
|
+
class Driver < Chef::Provisioning::Driver
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
# generated by script, required by API.
|
10
|
+
def self.canonicalize_url(driver_url, config)
|
11
|
+
[ "vbox:#{driver_url} [vboxmanage]", config ]
|
12
|
+
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
# generated by script, required by API.
|
15
|
+
def self.from_url(driver_url, config)
|
16
|
+
Driver.new(driver_url, config)
|
17
|
+
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
out = %x(vboxmanage list vms |grep "#{server_id}" |awk '{print $2}'|sed 's/\{//g'|sed 's/\}//g')
|
20
|
+
machine_spec.reference['server_id'] = out
|
21
|
+
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
#create vm
|
24
|
+
def vbox.create_server(name, machine_options)
|
25
|
+
machine_spec.reference['server_id'] = %x(/usr/local/bin/createvm-q.sh "#{name}" 10)
|
26
|
+
end
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
#start vm
|
29
|
+
def vbox.power_on(server_id)
|
30
|
+
%x(vboxmanage startvm #{server_id} --type headless)
|
31
|
+
end
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
#ready the vm
|
34
|
+
def vbox.wait_for_machine_to_have_status(server_id)
|
35
|
+
ready = %x(ready.sh #{server_id})
|
36
|
+
end
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
#get hostname
|
39
|
+
def vbox.get_hostname(server_id)
|
40
|
+
hostname = %x(vboxmanage list vms |grep "#{server_id}|awk '{print $1}'|sed 's/"//g')
|
41
|
+
return hostname
|
42
|
+
end
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
def vbox.power_off(server_id)
|
45
|
+
%x(vboxmanage controlvm #{server_id} poweroff)
|
46
|
+
end
|
47
47
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
48
|
+
#destroy host
|
49
|
+
def vbox.destroy_machine(server_id)
|
50
|
+
%x(vboxmanage unregistervm #{server_id} --delete)
|
51
|
+
end
|
52
52
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
end
|
53
|
+
def allocate_machine(action_handler, machine_spec, machine_options)
|
54
|
+
if machine_spec.reference
|
55
|
+
if !vbox.server_exists?(machine_spec.reference['server_id'])
|
56
|
+
action_handler.perform_action "Machine #{machine_spec.reference['server_id']} does not exist. Recreating ..." do
|
57
|
+
machine_spec.reference = nil
|
59
58
|
end
|
60
59
|
end
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
60
|
+
end
|
61
|
+
if !machine_spec.reference
|
62
|
+
action_handler.perform_action "Creating server #{machine_spec.name} with options #{machine_options}" do
|
63
|
+
private_key = get_private_key('bootstrapkey')
|
64
|
+
server_id = vbox.create_server(machine_spec.name, machine_options)
|
65
|
+
machine_spec.reference = {
|
66
|
+
'driver_version' => Vbox::VERSION,
|
67
|
+
'server_id' => server_id
|
68
|
+
}
|
70
69
|
end
|
71
70
|
end
|
71
|
+
end
|
72
72
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
end
|
73
|
+
def ready_machine(action_handler, machine_spec, machine_options)
|
74
|
+
server_id = machine_spec.reference['server_id']
|
75
|
+
if vbox.machine_status(server_id) == 'stopped'
|
76
|
+
action_handler.perform_action "Powering up machine #{server_id}" do
|
77
|
+
vbox.power_on(server_id)
|
79
78
|
end
|
79
|
+
end
|
80
80
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
end
|
85
|
-
end
|
86
|
-
# Return the Machine object
|
87
|
-
machine_for(machine_spec, machine_options)
|
88
|
-
end
|
89
|
-
|
90
|
-
def machine_for(machine_spec, machine_options)
|
91
|
-
server_id = machine_spec.reference['server_id']
|
92
|
-
hostname = vbox.get_hostname()
|
93
|
-
username = 'root'
|
94
|
-
ssh_options = {
|
95
|
-
:auth_methods => ['publickey'],
|
96
|
-
:keys => [ get_key('bootstrapkey') ],
|
97
|
-
}
|
98
|
-
transport = Chef::Provisioning::Transport::SSH.new(vbox.get_hostname(server_id), username, ssh_options, {}, config)
|
99
|
-
convergence_strategy = Chef::Provisioning::ConvergenceStrategy::InstallCached.new(machine_options[:convergence_options], {})
|
100
|
-
Chef::Provisioning::Machine::UnixMachine.new(machine_spec, transport, convergence_strategy)
|
81
|
+
if vbox.machine_status(server_id) != 'ready'
|
82
|
+
action_handler.perform_action "wait for machine #{server_id}" do
|
83
|
+
vbox.wait_for_machine_to_have_status(server_id, 'ready')
|
101
84
|
end
|
85
|
+
end
|
86
|
+
# Return the Machine object
|
87
|
+
machine_for(machine_spec, machine_options)
|
88
|
+
end
|
102
89
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
90
|
+
def machine_for(machine_spec, machine_options)
|
91
|
+
server_id = machine_spec.reference['server_id']
|
92
|
+
hostname = vbox.get_hostname()
|
93
|
+
username = 'root'
|
94
|
+
ssh_options = {
|
95
|
+
:auth_methods => ['publickey'],
|
96
|
+
:keys => [ get_key('bootstrapkey') ],
|
97
|
+
}
|
98
|
+
transport = Chef::Provisioning::Transport::SSH.new(vbox.get_hostname(server_id), username, ssh_options, {}, config)
|
99
|
+
convergence_strategy = Chef::Provisioning::ConvergenceStrategy::InstallCached.new(machine_options[:convergence_options], {})
|
100
|
+
Chef::Provisioning::Machine::UnixMachine.new(machine_spec, transport, convergence_strategy)
|
112
101
|
end
|
113
102
|
|
114
|
-
def
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
103
|
+
def destroy_machine(action_handler, machine_spec, machine_options)
|
104
|
+
if machine_spec.reference
|
105
|
+
server_id = machine_spec.reference['server_id']
|
106
|
+
action_handler.perform_action "Destroy machine #{server_id}" do
|
107
|
+
vbox.power_off(server_id)
|
108
|
+
vbox.destroy_machine(server_id)
|
109
|
+
machine_spec.reference = nil
|
120
110
|
end
|
121
111
|
end
|
112
|
+
end
|
122
113
|
|
123
|
-
|
124
|
-
|
114
|
+
def stop_machine(action_handler, machine_spec, machine_options)
|
115
|
+
if machine_spec.reference
|
116
|
+
server_id = machine_spec.reference['server_id']
|
117
|
+
action_handler.perform_action "Power off machine #{server_id}" do
|
118
|
+
vbox.power_off(server_id)
|
119
|
+
end
|
125
120
|
end
|
126
121
|
end
|
122
|
+
|
123
|
+
def connect_to_machine(machine_spec, machine_options)
|
124
|
+
machine_for(machine_spec, machine_options)
|
125
|
+
end
|
127
126
|
end
|
128
127
|
end
|
129
128
|
end
|