abiquo-chef-agent 1.0.11 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|