abiquo-chef-agent 1.0.11 → 2.0.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.
- data/README.md +1 -1
- data/Rakefile +2 -2
- data/bin/abiquo-chef-run +14 -23
- data/lib/abiquo-chef-agent.rb +26 -20
- data/spec/data/bootstrap.xml +1 -1
- data/spec/data/bootstrap_empty_cert.xml +1 -0
- data/spec/data/bootstrap_empty_chef.xml +1 -0
- data/spec/data/bootstrap_empty_node.xml +1 -0
- data/spec/data/bootstrap_empty_runlist.xml +1 -1
- data/spec/data/bootstrap_empty_runlist_no_attributes.xml +1 -0
- data/spec/data/bootstrap_empty_server_url.xml +1 -0
- data/spec/data/bootstrap_empty_validation.xml +1 -0
- data/spec/data/bootstrap_missing_cert.xml +1 -0
- data/spec/data/bootstrap_missing_chef.xml +1 -0
- data/spec/data/bootstrap_missing_node.xml +1 -0
- data/spec/data/bootstrap_missing_server_url.xml +1 -0
- data/spec/data/bootstrap_missing_validation.xml +1 -0
- data/spec/data/bootstrap_no_attributes.xml +1 -0
- data/spec/data/dhclient/dhclient.leases +2 -0
- data/spec/unit/bootstrap_config_parser_spec.rb +125 -42
- metadata +160 -147
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -12,8 +12,8 @@ Jeweler::Tasks.new do |gem|
|
|
12
12
|
gem.license = "MIT"
|
13
13
|
gem.summary = %Q{Abiquo Chef Agent}
|
14
14
|
gem.description = %Q{Abiquo Chef Agent}
|
15
|
-
gem.email = "
|
16
|
-
gem.authors = ["Salvador Girones", "Sergio Rubio"]
|
15
|
+
gem.email = "ruby-gems@abiquo.com"
|
16
|
+
gem.authors = ["Salvador Girones", "Sergio Rubio", "Serafin Sedano"]
|
17
17
|
gem.add_runtime_dependency 'run-as-root'
|
18
18
|
gem.add_runtime_dependency 'chef'
|
19
19
|
gem.add_runtime_dependency 'daemons'
|
data/bin/abiquo-chef-run
CHANGED
@@ -77,7 +77,7 @@ else
|
|
77
77
|
rescue Exception => e
|
78
78
|
log "Error requesting node info from API", :error
|
79
79
|
log e.message, :error
|
80
|
-
log e.backtrace.join("\n ")
|
80
|
+
log e.backtrace.join("\n ")
|
81
81
|
exit 1
|
82
82
|
end
|
83
83
|
#
|
@@ -97,7 +97,7 @@ else
|
|
97
97
|
rescue Exception => e
|
98
98
|
log "Error parsing XML bootstrap file", :error
|
99
99
|
log e.message, :error
|
100
|
-
log e.backtrace.join("\n ")
|
100
|
+
log e.backtrace.join("\n ")
|
101
101
|
exit 1
|
102
102
|
end
|
103
103
|
|
@@ -107,18 +107,18 @@ else
|
|
107
107
|
File.open(Abiquo::Chef::Config.validation_cert, 'w') do |f|
|
108
108
|
f.puts bootstrap_config.validation_cert
|
109
109
|
end
|
110
|
+
log "Validation cert written"
|
110
111
|
|
111
112
|
#
|
112
113
|
# Get required node info and write chef-client config file
|
113
114
|
#
|
114
115
|
validation_client_name = bootstrap_config.validation_client_name
|
115
116
|
chef_server_url = bootstrap_config.chef_server_url
|
116
|
-
|
117
|
-
if
|
118
|
-
log "
|
119
|
-
recipes = []
|
117
|
+
node_config = bootstrap_config.node_config
|
118
|
+
if node_config['run_list']
|
119
|
+
log "Recipes found #{node_config.inspect}"
|
120
120
|
else
|
121
|
-
log "
|
121
|
+
log "No recipes selected", :warning
|
122
122
|
end
|
123
123
|
File.open('/etc/chef/client.rb', 'w') do |f|
|
124
124
|
f.puts "log_level :info"
|
@@ -130,20 +130,11 @@ else
|
|
130
130
|
#
|
131
131
|
# Write first-boot.json attributes
|
132
132
|
#
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
recipes_json << ']'
|
137
|
-
File.open('/etc/chef/first-boot.json', 'w') do |f|
|
138
|
-
f.puts "{"
|
139
|
-
f.puts recipes_json
|
140
|
-
f.puts "}"
|
141
|
-
end
|
142
|
-
else
|
143
|
-
File.open('/etc/chef/first-boot.json', 'w') do |f|
|
144
|
-
f.puts "{}"
|
145
|
-
end
|
133
|
+
File.open('/etc/chef/first-boot.json', 'w') do |f|
|
134
|
+
node_config ||= {}
|
135
|
+
f.puts node_config.to_json
|
146
136
|
end
|
137
|
+
log "Written '#{node_config.to_json}' to /etc/chef/first-boot.json file"
|
147
138
|
|
148
139
|
|
149
140
|
#
|
@@ -153,7 +144,7 @@ else
|
|
153
144
|
|
154
145
|
log "Setting hostname"
|
155
146
|
output = `hostname #{node_name} 2>&1`
|
156
|
-
log output, :
|
147
|
+
log output, :info
|
157
148
|
|
158
149
|
net_config_file = '/etc/sysconfig/network'
|
159
150
|
if File.exists? net_config_file
|
@@ -192,7 +183,7 @@ else
|
|
192
183
|
end
|
193
184
|
if $? != 0
|
194
185
|
log "chef-client run failed", :error
|
195
|
-
log output, :
|
186
|
+
log output, :info
|
196
187
|
else
|
197
188
|
log "Running chef-client in daemon mode"
|
198
189
|
# Run the chef-client if not already running
|
@@ -202,7 +193,7 @@ else
|
|
202
193
|
output = `#{cmd}`
|
203
194
|
if $? != 0
|
204
195
|
log "Running chef-client in daemon mode failed.", :error
|
205
|
-
log output
|
196
|
+
log output
|
206
197
|
else
|
207
198
|
log "Success."
|
208
199
|
end
|
data/lib/abiquo-chef-agent.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'xmlsimple'
|
2
|
+
require 'json'
|
2
3
|
|
3
4
|
module Abiquo
|
4
5
|
module Chef
|
5
6
|
|
6
|
-
VERSION="
|
7
|
+
VERSION="2.0.0"
|
7
8
|
|
8
9
|
class Config
|
9
10
|
def self.chef_config_dir
|
@@ -34,7 +35,7 @@ module Abiquo
|
|
34
35
|
|
35
36
|
class BootstrapConfigParser
|
36
37
|
|
37
|
-
attr_reader :
|
38
|
+
attr_reader :node_config, :node_name, :validation_client_name
|
38
39
|
attr_reader :chef_server_url, :validation_cert
|
39
40
|
|
40
41
|
#
|
@@ -44,38 +45,42 @@ module Abiquo
|
|
44
45
|
#
|
45
46
|
def initialize(xml)
|
46
47
|
@raw_xml = xml
|
47
|
-
#
|
48
48
|
# HACK, FIXME
|
49
|
-
#
|
50
49
|
@hash = XmlSimple.xml_in xml.gsub("
","\n")
|
51
50
|
parse
|
52
51
|
end
|
53
52
|
|
54
53
|
def parse
|
54
|
+
validate
|
55
55
|
@node_name = @hash['node'].first
|
56
|
-
|
57
|
-
raise Exception.new("Invalid bootstrap XML. Missing <node> info.")
|
58
|
-
end
|
56
|
+
raise Exception.new("Invalid bootstrap XML. Missing <node> info.") unless @node_name.is_a? String and not @node_name.strip.chomp.empty?
|
59
57
|
|
60
58
|
@node_info = @hash['chef'].first
|
61
|
-
if not @node_info
|
62
|
-
raise Exception.new("Invalid bootstrap XML. Missing <chef> info.")
|
63
|
-
end
|
64
59
|
|
65
60
|
@validation_client_name = @node_info['validation-client-name'].first
|
66
|
-
|
67
|
-
raise Exception.new("Invalid bootstrap XML. Missing <validation-client-name> info.")
|
68
|
-
end
|
61
|
+
raise Exception.new("Invalid bootstrap XML. Missing <validation-client-name> info.") unless @validation_client_name.is_a? String and not @validation_client_name.strip.chomp.empty?
|
69
62
|
|
70
63
|
@validation_cert = @node_info['validation-cert'].first
|
71
|
-
|
72
|
-
|
73
|
-
end
|
64
|
+
raise Exception.new("Invalid bootstrap XML. Missing <validation-cert> info.") unless @validation_cert.is_a? String and not @validation_cert.strip.chomp.empty?
|
65
|
+
|
74
66
|
@chef_server_url = @node_info['chef-server-url'].first
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
67
|
+
raise Exception.new("Invalid bootstrap XML. Missing <chef-server-url> info.") unless @chef_server_url.is_a? String and not @chef_server_url.strip.chomp.empty?
|
68
|
+
|
69
|
+
runlist = @node_info['runlist'].first['element']
|
70
|
+
attributes = @node_info['attributes'].first unless @node_info['attributes'].nil?
|
71
|
+
@node_config = JSON.parse(attributes || '{}')
|
72
|
+
@node_config.merge!(JSON.parse("{\"run_list\" : [#{runlist.map{ |r| "\"#{r}\""}.join(',')}]}")) if runlist
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def validate
|
78
|
+
raise Exception.new "Invalid bootstrap XML. Missing <node> element." unless @hash.has_key? 'node'
|
79
|
+
raise Exception.new "Invalid bootstrap XML. Missing <chef> element." unless @hash.has_key? 'chef'
|
80
|
+
raise Exception.new("Invalid bootstrap XML. Missing <chef> info.") if @hash['chef'].empty? or @hash['chef'][0].empty?
|
81
|
+
raise Exception.new "Invalid bootstrap XML. Missing <validation-cert> element." unless @hash['chef'].first.has_key? 'validation-cert'
|
82
|
+
raise Exception.new "Invalid bootstrap XML. Missing <validation-client-name> element." unless @hash['chef'].first.has_key? 'validation-client-name'
|
83
|
+
raise Exception.new "Invalid bootstrap XML. Missing <chef-server-url> element." unless @hash['chef'].first.has_key? 'chef-server-url'
|
79
84
|
end
|
80
85
|
|
81
86
|
end
|
@@ -142,3 +147,4 @@ module Abiquo
|
|
142
147
|
end
|
143
148
|
end
|
144
149
|
end
|
150
|
+
|
data/spec/data/bootstrap.xml
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk
lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW
wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN
6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al
NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS
HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM
oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D
kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG
/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g
cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy
3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA
Uzu+
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk
lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW
wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN
6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al
NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS
HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM
oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D
kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG
/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g
cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy
3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA
Uzu+cwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM
/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX
efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0
f4XnfOAOTzeJ75C0/bRnGxE8Fb4h9+CvBbTzcm+m9csAQcriY/cyqiidKulrDgeQ
UKlRGwtrgWHQEPRLmdj3e/bPNOt6o+CJy2/pLfbp/boG7xdQus0U4Kx7+rmPd7Lv
uXcSeNupODhC44uH3HE16LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+
edWoFEFhFWl5Yau41g0wvdNwPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS
NtKEbtaQPP1LybSQjrnuxw8LyFT8fvYxHxMK59/9V8Ju7fgxoJ08mK6izEj6vUP8
suJOltWLvDYmHHLgDT4gmNECgYBzVcmdwaoPZX98DLd5waCPFACYrJ9nuR8bdCpZ
1OtJL81FQLaFedxOD7bGTrG+dFAFVyCiWGEm3smWOofzYSae/mM5Ni5K5LD1oF+b
aYGkNYxJeNKpG/Oq7zXlkP9XIlz5wFu9983wLoxxiYQk27u+UbJ/gUzvOjv43I1cX
4pXJhwKBgEjSju4IYF8KRKCiQ+s/95xIUqwITt9nEDssaI4ms0ZcRROq9cAhxX4H
lOn8Ruyy7mGJ0LEpyuFVsSvb7sHqRdy2eyyXO/amwSquOZ9+BjGOb2wjoVHDCYm+
1obXuj+YB36cHqDTbWOM8yCkBcdHCL0eczvComocAiKWfJX9ZNWM
-----END RSA PRIVATE KEY-----</validation-cert><runlist><element>role[web-server]</element><element>recipe[apache2]</element></runlist><attributes>{
 "boundary": {
 "api": {
 "org_id": "00000000000000000",
 "key": "0000000000000000000"
 }
 },
 "newrelic": {
 "server_monitoring": {
 "license": "000000000000000000000000"
 },
 "application_monitoring": {
 "license": "00000000000000000000"
 }
 }
}</attributes></chef></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><validation-cert /><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><runlist/><attributes>{
 "boundary": {
 "api": {
 "org_id": "0000000000000000",
 "key": "0000000000000000000"
 }
 },
 "newrelic": {
 "server_monitoring": {
 "license": "000000000000000000"
 },
 "application_monitoring": {
 "license": "000000000000000000000"
 }
 }
}</attributes></chef></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef /></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node></node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk
lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW
wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN
6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al
NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS
HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM
oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D
kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG
/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g
cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy
3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA
Uzu+IcwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM
/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX
efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0
f4XnfOAOTzeJ75C0/bRnGxE8Fb4h9+CvBbTzcm+m9csAQcriY/cyqiidKulrDgeQ
UKlRGwtrgWHQEPRLmdj3e/bPNOt6o+CJy2/pLfbp/boG7xdQus0U4Kx7+rmPd7Lv
uXcSeNupODhC44uH3HE6LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+
edWoFEFhFWl5Yau41g0wvdNwPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS
NtKEbtaQPP1LybSQjrnuxw8LyFT8fvYxHxMK59/9V8Ju7fgxoJ08mK6izEj6vUP8
suJOltWLvDYmHHLgDT4gmNECgYBzVcmdwaoPZX98DLd5waCPFACYrJ9nuR8bdCpZ
1OtJL81FQLaFedxOD7bGTrG+dFAFVyCiWGEm3smWOofzYSae/mM5Ni5K5LD1oF+b
aYGkNYxJeNKpG/Oq7zXlkP9XIlz5wFu9983wLoxxiYQk27u+UbJ/gUzvOjv43I1cX
4pXJhwKBgEjSju4IYF8KRKCiQ+s/95xIUqwITt9nEDssaI4ms0ZcRROq9cAhxX4H
lOn8Ruyy7mGJ0LEpyuFVsSvb7sHqRdy2eyyXO/amwSquOZ9+BjGOb2wjoVHDCYm+
1obXuj+YB36cHqDTbWOM8yCkBcdHCL0eczvComocAiKWfJX9ZNWM
-----END RSA PRIVATE KEY-----</validation-cert><runlist/><attributes>{
 "boundary": {
 "api": {
 "org_id": "00000000000000000",
 "key": "000000000000000"
 }
 },
 "newrelic": {
 "server_monitoring": {
 "license": "0000000000000000000"
 },
 "application_monitoring": {
 "license": "00000000000000000000"
 }
 }
}</attributes></chef></bootstrap>
|
@@ -1 +1 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk
lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW
wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN
6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al
NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS
HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM
oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D
kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG
/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g
cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy
3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA
Uzu+IcwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM
/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX
efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0
f4XnfOAOTzeJ75C0/
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk
lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW
wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN
6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al
NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS
HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM
oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D
kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG
/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g
cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy
3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA
Uzu+IcwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM
/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX
efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0
f4XnfOAOTzeJ75C0/bRnE8Fb4h9+CvBbTzcm+m9csAQcriY/cyqiidKulrDgeQ
UKlRGwtrgWHQEPRLmdj3e/bPNOt6o+CJy2/pLfbp/boG7xdQus0U4Kx7+rmPd7Lv
uXcSeNupODhC44uH3HE16LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+
edWoFEFhFWl5Yau41g0wvdNwPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS
NtKEbtaQPP1LybSQjrnuxw8LyFT8fvYxHxMK59/9V8Ju7fgxoJ08mK6izEj6vUP8
suJOltWLvDYmHHLgDT4gmNECgYBzVcmdwaoPZX98DLd5waCPFACYrJ9nuR8bdCpZ
1OtJL81FQLaFedxOD7bGTrG+dFAFVyCiWGEm3smWOofzYSae/mM5Ni5K5LD1oF+b
aYGkNYxJeNKpG/Oq7zXlkP9XIlz5wFu9983wLoxxiYQk27u+UbJ/gUzvOjv43I1cX
4pXJhwKBgEjSju4IYF8KRKCiQ+s/95xIUqwITt9nEDssaI4ms0ZcRROq9cAhxX4H
lOn8Ruyy7mGJ0LEpyuFVsSvb7sHqRdy2eyyXO/amwSquOZ9+BjGOb2wjoVHDCYm+
1obXuj+YB36cHqDTbWOM8yCkBcdHCL0eczvComocAiKWfJX9ZNWM
-----END RSA PRIVATE KEY-----</validation-cert><runlist/><attributes>{
 "boundary": {
 "api": {
 "org_id": "000000000000000000",
 "key": "00000000000000000000"
 }
 },
 "newrelic": {
 "server_monitoring": {
 "license": "00000000000000000000000"
 },
 "application_monitoring": {
 "license": "00000000000000000000000"
 }
 }
}</attributes></chef></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk
lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW
wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN
6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al
NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS
HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM
oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D
kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG
/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g
cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy
3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA
Uzu+IcwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM
/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX
efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0
f4XnfOAOTzeJ75C0/bRnGxE8Fb4h9+CvBbTzcm+m9csAQcriY/cyqiidKulrDgeQ
UKlRGwtrgWHQEPRLmdj3e/bPNOt6o+CJy2/pLfbp/boG7xdQus0U4Kx7+rmPd7Lv
uXcSeNupODhC44uH3HE16LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+
edWoFEFhFWl5Yau41g0wvdNwPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS
NtKEbtaQPP1LybSQjrnuxw8LyFT8fvYxHxMK59/9V8Ju7fgxoJ08mK6izEj6vUP8
suJOltWLvDYmHHLgDT4gmNECgYBzVcmdwaoPZX98DLd5waCPFACYrJ9nuR8bdCpZ
1OtJL81FQLaFedxOD7bGTrG+dFAFVyCiWGEm3smWOofzYSae/mM5Ni5K5LD1oF+b
aYGkNYxJeNKpG/Oq7zXlkP9XIlz5wFu9983wLoxxiYQk27u+bJ/gUzvOjv43I1cX
4pXJhwKBgEjSju4IYF8KRKCiQ+s/95xIUqwITt9nEDssaI4ms0ZcRROq9cAhxX4H
lOn8Ruyy7mGJ0LEpyuFVsSvb7sHqRdy2eyyXO/amwSquOZ9+BjGOb2wjoVHDCYm+
1obXuj+YB36cHqDTbWOM8yCkBcdHCL0eczvComocAiKWfJX9ZNWM
-----END RSA PRIVATE KEY-----</validation-cert><runlist /></chef></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url /><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk
lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW
wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN
6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al
NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS
HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM
oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D
kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG
/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g
cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy
3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA
Uzu+IcwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM
/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX
efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0
f4XnfOAOTzeJ75C0/bRnGxE8Fb4h9+CvBbTzcm+m9csAQcriY/cyqiidKulrDgeQ
UKlRGwtrgWHQEPRLmdj3e/bPNOt6o+CJy2/pLfbp/boG7xdQus0U4Kx7+rmPd7Lv
uXcSeNupODhC44uH3HE16LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+
edWoFEFhFWl5Yau41g0wvdNPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS
NtKEbtaQPP1LybSQjrnuxw8LyFT8fvYxHxMK59/9V8Ju7fgxoJ08mK6izEj6vUP8
suJOltWLvDYmHHLgDT4gmNECgYBzVcmdwaoPZX98DLd5waCPFACYrJ9nuR8bdCpZ
1OtJL81FQLaFedxOD7bGTrG+dFAFVyCiWGEm3smWOofzYSae/mM5Ni5K5LD1oF+b
aYGkNYxJeNKpG/Oq7zXlkP9XIlz5wFu9983wLoxxiYQk27u+UbJ/gUzvOjv43I1cX
4pXJhwKBgEjSju4IYF8KRKCiQ+s/95xIUqwITt9nEDssaI4ms0ZcRROq9cAhxX4H
lOn8Ruyy7mGJ0LEpyuFVsSvb7sHqRdy2eyyXO/amwSquOZ9+BjGOb2wjoVHDCYm+
1obXuj+YB36cHqDTbWOM8yCkBcdHCL0eczvComocAiKWfJX9ZNWM
-----END RSA PRIVATE KEY-----</validation-cert><runlist/><attributes>{
 "boundary": {
 "api": {
 "org_id": "00000000000000",
 "key": "00000000000000"
 }
 },
 "newrelic": {
 "server_monitoring": {
 "license": "000000000000000000000"
 },
 "application_monitoring": {
 "license": "00000000000000000"
 }
 }
}</attributes></chef></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name></validation-client-name><validation-cert /><runlist/><attributes>{
 "boundary": {
 "api": {
 "org_id": "0000000000000000000000",
 "key": "000000000000000000"
 }
 },
 "newrelic": {
 "server_monitoring": {
 "license": "000000000000000000"
 },
 "application_monitoring": {
 "license": "0000000000000000000"
 }
 }
}</attributes></chef></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><runlist/><attributes>{
 "boundary": {
 "api": {
 "org_id": "000000000000000000",
 "key": "000000000000000000000"
 }
 },
 "newrelic": {
 "server_monitoring": {
 "license": "00000000000000000000000000000"
 },
 "application_monitoring": {
 "license": "000000000000000000000000000000"
 }
 }
}</attributes></chef></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk
lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW
wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN
6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al
NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS
HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM
oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D
kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG
/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g
cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy
3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA
Uzu+IcwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM
/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX
efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0
f4XnfOAOTzeJ75C0/bRnGxE8Fb4h9+CvBbTzcm+m9csAQcriY/cyqiidKulrDgeQ
UKlRGwtrgWHQEPRLmdj3e/bPNOt6o+CJy2/pLfbp/boG7xdQus0U4Kx7+rmPd7Lv
uXcSeNupODhC44uH3HE16LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+
edWoFEFhFWl5Yau410wvdNwPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS
NtKEbtaQPP1LybSQjrnuxw8LyFT8fvYxHxMK59/9V8Ju7fgxoJ08mK6izEj6vUP8
suJOltWLvDYmHHLgDT4gmNECgYBzVcmdwaoPZX98DLd5waCPFACYrJ9nuR8bdCpZ
1OtJL81FQLaFedxOD7bGTrG+dFAFVyCiWGEm3smWOofzYSae/mM5Ni5K5LD1oF+b
aYGkNYxJeNKpG/Oq7zXlkP9XIlz5wFu9983wLoxxiYQk27u+UbJ/gUzvOjv43I1cX
4pXJhwKBgEjSju4IYF8KRKCiQ+s/95xIUqwITt9nEDssaI4ms0ZcRROq9cAhxX4H
lOn8Ruyy7mGJ0LEpyuFVsSvb7sHqRdy2eyyXO/amwSquOZ9+BjGOb2wjoVHDCYm+
1obXuj+YB36cHqDTbWOM8yCkBcdHCL0eczvComocAiKWfJX9ZNWM
-----END RSA PRIVATE KEY-----</validation-cert><runlist/><attributes>{
 "boundary": {
 "api": {
 "org_id": "0000000000000000000000000",
 "key": "0000000000000000"
 }
 },
 "newrelic": {
 "server_monitoring": {
 "license": "0000000000000000000"
 },
 "application_monitoring": {
 "license": "000000000000000000"
 }
 }
}</attributes></chef></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk
lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW
wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN
6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al
NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS
HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM
oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D
kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG
/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g
cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy
3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA
Uzu+IcwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM
/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX
efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0
f4XnfOAOTzeJ75C0/bRnGxE8Fb4h9+CvBbTzcm+m9csAQcriY/cyqiidKulrDgeQ
UKlRGwtrgWHQEPRLmdj3e/bPNOt6o+CJy2/pLfbp/boG7xdQus0U4Kx7+rmPd7Lv
uXcSeNupODhC44uH3HE16LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+
edWoFEFhFWl5Yau41g0wvdNwPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS
NtKEbtaQPP1LybSQjrnuxw8LyFT8fvYxHxMK59/9V8Ju7fgxoJ08mK6izEj6vUP8
suJOltWLvDYmHHLgDT4gmNECgYBzVcmdwaoPZX98DLd5waCPFACYrJ9nuR8bdCpZ
1OtJL81FQLaFedxOD7bGTrG+dFAFVyCiWGEm3smWOofzYSae/mM5Ni5K5LD1oF+b
aYGkNYxJeNKpG/Oq7zXlkP9XIlz5wFu9983wLoxxiYQk27u+UbJ/gUzvOjv43I1cX
4pXJhwKBgEjSju4IYF8KRKCiQ+s/95xIUqwITt9nEDssaI4ms0ZcRROq9cAhxX4H
lOn8Ruyy7mGJ0LEpyuFVsSvb7sHqRdy2eyyXO/amwSquOZ9+BjGOb2wjoVHDCYm+
1obXuj+YB36cHqDTbWOM8ykBcdHCL0eczvComocAiKWfJX9ZNWM
-----END RSA PRIVATE KEY-----</validation-cert><runlist/><attributes>{
 "boundary": {
 "api": {
 "org_id": "000000000000000000000",
 "key": "0000000000000000000"
 }
 },
 "newrelic": {
 "server_monitoring": {
 "license": "0000000000000000000000"
 },
 "application_monitoring": {
 "license": "000000000000000000000000"
 }
 }
}</attributes></chef></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-cert>-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk
lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW
wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN
6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al
NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS
HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM
oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D
kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG
/L+7RhBca/J607dgAW1FlYCiojI0qIRKPRkvdotQ3M+kYitYIv+MxZtmOB5OqG5g
cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy
3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA
Uzu+IcwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM
/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX
efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0
f4XnfOAOTzeJ75C0/bRGxE8Fb4h9+CvBbTzcm+m9csAQcriY/cyqiidKulrDgeQ
UKlRGwtrgWHQEPRLmdj3e/bPNOt6o+CJy2/pLfbp/boG7xdQus0U4Kx7+rmPd7Lv
uXcSeNupODhC44uH3HE16LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+
edWoFEFhFWl5Yau41g0wvdNwPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS
NtKEbtaQPP1LybSQjrnuxw8LyFT8fvYxHxMK59/9V8Ju7fgxoJ08mK6izEj6vUP8
suJOltWLvDYmHHLgDT4gmNECgYBzVcmdwaoPZX98DLd5waCPFACYrJ9nuR8bdCpZ
1OtJL81FQLaFedxOD7bGTrG+dFAFVyCiWGEm3smWOofzYSae/mM5Ni5K5LD1oF+b
aYGkNYxJeNKpG/Oq7zXlkP9XIlz5wFu9983wLoxxiYQk27u+UbJ/gUzvOjv43I1cX
4pXJhwKBgEjSju4IYF8KRKCiQ+s/95xIUqwITt9nEDssaI4ms0ZcRROq9cAhxX4H
lOn8Ruyy7mGJ0LEpyuFVsSvb7sHqRdy2eyyXO/amwSquOZ9+BjGOb2wjoVHDCYm+
1obXuj+YB36cHqDTbWOM8yCkBcdHCL0eczvComocAiKWfJX9ZNWM
-----END RSA PRIVATE KEY-----</validation-cert><runlist/><attributes>{
 "boundary": {
 "api": {
 "org_id": "00000000000000000",
 "key": "000000000000000000"
 }
 },
 "newrelic": {
 "server_monitoring": {
 "license": "000000000000000000000000000"
 },
 "application_monitoring": {
 "license": "0000000000000000000"
 }
 }
}</attributes></chef></bootstrap>
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><bootstrap><node>ABQ-d4542f23-a755-4d9a-96f3-1e31c7a269d5</node><chef><chef-server-url>https://api.opscode.com/organizations/chef_integration</chef-server-url><validation-client-name>chef_integration-validator</validation-client-name><validation-cert>-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAlksjdfEAnUhY5w7ykVJE6uICX9d9wWLcAMB5e1UO0Zxagtmzjy6UHEyk
lgGJb2PeaCeyjnkhtwlRgeq9zgRqcGFFu+q/2VJUGeUUt4JqX0dfIiTT5nbK0kYW
wWkDBQvKtC+nepKs5Sck9y4h2DO95uAMhct6+R6W4qzXyMQKQST5r0FfdyWbUKFN
6mvpaxBoB3BF8YQcs8Z6cGZfCdEC2vI2jhgR9MALFE/w2G3+REmDpi7tpX4eB7al
NrJr8E6f44EEYDmrO9zQ0pnEV9et9rvULUYXIovuKIoIEXeY8vIUaEuGPYL5gcYS
HtROW0zCxlO2eg5HNJcTAUQUI4OnTd2o+9LdCwIDAQABAoIBAQCGoAZ4wDKgcOrM
oeemYa0iepwViKpzBrtIb6yJlA494ICmOHQocehRkAou3MvZZ5WUNkWuDl+ol98D
kj8+OhE801tpTswMx3SFWXH0p9E40zWIBrYzls8e4pj+4ktYf3O+MWNSsAoIJUHG
/L+7RhBca/J607dgAW1FlYCiojI0qIRKPkvdotQ3M+kYitYIv+MxZtmOB5OqG5g
cUFT9BxMAFW0JrCf8Zgcd0qvtjnQkqHp1SAFlFOE9918JijeVj3cXXajy+IazNwy
3Qq945thQpZaEXtMnggpN86CeaVtt4m9dXLiyjVVd6OfF6aTdG8W9CoKnIIvyKIA
Uzu+IcwBAoGBAM29a/OeY74ezG6MwVRw4uLATllg6acnfSUNQhMtdfPKhQWSGanM
/jwpWx/b4vgTiR8ZPxf1tViEdSwFsZwbo1fzWZvxRicbyIHtMF23sFNPo2rDhdBX
efafa0FlV3solOFFrSuDPkbi8WDKJA6156NqJfv6RTjSzKWtpPpxYYpxAoGBAMO0
f4XnfOAOTzeJ75C0/bRnGxE8Fb4h9+CvBbTzcm+m9csAQcriY/cyqiidKulrDgeQ
UKlRGwtrgWHQEPRLmdj3e/bPNOt6o+CJy2/pLfbp/boG7xdQus0U4Kx7+rmPd7Lv
uXcSeNupODhC44uH3HE16LA5WQxTu3PI3k3JP8U7AoGAcqgMwDDV7z8kuLsyhsd+
edWoFEFhFWl5Yau41g0wvdNwPIGGUc3PJWH6yY92NsBUW4NrWQPys0jmL8lgiNoS
NtKEbtaQPP1LybSQjrnuxw8LyFT8fvYxHxMK59/9V8Ju7fgxoJ08mK6izEj6vUP8
suJOltWLvDYmHHLgDT4gmNECgYBzVcmdwaoPZX98DLd5waCPFACYrJ9nuR8bdCpZ
1OtJL81FQLaFedxOD7bGTrG+dFAFVyCiWGEm3smWOofzYSae/mM5Ni5K5LD1oF+b
aYGkNYxJeNKpG/Oq7zXlkP9XIlz5wFu9983wLoxxiYQk27u+UbJ/gUzvOjv43I1cX
4pXJhwKBgEjSju4IYF8KRKCiQ+s/95xIUqwITt9nEDssaI4ms0ZcRROq9cAhxX4H
lOn8Ruyy7mGJ0LEpyuFVsSvb7sHqRdy2eyyXO/amwSquOZ9+BjGOb2wjoVHDCYm+
1obXuj+YB36cHqDTbWOM8yCkBcdHCL0eczvComocAiKWfJX9ZNWM
-----END RSA PRIVATE KEY-----</validation-cert><runlist><element>role[web-server]</element><element>recipe[apache2]</element></runlist></chef></bootstrap>
|
@@ -8,6 +8,8 @@ lease {
|
|
8
8
|
option domain-name-servers 8.8.8.8;
|
9
9
|
option dhcp-server-identifier 192.168.0.1;
|
10
10
|
option vendor-encapsulated-options "http://10.60.20.11/api/cloud/virtualdatacenters/4/virtualappliances/12/virtualmachines/10/config/bootstrap@@Ykozf/WP/hred8HWnFOwHA==";
|
11
|
+
option domain-name "abiquo.com";
|
12
|
+
option hardware ethernet 00:00:00:00:00:00;
|
11
13
|
renew 4 2011/11/17 22:59:41;
|
12
14
|
rebind 5 2011/11/18 06:41:48;
|
13
15
|
expire 5 2011/11/18 08:46:48;
|
@@ -9,72 +9,155 @@ describe "Bootstrap Config Parser" do
|
|
9
9
|
|
10
10
|
describe "parsing" do
|
11
11
|
it "should load a valid bootstrap file" do
|
12
|
-
|
12
|
+
expect {
|
13
13
|
BootstrapConfigParser.new(File.read(data_dir + "bootstrap.xml"))
|
14
|
-
|
14
|
+
}.to_not raise_error
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should raise exception loading invalid bootstrap file" do
|
18
|
-
|
18
|
+
expect {
|
19
19
|
BootstrapConfigParser.new(File.read(data_dir + "invalid_bootstrap.xml"))
|
20
|
-
|
20
|
+
}.to raise_error
|
21
21
|
end
|
22
|
-
end
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
it "should raise exception loading invalid bootstrap file missing validation" do
|
24
|
+
expect {
|
25
|
+
BootstrapConfigParser.new(File.read(data_dir + "bootstrap_missing_validation.xml"))
|
26
|
+
}.to raise_error /Missing <validation-client-name> element/
|
27
27
|
end
|
28
|
-
|
29
|
-
|
28
|
+
|
29
|
+
it "should raise exception loading invalid bootstrap file missing server url" do
|
30
|
+
expect {
|
31
|
+
BootstrapConfigParser.new(File.read(data_dir + "bootstrap_missing_server_url.xml"))
|
32
|
+
}.to raise_error /Missing <chef-server-url> element/
|
30
33
|
end
|
31
|
-
end
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
-
|
35
|
+
it "should raise exception loading invalid bootstrap file missing node" do
|
36
|
+
expect {
|
37
|
+
BootstrapConfigParser.new(File.read(data_dir + "bootstrap_missing_node.xml"))
|
38
|
+
}.to raise_error /Missing <node> element/
|
36
39
|
end
|
37
40
|
|
38
|
-
it "should
|
39
|
-
|
40
|
-
|
41
|
+
it "should raise exception loading invalid bootstrap file missing chef" do
|
42
|
+
expect {
|
43
|
+
BootstrapConfigParser.new(File.read(data_dir + "bootstrap_missing_chef.xml"))
|
44
|
+
}.to raise_error /Missing <chef> element/
|
41
45
|
end
|
42
46
|
|
43
|
-
it "should
|
44
|
-
|
47
|
+
it "should raise exception loading invalid bootstrap file missing cert" do
|
48
|
+
expect {
|
49
|
+
BootstrapConfigParser.new(File.read(data_dir + "bootstrap_missing_cert.xml"))
|
50
|
+
}.to raise_error /Missing <validation-cert> element/
|
45
51
|
end
|
46
52
|
|
47
|
-
it "should
|
48
|
-
|
49
|
-
|
50
|
-
|
53
|
+
it "should raise exception loading invalid bootstrap file empty validation" do
|
54
|
+
expect {
|
55
|
+
BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_validation.xml"))
|
56
|
+
}.to raise_error /Missing <validation-client-name> info/
|
51
57
|
end
|
52
58
|
|
53
|
-
it "should
|
54
|
-
|
55
|
-
|
59
|
+
it "should raise exception loading invalid bootstrap file empty server url" do
|
60
|
+
expect {
|
61
|
+
BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_server_url.xml"))
|
62
|
+
}.to raise_error /Missing <chef-server-url> info/
|
56
63
|
end
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
64
|
+
|
65
|
+
it "should raise exception loading invalid bootstrap file empty node" do
|
66
|
+
expect {
|
67
|
+
BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_node.xml"))
|
68
|
+
}.to raise_error /Missing <node> info/
|
62
69
|
end
|
63
|
-
end
|
64
70
|
|
65
|
-
|
66
|
-
|
67
|
-
|
71
|
+
it "should raise exception loading invalid bootstrap file empty chef" do
|
72
|
+
expect {
|
73
|
+
BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_chef.xml"))
|
74
|
+
}.to raise_error /Missing <chef> info/
|
68
75
|
end
|
69
|
-
end
|
70
76
|
|
71
|
-
|
72
|
-
|
73
|
-
|
77
|
+
it "should raise exception loading invalid bootstrap file empty cert" do
|
78
|
+
expect {
|
79
|
+
BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_cert.xml"))
|
80
|
+
}.to raise_error /Missing <validation-cert> info/
|
74
81
|
end
|
75
|
-
|
76
|
-
|
82
|
+
|
83
|
+
|
84
|
+
describe "name" do
|
85
|
+
it "should be a string" do
|
86
|
+
@cp.node_name.should be_a(String)
|
87
|
+
end
|
88
|
+
it "should start with ABQ-" do
|
89
|
+
@cp.node_name.should match(/^ABQ-/)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "node_config" do
|
94
|
+
it "should be a Hash" do
|
95
|
+
@cp.node_config.should be_a(Hash)
|
96
|
+
end
|
97
|
+
|
98
|
+
it "runlist should be an empty missing" do
|
99
|
+
cp = BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_runlist.xml"))
|
100
|
+
expect(cp.node_config).not_to have_key("run_list")
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should have three elements" do
|
104
|
+
@cp.node_config.should have(3).items
|
105
|
+
end
|
106
|
+
|
107
|
+
it "runlist should have a two items in the runlist" do
|
108
|
+
@cp.node_config["run_list"].should have(2).items
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should be an array of strings" do
|
112
|
+
@cp.node_config["run_list"].each do |i|
|
113
|
+
i.should be_a(String)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should have a recipe and a role" do
|
118
|
+
@cp.node_config["run_list"].first.should match(/role\[/)
|
119
|
+
@cp.node_config["run_list"].last.should match(/recipe\[/)
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should contains boundary and newrelic" do
|
123
|
+
expect(@cp.node_config).to have_key("boundary")
|
124
|
+
expect(@cp.node_config).to have_key("newrelic")
|
125
|
+
end
|
126
|
+
|
127
|
+
it "attributes should be missing" do
|
128
|
+
cp = BootstrapConfigParser.new(File.read(data_dir + "bootstrap_no_attributes.xml"))
|
129
|
+
expect(cp.node_config).not_to have_key("boundary")
|
130
|
+
expect(cp.node_config).not_to have_key("newrelic")
|
131
|
+
expect(cp.node_config).to have_key("run_list")
|
132
|
+
end
|
133
|
+
|
134
|
+
it "attributes should be missing" do
|
135
|
+
cp = BootstrapConfigParser.new(File.read(data_dir + "bootstrap_empty_runlist_no_attributes.xml"))
|
136
|
+
cp.node_config.size.should be(0)
|
137
|
+
end
|
138
|
+
|
77
139
|
end
|
78
|
-
end
|
79
140
|
|
141
|
+
describe "chef-server-url" do
|
142
|
+
it "should be a URL" do
|
143
|
+
@cp.chef_server_url.should match(/^http(s)?:\/\//)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
describe "validation-client-name" do
|
148
|
+
it "should be a String" do
|
149
|
+
@cp.validation_client_name.should be_a(String)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
describe "validation_cert" do
|
154
|
+
it 'should start with -----BEGIN RSA PRIVATE KEY' do
|
155
|
+
@cp.validation_cert.should match(/^-----BEGIN RSA PRIVATE KEY/)
|
156
|
+
end
|
157
|
+
it 'should end with END RSA PRIVATE KEY-----' do
|
158
|
+
@cp.validation_cert.should match(/END RSA PRIVATE KEY-----$/)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
end
|
80
163
|
end
|
metadata
CHANGED
@@ -1,161 +1,171 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: abiquo-chef-agent
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 11
|
10
|
-
version: 1.0.11
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Salvador Girones
|
14
9
|
- Sergio Rubio
|
10
|
+
- Serafin Sedano
|
15
11
|
autorequire:
|
16
12
|
bindir: bin
|
17
13
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
-
none: false
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 3
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
version: "0"
|
31
|
-
version_requirements: *id001
|
14
|
+
date: 2013-09-19 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
32
17
|
name: rspec
|
33
|
-
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ! '>='
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '0'
|
34
24
|
type: :development
|
35
|
-
|
36
|
-
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
28
|
+
requirements:
|
29
|
+
- - ! '>='
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: '0'
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: bundler
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
37
35
|
none: false
|
38
|
-
requirements:
|
36
|
+
requirements:
|
39
37
|
- - ~>
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
hash: 23
|
42
|
-
segments:
|
43
|
-
- 1
|
44
|
-
- 0
|
45
|
-
- 0
|
38
|
+
- !ruby/object:Gem::Version
|
46
39
|
version: 1.0.0
|
47
|
-
version_requirements: *id002
|
48
|
-
name: bundler
|
49
|
-
prerelease: false
|
50
40
|
type: :development
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
|
-
requirements:
|
55
|
-
- - ">="
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
hash: 3
|
58
|
-
segments:
|
59
|
-
- 0
|
60
|
-
version: "0"
|
61
|
-
version_requirements: *id003
|
62
|
-
name: jeweler
|
63
41
|
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.0.0
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: jeweler
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
64
56
|
type: :development
|
65
|
-
- !ruby/object:Gem::Dependency
|
66
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
|
-
requirements:
|
69
|
-
- - ">="
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
hash: 3
|
72
|
-
segments:
|
73
|
-
- 0
|
74
|
-
version: "0"
|
75
|
-
version_requirements: *id004
|
76
|
-
name: simplecov
|
77
57
|
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: simplecov
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
78
72
|
type: :development
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ">="
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
hash: 3
|
86
|
-
segments:
|
87
|
-
- 0
|
88
|
-
version: "0"
|
89
|
-
version_requirements: *id005
|
90
|
-
name: run-as-root
|
91
73
|
prerelease: false
|
74
|
+
version_requirements: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: run-as-root
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
92
88
|
type: :runtime
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
95
|
-
none: false
|
96
|
-
requirements:
|
97
|
-
- - ">="
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
hash: 3
|
100
|
-
segments:
|
101
|
-
- 0
|
102
|
-
version: "0"
|
103
|
-
version_requirements: *id006
|
104
|
-
name: chef
|
105
89
|
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: chef
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
106
104
|
type: :runtime
|
107
|
-
- !ruby/object:Gem::Dependency
|
108
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
109
|
-
none: false
|
110
|
-
requirements:
|
111
|
-
- - ">="
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
hash: 3
|
114
|
-
segments:
|
115
|
-
- 0
|
116
|
-
version: "0"
|
117
|
-
version_requirements: *id007
|
118
|
-
name: daemons
|
119
105
|
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
108
|
+
requirements:
|
109
|
+
- - ! '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: daemons
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
120
|
type: :runtime
|
121
|
-
- !ruby/object:Gem::Dependency
|
122
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
123
|
-
none: false
|
124
|
-
requirements:
|
125
|
-
- - ">="
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
hash: 3
|
128
|
-
segments:
|
129
|
-
- 0
|
130
|
-
version: "0"
|
131
|
-
version_requirements: *id008
|
132
|
-
name: rest-client
|
133
121
|
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
124
|
+
requirements:
|
125
|
+
- - ! '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
|
+
name: rest-client
|
130
|
+
requirement: !ruby/object:Gem::Requirement
|
131
|
+
none: false
|
132
|
+
requirements:
|
133
|
+
- - ! '>='
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
134
136
|
type: :runtime
|
135
|
-
- !ruby/object:Gem::Dependency
|
136
|
-
requirement: &id009 !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ">="
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
hash: 3
|
142
|
-
segments:
|
143
|
-
- 0
|
144
|
-
version: "0"
|
145
|
-
version_requirements: *id009
|
146
|
-
name: xml-simple
|
147
137
|
prerelease: false
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
140
|
+
requirements:
|
141
|
+
- - ! '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
- !ruby/object:Gem::Dependency
|
145
|
+
name: xml-simple
|
146
|
+
requirement: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
148
|
+
requirements:
|
149
|
+
- - ! '>='
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
148
152
|
type: :runtime
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
156
|
+
requirements:
|
157
|
+
- - ! '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
149
160
|
description: Abiquo Chef Agent
|
150
|
-
email:
|
151
|
-
executables:
|
161
|
+
email: ruby-gems@abiquo.com
|
162
|
+
executables:
|
152
163
|
- abiquo-chef-run
|
153
164
|
extensions: []
|
154
|
-
|
155
|
-
extra_rdoc_files:
|
165
|
+
extra_rdoc_files:
|
156
166
|
- LICENSE.txt
|
157
167
|
- README.md
|
158
|
-
files:
|
168
|
+
files:
|
159
169
|
- Gemfile
|
160
170
|
- LICENSE.txt
|
161
171
|
- README.md
|
@@ -166,7 +176,19 @@ files:
|
|
166
176
|
- scripts/debian/abiquo-chef-agent.conf.upstart
|
167
177
|
- scripts/debian/chef-client.defaults
|
168
178
|
- spec/data/bootstrap.xml
|
179
|
+
- spec/data/bootstrap_empty_cert.xml
|
180
|
+
- spec/data/bootstrap_empty_chef.xml
|
181
|
+
- spec/data/bootstrap_empty_node.xml
|
169
182
|
- spec/data/bootstrap_empty_runlist.xml
|
183
|
+
- spec/data/bootstrap_empty_runlist_no_attributes.xml
|
184
|
+
- spec/data/bootstrap_empty_server_url.xml
|
185
|
+
- spec/data/bootstrap_empty_validation.xml
|
186
|
+
- spec/data/bootstrap_missing_cert.xml
|
187
|
+
- spec/data/bootstrap_missing_chef.xml
|
188
|
+
- spec/data/bootstrap_missing_node.xml
|
189
|
+
- spec/data/bootstrap_missing_server_url.xml
|
190
|
+
- spec/data/bootstrap_missing_validation.xml
|
191
|
+
- spec/data/bootstrap_no_attributes.xml
|
170
192
|
- spec/data/dhclient/dhclient.leases
|
171
193
|
- spec/data/invalid_bootstrap.xml
|
172
194
|
- spec/spec_helper.rb
|
@@ -174,37 +196,28 @@ files:
|
|
174
196
|
- spec/unit/config_spec.rb
|
175
197
|
- spec/unit/util_spec.rb
|
176
198
|
homepage: http://github.com/abiquo/abiquo-chef-agent
|
177
|
-
licenses:
|
199
|
+
licenses:
|
178
200
|
- MIT
|
179
201
|
post_install_message:
|
180
202
|
rdoc_options: []
|
181
|
-
|
182
|
-
require_paths:
|
203
|
+
require_paths:
|
183
204
|
- lib
|
184
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
205
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
185
206
|
none: false
|
186
|
-
requirements:
|
187
|
-
- -
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
|
190
|
-
|
191
|
-
- 0
|
192
|
-
version: "0"
|
193
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
|
+
requirements:
|
208
|
+
- - ! '>='
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: '0'
|
211
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
212
|
none: false
|
195
|
-
requirements:
|
196
|
-
- -
|
197
|
-
- !ruby/object:Gem::Version
|
198
|
-
|
199
|
-
segments:
|
200
|
-
- 0
|
201
|
-
version: "0"
|
213
|
+
requirements:
|
214
|
+
- - ! '>='
|
215
|
+
- !ruby/object:Gem::Version
|
216
|
+
version: '0'
|
202
217
|
requirements: []
|
203
|
-
|
204
218
|
rubyforge_project:
|
205
|
-
rubygems_version: 1.8.
|
219
|
+
rubygems_version: 1.8.24
|
206
220
|
signing_key:
|
207
221
|
specification_version: 3
|
208
222
|
summary: Abiquo Chef Agent
|
209
223
|
test_files: []
|
210
|
-
|