chef 14.11.21-universal-mingw32 → 14.12.3-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +0 -4
- data/chef-universal-mingw32.gemspec +3 -4
- data/chef.gemspec +3 -3
- data/lib/chef/application/solo.rb +1 -1
- data/lib/chef/provider/service/windows.rb +18 -16
- data/lib/chef/resource/windows_certificate.rb +36 -18
- data/lib/chef/version.rb +1 -1
- data/spec/data/windows_certificates/test.p7b +0 -0
- data/spec/functional/resource/dsc_script_spec.rb +1 -1
- data/spec/functional/resource/group_spec.rb +15 -2
- data/spec/functional/resource/windows_certificate_spec.rb +75 -0
- data/spec/unit/provider/service/windows_spec.rb +26 -0
- metadata +36 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92e60ff6545327a69933c3552e5dc0b8ba165d291b06296ad5be6e5480b2cbd4
|
4
|
+
data.tar.gz: 70ccd89b276b634e30aca829ed27c98a55b2a01179a2be41aa92471d2af50ce4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43a435a07d4caf79d9ff0a50d7cfb51e6bd1f5b56cd4e77692598a19d3b444affe58d60ed68f085a7697206fceae7dfd4aefe2be2357285dbb338d4953ef2ded
|
7
|
+
data.tar.gz: 0b9a317619fa9e7c5caa2de8e5e88f3322c2cb34ef319ece153bbb294131deddb4f8b207af88659248bd06aa5b3642d2cf487ce6e318b90beb948f3fac36eee7
|
data/Gemfile
CHANGED
@@ -5,18 +5,17 @@ gemspec.platform = Gem::Platform.new(%w{universal mingw32})
|
|
5
5
|
gemspec.add_dependency "win32-api", "~> 1.5.3"
|
6
6
|
gemspec.add_dependency "win32-dir", "~> 0.5.0"
|
7
7
|
gemspec.add_dependency "win32-event", "~> 0.6.1"
|
8
|
-
# TODO: Relax this pin and make the necessary
|
8
|
+
# TODO: Relax this pin and make the necessary updates. The issue originally
|
9
9
|
# leading to this pin has been fixed in 0.6.5.
|
10
10
|
gemspec.add_dependency "win32-eventlog", "0.6.3"
|
11
11
|
gemspec.add_dependency "win32-mmap", "~> 0.4.1"
|
12
12
|
gemspec.add_dependency "win32-mutex", "~> 0.4.2"
|
13
13
|
gemspec.add_dependency "win32-process", "~> 0.8.2"
|
14
|
-
gemspec.add_dependency "win32-service", "
|
15
|
-
gemspec.add_dependency "windows-api", "~> 0.4.4"
|
14
|
+
gemspec.add_dependency "win32-service", ">= 1.0", "< 3.0"
|
16
15
|
gemspec.add_dependency "wmi-lite", "~> 1.0"
|
17
16
|
gemspec.add_dependency "win32-taskscheduler", "~> 2.0"
|
18
17
|
gemspec.add_dependency "iso8601", "~> 0.12.1"
|
19
|
-
gemspec.add_dependency "win32-certstore", "~> 0.
|
18
|
+
gemspec.add_dependency "win32-certstore", "~> 0.3"
|
20
19
|
gemspec.extensions << "ext/win32-eventlog/Rakefile"
|
21
20
|
gemspec.files += Dir.glob("{distro,ext}/**/*")
|
22
21
|
|
data/chef.gemspec
CHANGED
@@ -17,10 +17,10 @@ Gem::Specification.new do |s|
|
|
17
17
|
|
18
18
|
s.add_dependency "chef-config", "= #{Chef::VERSION}"
|
19
19
|
|
20
|
-
s.add_dependency "mixlib-cli", "
|
21
|
-
s.add_dependency "mixlib-log", "
|
20
|
+
s.add_dependency "mixlib-cli", ">= 1.7", "< 3.0"
|
21
|
+
s.add_dependency "mixlib-log", ">= 2.0.3", "< 4.0"
|
22
22
|
s.add_dependency "mixlib-authentication", "~> 2.1"
|
23
|
-
s.add_dependency "mixlib-shellout", "
|
23
|
+
s.add_dependency "mixlib-shellout", ">= 2.4", "< 4.0"
|
24
24
|
s.add_dependency "mixlib-archive", ">= 0.4", "< 2.0"
|
25
25
|
s.add_dependency "ohai", "~> 14.0"
|
26
26
|
|
@@ -218,12 +218,12 @@ class Chef::Application::Solo < Chef::Application
|
|
218
218
|
# Get this party started
|
219
219
|
def run
|
220
220
|
setup_signal_handlers
|
221
|
+
setup_application
|
221
222
|
reconfigure
|
222
223
|
for_ezra if Chef::Config[:ez]
|
223
224
|
if !Chef::Config[:solo_legacy_mode]
|
224
225
|
Chef::Application::Client.new.run
|
225
226
|
else
|
226
|
-
setup_application
|
227
227
|
run_application
|
228
228
|
end
|
229
229
|
end
|
@@ -83,22 +83,7 @@ class Chef::Provider::Service::Windows < Chef::Provider::Service
|
|
83
83
|
|
84
84
|
def start_service
|
85
85
|
if Win32::Service.exists?(@new_resource.service_name)
|
86
|
-
|
87
|
-
new_config = {
|
88
|
-
service_name: @new_resource.service_name,
|
89
|
-
service_start_name: @new_resource.run_as_user,
|
90
|
-
password: @new_resource.run_as_password,
|
91
|
-
}.reject { |k, v| v.nil? || v.length == 0 }
|
92
|
-
|
93
|
-
Win32::Service.configure(new_config)
|
94
|
-
logger.info "#{@new_resource} configured."
|
95
|
-
|
96
|
-
# LocalSystem is the default runas user, which is a special service account that should ultimately have the rights of BUILTIN\Administrators, but we wouldn't see that from get_account_right
|
97
|
-
if new_config.key?(:service_start_name) && new_config[:service_start_name].casecmp("localsystem") != 0
|
98
|
-
unless Chef::ReservedNames::Win32::Security.get_account_right(canonicalize_username(new_config[:service_start_name])).include?(SERVICE_RIGHT)
|
99
|
-
grant_service_logon(new_config[:service_start_name])
|
100
|
-
end
|
101
|
-
end
|
86
|
+
configure_service_run_as_properties
|
102
87
|
|
103
88
|
state = current_state
|
104
89
|
if state == RUNNING
|
@@ -281,6 +266,21 @@ class Chef::Provider::Service::Windows < Chef::Provider::Service
|
|
281
266
|
|
282
267
|
private
|
283
268
|
|
269
|
+
def configure_service_run_as_properties
|
270
|
+
return unless new_resource.property_is_set?(:run_as_user)
|
271
|
+
|
272
|
+
new_config = {
|
273
|
+
service_name: new_resource.service_name,
|
274
|
+
service_start_name: new_resource.run_as_user,
|
275
|
+
password: new_resource.run_as_password,
|
276
|
+
}.reject { |k, v| v.nil? || v.length == 0 }
|
277
|
+
|
278
|
+
Win32::Service.configure(new_config)
|
279
|
+
logger.info "#{new_resource} configured."
|
280
|
+
|
281
|
+
grant_service_logon(new_resource.run_as_user) if new_resource.run_as_user.casecmp("localsystem") != 0
|
282
|
+
end
|
283
|
+
|
284
284
|
def current_delayed_start
|
285
285
|
if service = Win32::Service.services.find { |x| x.service_name == new_resource.service_name }
|
286
286
|
service.delayed_start == 0 ? false : true
|
@@ -290,6 +290,8 @@ class Chef::Provider::Service::Windows < Chef::Provider::Service
|
|
290
290
|
end
|
291
291
|
|
292
292
|
def grant_service_logon(username)
|
293
|
+
return if Chef::ReservedNames::Win32::Security.get_account_right(canonicalize_username(username)).include?(SERVICE_RIGHT)
|
294
|
+
|
293
295
|
begin
|
294
296
|
Chef::ReservedNames::Win32::Security.add_account_right(canonicalize_username(username), SERVICE_RIGHT)
|
295
297
|
rescue Chef::Exceptions::Win32APIError => err
|
@@ -62,22 +62,9 @@ class Chef
|
|
62
62
|
|
63
63
|
# Extension of the certificate
|
64
64
|
ext = ::File.extname(new_resource.source)
|
65
|
-
cert_obj = fetch_cert_object(ext) # Fetch OpenSSL::X509::Certificate object
|
66
|
-
thumbprint = OpenSSL::Digest::SHA1.new(cert_obj.to_der).to_s # Fetch its thumbprint
|
67
65
|
|
68
|
-
#
|
69
|
-
|
70
|
-
if verify_cert(thumbprint) == true
|
71
|
-
Chef::Log.debug("Certificate is already present")
|
72
|
-
else
|
73
|
-
converge_by("Adding certificate #{new_resource.source} into Store #{new_resource.store_name}") do
|
74
|
-
if ext == ".pfx"
|
75
|
-
add_pfx_cert
|
76
|
-
else
|
77
|
-
add_cert(cert_obj)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
66
|
+
# PFX certificates contains private keys and we import them with some other aproach
|
67
|
+
import_certificates(fetch_cert_object(ext), (ext == ".pfx"))
|
81
68
|
end
|
82
69
|
|
83
70
|
# acl_add is a modify-if-exists operation : not idempotent
|
@@ -272,7 +259,7 @@ class Chef
|
|
272
259
|
set_acl_script
|
273
260
|
end
|
274
261
|
|
275
|
-
# Method returns an OpenSSL::X509::Certificate object
|
262
|
+
# Method returns an OpenSSL::X509::Certificate object. Might also return multiple certificates if present in certificate path
|
276
263
|
#
|
277
264
|
# Based on its extension, the certificate contents are used to initialize
|
278
265
|
# PKCS12 (PFX), PKCS7 (P7B) objects which contains OpenSSL::X509::Certificate.
|
@@ -295,9 +282,14 @@ class Chef
|
|
295
282
|
|
296
283
|
case ext
|
297
284
|
when ".pfx"
|
298
|
-
OpenSSL::PKCS12.new(contents, new_resource.pfx_password)
|
285
|
+
pfx = OpenSSL::PKCS12.new(contents, new_resource.pfx_password)
|
286
|
+
if pfx.ca_certs.nil?
|
287
|
+
pfx.certificate
|
288
|
+
else
|
289
|
+
[pfx.certificate] + pfx.ca_certs
|
290
|
+
end
|
299
291
|
when ".p7b"
|
300
|
-
OpenSSL::PKCS7.new(contents).certificates
|
292
|
+
OpenSSL::PKCS7.new(contents).certificates
|
301
293
|
else
|
302
294
|
OpenSSL::X509::Certificate.new(contents)
|
303
295
|
end
|
@@ -308,6 +300,32 @@ class Chef
|
|
308
300
|
def binary_cert?
|
309
301
|
powershell_out!("file -b --mime-encoding #{new_resource.source}").stdout.strip == "binary"
|
310
302
|
end
|
303
|
+
|
304
|
+
# Imports the certificate object into cert store
|
305
|
+
#
|
306
|
+
# @param cert_objs [OpenSSL::X509::Certificate] Object containing certificate's attributes
|
307
|
+
#
|
308
|
+
# @param is_pfx [Boolean] true if we want to import a PFX certificate
|
309
|
+
#
|
310
|
+
def import_certificates(cert_objs, is_pfx)
|
311
|
+
[cert_objs].flatten.each do |cert_obj|
|
312
|
+
thumbprint = OpenSSL::Digest::SHA1.new(cert_obj.to_der).to_s # Fetch its thumbprint
|
313
|
+
|
314
|
+
# Need to check if return value is Boolean:true
|
315
|
+
# If not then the given certificate should be added in certstore
|
316
|
+
if verify_cert(thumbprint) == true
|
317
|
+
Chef::Log.debug("Certificate is already present")
|
318
|
+
else
|
319
|
+
converge_by("Adding certificate #{new_resource.source} into Store #{new_resource.store_name}") do
|
320
|
+
if is_pfx
|
321
|
+
add_pfx_cert
|
322
|
+
else
|
323
|
+
add_cert(cert_obj)
|
324
|
+
end
|
325
|
+
end
|
326
|
+
end
|
327
|
+
end
|
328
|
+
end
|
311
329
|
end
|
312
330
|
end
|
313
331
|
end
|
data/lib/chef/version.rb
CHANGED
Binary file
|
@@ -74,11 +74,11 @@ describe Chef::Resource::DscScript, :windows_powershell_dsc_only do
|
|
74
74
|
let(:env_value2) { "value2" }
|
75
75
|
let(:dsc_test_run_context) do
|
76
76
|
node = Chef::Node.new
|
77
|
+
node.consume_external_attrs(OHAI_SYSTEM.data, {}) # node[:languages][:powershell][:version]
|
77
78
|
node.automatic["os"] = "windows"
|
78
79
|
node.automatic["platform"] = "windows"
|
79
80
|
node.automatic["platform_version"] = "6.1"
|
80
81
|
node.automatic["kernel"][:machine] = :x86_64 # Only 64-bit architecture is supported
|
81
|
-
node.automatic[:languages][:powershell][:version] = "4.0"
|
82
82
|
empty_events = Chef::EventDispatch::Dispatcher.new
|
83
83
|
Chef::RunContext.new(node, {}, empty_events)
|
84
84
|
end
|
@@ -292,14 +292,27 @@ describe Chef::Resource::Group, :requires_root_or_running_windows do
|
|
292
292
|
end
|
293
293
|
end
|
294
294
|
|
295
|
-
let(:
|
295
|
+
let(:number) do
|
296
|
+
# Loop until we pick a gid that is not in use.
|
297
|
+
loop do
|
298
|
+
begin
|
299
|
+
gid = rand(2000..9999) # avoid low group numbers
|
300
|
+
return nil if Etc.getgrgid(gid).nil? # returns nil on windows
|
301
|
+
rescue ArgumentError # group does not exist
|
302
|
+
return gid
|
303
|
+
end
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
let(:group_name) { "grp#{number}" } # group name should be 8 characters or less for Solaris, and possibly others
|
308
|
+
# https://community.aegirproject.org/developing/architecture/unix-group-limitations/index.html#Group_name_length_limits
|
296
309
|
let(:included_members) { [] }
|
297
310
|
let(:excluded_members) { [] }
|
298
311
|
let(:group_resource) do
|
299
312
|
group = Chef::Resource::Group.new(group_name, run_context)
|
300
313
|
group.members(included_members)
|
301
314
|
group.excluded_members(excluded_members)
|
302
|
-
group.gid(
|
315
|
+
group.gid(number) unless ohai[:platform_family] == "mac_os_x"
|
303
316
|
group
|
304
317
|
end
|
305
318
|
|
@@ -62,11 +62,14 @@ describe Chef::Resource::WindowsCertificate, :windows_only, :appveyor_only do
|
|
62
62
|
let(:cer_path) { File.join(certificate_path, "test.cer") }
|
63
63
|
let(:base64_path) { File.join(certificate_path, "base64_test.cer") }
|
64
64
|
let(:pem_path) { File.join(certificate_path, "test.pem") }
|
65
|
+
let(:p7b_path) { File.join(certificate_path, "test.p7b") }
|
65
66
|
let(:pfx_path) { File.join(certificate_path, "test.pfx") }
|
66
67
|
let(:out_path) { File.join(certificate_path, "testout.pem") }
|
67
68
|
let(:tests_thumbprint) { "3180B3E3217862600BD7B2D28067B03D41576A4F" }
|
68
69
|
let(:other_cer_path) { File.join(certificate_path, "othertest.cer") }
|
69
70
|
let(:others_thumbprint) { "AD393859B2D2D4161D224F16CBD3D16555753A20" }
|
71
|
+
let(:p7b_thumbprint) { "50954A52DDFA2043F36EA9026FDD95EC252048D0" }
|
72
|
+
let(:p7b_nested_thumbprint) { "4A3333FC4E1274995AF5A95810881C86F2DF7FBD" }
|
70
73
|
|
71
74
|
before do
|
72
75
|
opts = { store_name: store }
|
@@ -205,6 +208,23 @@ describe Chef::Resource::WindowsCertificate, :windows_only, :appveyor_only do
|
|
205
208
|
end
|
206
209
|
end
|
207
210
|
|
211
|
+
context "Adds P7B" do
|
212
|
+
before do
|
213
|
+
win_certificate.source = p7b_path
|
214
|
+
win_certificate.run_action(:create)
|
215
|
+
end
|
216
|
+
it "Imports certificate into store" do
|
217
|
+
expect(no_of_certificates).not_to eq(0)
|
218
|
+
end
|
219
|
+
it "Idempotent: Does not converge while adding again" do
|
220
|
+
win_certificate.run_action(:create)
|
221
|
+
expect(win_certificate).not_to be_updated_by_last_action
|
222
|
+
end
|
223
|
+
it "Nested certificates are also imported" do
|
224
|
+
expect(no_of_certificates).to eq(2)
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
208
228
|
context "Adds PFX" do
|
209
229
|
context "With valid password" do
|
210
230
|
before do
|
@@ -289,6 +309,61 @@ describe Chef::Resource::WindowsCertificate, :windows_only, :appveyor_only do
|
|
289
309
|
end
|
290
310
|
end
|
291
311
|
end
|
312
|
+
|
313
|
+
context "When multiple certificates are present" do
|
314
|
+
before do
|
315
|
+
win_certificate.source = p7b_path
|
316
|
+
win_certificate.run_action(:create)
|
317
|
+
end
|
318
|
+
|
319
|
+
context "With main certificate's thumbprint" do
|
320
|
+
before do
|
321
|
+
win_certificate.source = p7b_thumbprint
|
322
|
+
win_certificate.run_action(:verify)
|
323
|
+
end
|
324
|
+
it "Initial check if certificate is present" do
|
325
|
+
expect(no_of_certificates).to eq(2)
|
326
|
+
end
|
327
|
+
it "Displays correct message" do
|
328
|
+
expect(stdout.string.strip).to eq("Certificate is valid")
|
329
|
+
end
|
330
|
+
it "Does not converge while verifying" do
|
331
|
+
expect(win_certificate).not_to be_updated_by_last_action
|
332
|
+
end
|
333
|
+
end
|
334
|
+
|
335
|
+
context "With nested certificate's thumbprint" do
|
336
|
+
before do
|
337
|
+
win_certificate.source = p7b_nested_thumbprint
|
338
|
+
win_certificate.run_action(:verify)
|
339
|
+
end
|
340
|
+
it "Initial check if certificate is present" do
|
341
|
+
expect(no_of_certificates).to eq(2)
|
342
|
+
end
|
343
|
+
it "Displays correct message" do
|
344
|
+
expect(stdout.string.strip).to eq("Certificate is valid")
|
345
|
+
end
|
346
|
+
it "Does not converge while verifying" do
|
347
|
+
expect(win_certificate).not_to be_updated_by_last_action
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
351
|
+
context "For an invalid thumbprint" do
|
352
|
+
before do
|
353
|
+
win_certificate.source = others_thumbprint
|
354
|
+
win_certificate.run_action(:verify)
|
355
|
+
end
|
356
|
+
it "Initial check if certificate is present" do
|
357
|
+
expect(no_of_certificates).to eq(2)
|
358
|
+
end
|
359
|
+
it "Displays correct message" do
|
360
|
+
expect(stdout.string.strip).to eq("Certificate not found")
|
361
|
+
end
|
362
|
+
it "Does not converge while verifying" do
|
363
|
+
expect(win_certificate).not_to be_updated_by_last_action
|
364
|
+
end
|
365
|
+
end
|
366
|
+
end
|
292
367
|
end
|
293
368
|
|
294
369
|
describe "action: fetch" do
|
@@ -96,6 +96,7 @@ describe Chef::Provider::Service::Windows, "load_current_resource", :windows_onl
|
|
96
96
|
Win32::Service::DEMAND_START = 0x00000003
|
97
97
|
Win32::Service::DISABLED = 0x00000004
|
98
98
|
|
99
|
+
allow(Win32::Service).to receive(:start).with(any_args).and_return(Win32::Service)
|
99
100
|
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
100
101
|
double("StatusStruct", current_state: "running"))
|
101
102
|
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name)
|
@@ -505,6 +506,31 @@ describe Chef::Provider::Service::Windows, "load_current_resource", :windows_onl
|
|
505
506
|
double("StatusStruct", current_state: "running"))
|
506
507
|
end
|
507
508
|
|
509
|
+
context "run_as_user user is specified" do
|
510
|
+
let(:run_as_user) { provider.new_resource.class.properties[:run_as_user].default }
|
511
|
+
|
512
|
+
before do
|
513
|
+
provider.new_resource.run_as_user run_as_user
|
514
|
+
end
|
515
|
+
|
516
|
+
it "configures service run_as_user and run_as_password" do
|
517
|
+
expect(provider).to receive(:configure_service_run_as_properties).and_call_original
|
518
|
+
expect(Win32::Service).to receive(:configure)
|
519
|
+
provider.start_service
|
520
|
+
end
|
521
|
+
end
|
522
|
+
|
523
|
+
context "run_as_user user is not specified" do
|
524
|
+
before do
|
525
|
+
expect(provider.new_resource.property_is_set?(:run_as_user)).to be false
|
526
|
+
end
|
527
|
+
|
528
|
+
it "does not configure service run_as_user and run_as_password" do
|
529
|
+
expect(Win32::Service).not_to receive(:configure)
|
530
|
+
provider.start_service
|
531
|
+
end
|
532
|
+
end
|
533
|
+
|
508
534
|
it "calls the start command if one is specified" do
|
509
535
|
new_resource.start_command "sc start #{chef_service_name}"
|
510
536
|
expect(provider).to receive(:shell_out!).with((new_resource.start_command).to_s).and_return("Starting custom service")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 14.
|
4
|
+
version: 14.12.3
|
5
5
|
platform: universal-mingw32
|
6
6
|
authors:
|
7
7
|
- Adam Jacob
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-config
|
@@ -16,48 +16,54 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 14.
|
19
|
+
version: 14.12.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 14.
|
26
|
+
version: 14.12.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: mixlib-cli
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.7'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '3.0'
|
34
37
|
type: :runtime
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
|
-
- - "
|
41
|
+
- - ">="
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: '1.7'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3.0'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: mixlib-log
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '2.0'
|
48
51
|
- - ">="
|
49
52
|
- !ruby/object:Gem::Version
|
50
53
|
version: 2.0.3
|
54
|
+
- - "<"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '4.0'
|
51
57
|
type: :runtime
|
52
58
|
prerelease: false
|
53
59
|
version_requirements: !ruby/object:Gem::Requirement
|
54
60
|
requirements:
|
55
|
-
- - "~>"
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: '2.0'
|
58
61
|
- - ">="
|
59
62
|
- !ruby/object:Gem::Version
|
60
63
|
version: 2.0.3
|
64
|
+
- - "<"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '4.0'
|
61
67
|
- !ruby/object:Gem::Dependency
|
62
68
|
name: mixlib-authentication
|
63
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,16 +82,22 @@ dependencies:
|
|
76
82
|
name: mixlib-shellout
|
77
83
|
requirement: !ruby/object:Gem::Requirement
|
78
84
|
requirements:
|
79
|
-
- - "
|
85
|
+
- - ">="
|
80
86
|
- !ruby/object:Gem::Version
|
81
87
|
version: '2.4'
|
88
|
+
- - "<"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '4.0'
|
82
91
|
type: :runtime
|
83
92
|
prerelease: false
|
84
93
|
version_requirements: !ruby/object:Gem::Requirement
|
85
94
|
requirements:
|
86
|
-
- - "
|
95
|
+
- - ">="
|
87
96
|
- !ruby/object:Gem::Version
|
88
97
|
version: '2.4'
|
98
|
+
- - "<"
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '4.0'
|
89
101
|
- !ruby/object:Gem::Dependency
|
90
102
|
name: mixlib-archive
|
91
103
|
requirement: !ruby/object:Gem::Requirement
|
@@ -560,30 +572,22 @@ dependencies:
|
|
560
572
|
name: win32-service
|
561
573
|
requirement: !ruby/object:Gem::Requirement
|
562
574
|
requirements:
|
563
|
-
- - "
|
575
|
+
- - ">="
|
564
576
|
- !ruby/object:Gem::Version
|
565
577
|
version: '1.0'
|
578
|
+
- - "<"
|
579
|
+
- !ruby/object:Gem::Version
|
580
|
+
version: '3.0'
|
566
581
|
type: :runtime
|
567
582
|
prerelease: false
|
568
583
|
version_requirements: !ruby/object:Gem::Requirement
|
569
584
|
requirements:
|
570
|
-
- - "
|
585
|
+
- - ">="
|
571
586
|
- !ruby/object:Gem::Version
|
572
587
|
version: '1.0'
|
573
|
-
-
|
574
|
-
name: windows-api
|
575
|
-
requirement: !ruby/object:Gem::Requirement
|
576
|
-
requirements:
|
577
|
-
- - "~>"
|
578
|
-
- !ruby/object:Gem::Version
|
579
|
-
version: 0.4.4
|
580
|
-
type: :runtime
|
581
|
-
prerelease: false
|
582
|
-
version_requirements: !ruby/object:Gem::Requirement
|
583
|
-
requirements:
|
584
|
-
- - "~>"
|
588
|
+
- - "<"
|
585
589
|
- !ruby/object:Gem::Version
|
586
|
-
version: 0
|
590
|
+
version: '3.0'
|
587
591
|
- !ruby/object:Gem::Dependency
|
588
592
|
name: wmi-lite
|
589
593
|
requirement: !ruby/object:Gem::Requirement
|
@@ -632,14 +636,14 @@ dependencies:
|
|
632
636
|
requirements:
|
633
637
|
- - "~>"
|
634
638
|
- !ruby/object:Gem::Version
|
635
|
-
version: 0.
|
639
|
+
version: '0.3'
|
636
640
|
type: :runtime
|
637
641
|
prerelease: false
|
638
642
|
version_requirements: !ruby/object:Gem::Requirement
|
639
643
|
requirements:
|
640
644
|
- - "~>"
|
641
645
|
- !ruby/object:Gem::Version
|
642
|
-
version: 0.
|
646
|
+
version: '0.3'
|
643
647
|
description: A systems integration framework, built to bring the benefits of configuration
|
644
648
|
management to your entire infrastructure.
|
645
649
|
email: adam@chef.io
|
@@ -1894,6 +1898,7 @@ files:
|
|
1894
1898
|
- spec/data/windows_certificates/base64_test.cer
|
1895
1899
|
- spec/data/windows_certificates/othertest.cer
|
1896
1900
|
- spec/data/windows_certificates/test.cer
|
1901
|
+
- spec/data/windows_certificates/test.p7b
|
1897
1902
|
- spec/data/windows_certificates/test.pem
|
1898
1903
|
- spec/data/windows_certificates/test.pfx
|
1899
1904
|
- spec/functional/application_spec.rb
|