chef 17.10.95 → 17.10.114
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +5 -4
- data/chef.gemspec +3 -3
- data/lib/chef/client.rb +4 -3
- data/lib/chef/mixin/homebrew_user.rb +15 -5
- data/lib/chef/provider/package/zypper.rb +5 -0
- data/lib/chef/provider/service/windows.rb +1 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +1 -1
- data/lib/chef/resource/homebrew_cask.rb +7 -8
- data/lib/chef/resource/homebrew_package.rb +1 -1
- data/lib/chef/resource/homebrew_tap.rb +5 -5
- data/lib/chef/version.rb +1 -1
- data/spec/functional/resource/zypper_package_spec.rb +10 -0
- data/spec/unit/client_spec.rb +2 -2
- data/spec/unit/mixin/homebrew_user_spec.rb +30 -7
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +1 -1
- metadata +21 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9a67538138af0d5f0ffb36bab93c72df9698f2d6e01da4eebb2a1892b445329
|
4
|
+
data.tar.gz: 10055191565a3bbfa6eab934cd2a3a55094a5e7f5736c382de854b6d67478124
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7685875558fbdbdac49f1e4f10c5c5522b0bbe2ae08568493f677d3ce0286299b847f3ae64a6b79e4cfdcae5b1548966314ac09ad68e44289b831137db72740c
|
7
|
+
data.tar.gz: 3859034bb19e28b6dee0eb1814213c7027057b567aba33eb728b77b4a1611853bbfb5bf312828f54049236b462d35f5d10a5ba175ad7cda4c54045639a85b6a8
|
data/Gemfile
CHANGED
@@ -17,17 +17,18 @@ end
|
|
17
17
|
|
18
18
|
gem "cheffish", "~> 17.0.0"
|
19
19
|
|
20
|
+
gem "ast", "~> 2.4.2"
|
21
|
+
gem "rubocop-ast", ">= 1.30.0"
|
22
|
+
|
20
23
|
group(:omnibus_package) do
|
21
24
|
gem "appbundler"
|
22
25
|
gem "rb-readline"
|
23
|
-
gem "inspec-core-bin", "
|
26
|
+
gem "inspec-core-bin", "~> 5.22.36" # need to provide the binaries for inspec
|
24
27
|
gem "chef-vault"
|
25
28
|
end
|
26
29
|
|
27
30
|
group(:omnibus_package, :pry) do
|
28
|
-
|
29
|
-
# some work is ongoing? https://github.com/deivid-rodriguez/pry-byebug/issues/343
|
30
|
-
gem "pry", "= 0.13.0"
|
31
|
+
gem "pry", ">= 0.14.1"
|
31
32
|
# byebug does not install on freebsd on ruby 3.0
|
32
33
|
gem "pry-byebug" unless RUBY_PLATFORM.match?(/freebsd/i)
|
33
34
|
gem "pry-stack_explorer"
|
data/chef.gemspec
CHANGED
@@ -36,10 +36,10 @@ Gem::Specification.new do |s|
|
|
36
36
|
s.add_dependency "mixlib-shellout", ">= 3.1.1", "< 4.0"
|
37
37
|
s.add_dependency "mixlib-archive", ">= 0.4", "< 2.0"
|
38
38
|
s.add_dependency "ohai", "~> 17.0"
|
39
|
-
s.add_dependency "inspec-core", "
|
39
|
+
s.add_dependency "inspec-core", "~> 5.22.36"
|
40
40
|
|
41
|
-
s.add_dependency "ffi", "~> 1.15.
|
42
|
-
s.add_dependency "ffi-yajl", "
|
41
|
+
s.add_dependency "ffi", "~> 1.15.5"
|
42
|
+
s.add_dependency "ffi-yajl", ">= 2.2", "< 4.0"
|
43
43
|
s.add_dependency "net-sftp", ">= 2.1.2", "< 5.0" # remote_file resource
|
44
44
|
s.add_dependency "erubis", "~> 2.7" # template resource / cookbook syntax check
|
45
45
|
s.add_dependency "diff-lcs", ">= 1.2.4", "!= 1.4.0", "< 1.6.0" # 1.4 breaks output. Used in lib/chef/util/diff
|
data/lib/chef/client.rb
CHANGED
@@ -330,9 +330,10 @@ class Chef
|
|
330
330
|
new_date = eol_override
|
331
331
|
|
332
332
|
# We make a release every year so take the version you're on + 2006 and you get
|
333
|
-
# the year it goes EOL
|
334
|
-
eol_year = 2006 + Gem::Version.new(Chef::VERSION).segments.first
|
335
|
-
|
333
|
+
# the year it goes EOL. 1/8/2024 - EOL for Chef-17 is now November 1, 2024
|
334
|
+
# eol_year = 2006 + Gem::Version.new(Chef::VERSION).segments.first
|
335
|
+
eol_year = "2024"
|
336
|
+
cut_off_date = !!new_date ? Time.parse(new_date) : Time.new(eol_year, 11, 30)
|
336
337
|
|
337
338
|
return if Time.now < cut_off_date
|
338
339
|
|
@@ -57,18 +57,28 @@ class Chef
|
|
57
57
|
@homebrew_owner_username
|
58
58
|
end
|
59
59
|
|
60
|
+
def homebrew_bin_path(brew_bin_path = nil)
|
61
|
+
if brew_bin_path && ::File.exist?(brew_bin_path)
|
62
|
+
brew_bin_path
|
63
|
+
else
|
64
|
+
[which("brew"), "/opt/homebrew/bin/brew", "/usr/local/bin/brew", "/home/linuxbrew/.linuxbrew/bin/brew"].uniq.select do |x|
|
65
|
+
next if x == false
|
66
|
+
|
67
|
+
::File.exist?(x) && ::File.executable?(x)
|
68
|
+
end.first || nil
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
60
72
|
private
|
61
73
|
|
62
74
|
def calculate_owner
|
63
|
-
|
64
|
-
if
|
75
|
+
brew_path = homebrew_bin_path
|
76
|
+
if brew_path
|
65
77
|
# By default, this follows symlinks which is what we want
|
66
|
-
owner = ::File.stat(default_brew_path).uid
|
67
|
-
elsif (brew_path = shell_out("which brew").stdout.strip) && !brew_path.empty?
|
68
78
|
owner = ::File.stat(brew_path).uid
|
69
79
|
else
|
70
80
|
raise Chef::Exceptions::CannotDetermineHomebrewOwner,
|
71
|
-
'Could not find the "brew" executable
|
81
|
+
'Could not find the "brew" executable anywhere on the path.'
|
72
82
|
end
|
73
83
|
|
74
84
|
Chef::Log.debug "Found Homebrew owner #{Etc.getpwuid(owner).name}; executing `brew` commands as them"
|
@@ -93,6 +93,11 @@ class Chef
|
|
93
93
|
end
|
94
94
|
current_version ||= latest_version if is_installed
|
95
95
|
current_version
|
96
|
+
rescue Mixlib::ShellOut::ShellCommandFailed => e
|
97
|
+
# zypper returns a '104' code if info is called for a non-existent package
|
98
|
+
return nil if e.message =~ /'104'/
|
99
|
+
|
100
|
+
raise
|
96
101
|
end
|
97
102
|
|
98
103
|
def resolve_available_version(package_name, new_version)
|
@@ -74,6 +74,7 @@ class Chef::Provider::Service::Windows < Chef::Provider::Service
|
|
74
74
|
current_resource.run_as_user(config_info.service_start_name) if config_info.service_start_name
|
75
75
|
current_resource.display_name(config_info.display_name) if config_info.display_name
|
76
76
|
current_resource.delayed_start(current_delayed_start) if current_delayed_start
|
77
|
+
current_resource.description(config_info.description) if new_resource.description
|
77
78
|
end
|
78
79
|
|
79
80
|
current_resource
|
@@ -177,7 +177,7 @@ class Chef
|
|
177
177
|
}
|
178
178
|
|
179
179
|
unit["Service"]["ConditionACPower"] = "true" unless new_resource.run_on_battery
|
180
|
-
unit["Service"]["CPUQuota"] = new_resource.cpu_quota if new_resource.cpu_quota
|
180
|
+
unit["Service"]["CPUQuota"] = "#{new_resource.cpu_quota}%" if new_resource.cpu_quota
|
181
181
|
unit["Service"]["Environment"] = new_resource.environment.collect { |k, v| "\"#{k}=#{v}\"" } unless new_resource.environment.empty?
|
182
182
|
unit
|
183
183
|
end
|
@@ -46,25 +46,24 @@ class Chef
|
|
46
46
|
default: true
|
47
47
|
|
48
48
|
property :homebrew_path, String,
|
49
|
-
description: "The path to the homebrew binary."
|
50
|
-
default: "/usr/local/bin/brew"
|
49
|
+
description: "The path to the homebrew binary."
|
51
50
|
|
52
51
|
property :owner, [String, Integer],
|
53
52
|
description: "The owner of the Homebrew installation.",
|
54
53
|
default: lazy { find_homebrew_username },
|
55
|
-
default_description: "Calculated default username"
|
54
|
+
default_description: "Calculated default username"
|
56
55
|
|
57
56
|
action :install, description: "Install an application that is packaged as a Homebrew cask." do
|
58
57
|
if new_resource.install_cask
|
59
58
|
homebrew_tap "homebrew/cask" do
|
60
|
-
homebrew_path new_resource.homebrew_path
|
59
|
+
homebrew_path homebrew_bin_path(new_resource.homebrew_path)
|
61
60
|
owner new_resource.owner
|
62
61
|
end
|
63
62
|
end
|
64
63
|
|
65
64
|
unless casked?
|
66
65
|
converge_by("install cask #{new_resource.cask_name} #{new_resource.options}") do
|
67
|
-
shell_out!("#{new_resource.homebrew_path} install --cask #{new_resource.cask_name} #{new_resource.options}",
|
66
|
+
shell_out!("#{homebrew_bin_path(new_resource.homebrew_path)} install --cask #{new_resource.cask_name} #{new_resource.options}",
|
68
67
|
user: new_resource.owner,
|
69
68
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
70
69
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -75,14 +74,14 @@ class Chef
|
|
75
74
|
action :remove, description: "Remove an application that is packaged as a Homebrew cask." do
|
76
75
|
if new_resource.install_cask
|
77
76
|
homebrew_tap "homebrew/cask" do
|
78
|
-
homebrew_path new_resource.homebrew_path
|
77
|
+
homebrew_path homebrew_bin_path(new_resource.homebrew_path)
|
79
78
|
owner new_resource.owner
|
80
79
|
end
|
81
80
|
end
|
82
81
|
|
83
82
|
if casked?
|
84
83
|
converge_by("uninstall cask #{new_resource.cask_name}") do
|
85
|
-
shell_out!("#{new_resource.homebrew_path} uninstall --cask #{new_resource.cask_name}",
|
84
|
+
shell_out!("#{homebrew_bin_path(new_resource.homebrew_path)} uninstall --cask #{new_resource.cask_name}",
|
86
85
|
user: new_resource.owner,
|
87
86
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
88
87
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -100,7 +99,7 @@ class Chef
|
|
100
99
|
# @return [Boolean]
|
101
100
|
def casked?
|
102
101
|
unscoped_name = new_resource.cask_name.split("/").last
|
103
|
-
shell_out!("#{new_resource.homebrew_path} list --cask 2>/dev/null",
|
102
|
+
shell_out!("#{homebrew_bin_path(new_resource.homebrew_path)} list --cask 2>/dev/null",
|
104
103
|
user: new_resource.owner,
|
105
104
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
106
105
|
cwd: ::Dir.home(new_resource.owner)).stdout.split.include?(unscoped_name)
|
@@ -62,7 +62,7 @@ class Chef
|
|
62
62
|
DOC
|
63
63
|
|
64
64
|
property :homebrew_user, [ String, Integer ],
|
65
|
-
description: "The name or uid of the Homebrew owner to be used by #{ChefUtils::Dist::Infra::PRODUCT} when executing a command.\n\n#{ChefUtils::Dist::Infra::PRODUCT}, by default, will attempt to execute a Homebrew command as the owner of the `/usr/local/bin/brew` executable. If that executable does not exist, #{ChefUtils::Dist::Infra::PRODUCT} will attempt to find the user by executing `which brew`. If that executable cannot be found, #{ChefUtils::Dist::Infra::PRODUCT} will print an error message: `Could not find the 'brew' executable in /usr/local/bin or anywhere on the path.`.\n\nSet this property to specify the Homebrew owner for situations where Chef Infra Client cannot automatically detect the correct owner.'"
|
65
|
+
description: "The name or uid of the Homebrew owner to be used by #{ChefUtils::Dist::Infra::PRODUCT} when executing a command.\n\n#{ChefUtils::Dist::Infra::PRODUCT}, by default, will attempt to execute a Homebrew command as the owner of the `/usr/local/bin/brew` executable on x86_64 machines or `/opt/homebrew/bin/brew` executable on arm64 machines. If that executable does not exist, #{ChefUtils::Dist::Infra::PRODUCT} will attempt to find the user by executing `which brew`. If that executable cannot be found, #{ChefUtils::Dist::Infra::PRODUCT} will print an error message: `Could not find the 'brew' executable in /usr/local/bin, /opt/homebrew/bin, or anywhere on the path.`.\n\nSet this property to specify the Homebrew owner for situations where Chef Infra Client cannot automatically detect the correct owner.'"
|
66
66
|
|
67
67
|
end
|
68
68
|
end
|
@@ -42,8 +42,7 @@ class Chef
|
|
42
42
|
description: "The URL of the tap."
|
43
43
|
|
44
44
|
property :homebrew_path, String,
|
45
|
-
description: "The path to the Homebrew binary."
|
46
|
-
default: "/usr/local/bin/brew"
|
45
|
+
description: "The path to the Homebrew binary."
|
47
46
|
|
48
47
|
property :owner, String,
|
49
48
|
description: "The owner of the Homebrew installation.",
|
@@ -53,7 +52,7 @@ class Chef
|
|
53
52
|
action :tap, description: "Add a Homebrew tap." do
|
54
53
|
unless tapped?(new_resource.tap_name)
|
55
54
|
converge_by("tap #{new_resource.tap_name}") do
|
56
|
-
shell_out!("#{new_resource.homebrew_path} tap #{new_resource.tap_name} #{new_resource.url || ""}",
|
55
|
+
shell_out!("#{homebrew_bin_path(new_resource.homebrew_path)} tap #{new_resource.tap_name} #{new_resource.url || ""}",
|
57
56
|
user: new_resource.owner,
|
58
57
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
59
58
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -64,7 +63,7 @@ class Chef
|
|
64
63
|
action :untap, description: "Remove a Homebrew tap." do
|
65
64
|
if tapped?(new_resource.tap_name)
|
66
65
|
converge_by("untap #{new_resource.tap_name}") do
|
67
|
-
shell_out!("#{new_resource.homebrew_path} untap #{new_resource.tap_name}",
|
66
|
+
shell_out!("#{homebrew_bin_path(new_resource.homebrew_path)} untap #{new_resource.tap_name}",
|
68
67
|
user: new_resource.owner,
|
69
68
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
70
69
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -76,8 +75,9 @@ class Chef
|
|
76
75
|
#
|
77
76
|
# @return [Boolean]
|
78
77
|
def tapped?(name)
|
78
|
+
base_path = ["#{::File.dirname(which("brew"))}/../homebrew", "#{::File.dirname(which("brew"))}/../Homebrew", "/opt/homebrew", "/usr/local/Homebrew", "/home/linuxbrew/.linuxbrew"].uniq.select { |x| Dir.exist?(x) }.first
|
79
79
|
tap_dir = name.gsub("/", "/homebrew-")
|
80
|
-
::File.directory?("/
|
80
|
+
::File.directory?("#{base_path}/Library/Taps/#{tap_dir}")
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|
data/lib/chef/version.rb
CHANGED
@@ -177,6 +177,15 @@ describe Chef::Resource::ZypperPackage, :requires_root, :suse_only do
|
|
177
177
|
expect(zypper_package.updated_by_last_action?).to be true
|
178
178
|
expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
|
179
179
|
end
|
180
|
+
|
181
|
+
context "Package doesn't exist" do
|
182
|
+
let(:package_name) { "nonexistent_repo" }
|
183
|
+
it "does nothing if the package is not installed" do
|
184
|
+
zypper_package.run_action(:remove)
|
185
|
+
expect(zypper_package.updated_by_last_action?).to be false
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
180
189
|
end
|
181
190
|
|
182
191
|
context "with no available version" do
|
@@ -247,6 +256,7 @@ describe Chef::Resource::ZypperPackage, :requires_root, :suse_only do
|
|
247
256
|
expect(shell_out("zypper locks | grep chef_rpm_provides").stdout.chomp).not_to match("chef_rpm_provides")
|
248
257
|
end
|
249
258
|
end
|
259
|
+
|
250
260
|
def remove_package
|
251
261
|
pkg_to_remove = Chef::Resource::ZypperPackage.new(package_name, run_context)
|
252
262
|
pkg_to_remove.run_action(:remove)
|
data/spec/unit/client_spec.rb
CHANGED
@@ -313,9 +313,9 @@ describe Chef::Client do
|
|
313
313
|
stub_const("Chef::VERSION", 15)
|
314
314
|
# added a call to client because Time.now gets invoked multiple times during instantiation. Don't mock Time until after client initialized
|
315
315
|
client
|
316
|
-
expect(Time).to receive(:now).and_return(Time.new(
|
316
|
+
expect(Time).to receive(:now).and_return(Time.new(2024, 12, 1, 5))
|
317
317
|
allow(client).to receive(:eol_override).and_return(false)
|
318
|
-
expect(logger).to receive(:warn).with("This release of Chef Infra Client became end of life (EOL) on
|
318
|
+
expect(logger).to receive(:warn).with("This release of Chef Infra Client became end of life (EOL) on Nov 30, 2024. Please update to a supported release to receive new features, bug fixes, and security updates.")
|
319
319
|
client.warn_if_eol
|
320
320
|
end
|
321
321
|
|
@@ -47,6 +47,8 @@ describe Chef::Mixin::HomebrewUser do
|
|
47
47
|
let(:user) { nil }
|
48
48
|
let(:brew_owner) { 2001 }
|
49
49
|
let(:default_brew_path) { "/usr/local/bin/brew" }
|
50
|
+
let(:default_brew_path_arm) { "/opt/homebrew/bin/brew" }
|
51
|
+
let(:default_brew_path_linux) { "/home/linuxbrew/.linuxbrew/bin/brew" }
|
50
52
|
let(:stat_double) do
|
51
53
|
d = double
|
52
54
|
expect(d).to receive(:uid).and_return(brew_owner)
|
@@ -59,16 +61,38 @@ describe Chef::Mixin::HomebrewUser do
|
|
59
61
|
expect(Etc).to receive(:getpwuid).with(brew_owner).and_return(OpenStruct.new(name: "name"))
|
60
62
|
end
|
61
63
|
|
62
|
-
|
63
|
-
|
64
|
-
|
64
|
+
def false_unless_specific_value(object, method, value)
|
65
|
+
allow(object).to receive(method).and_return(false)
|
66
|
+
allow(object).to receive(method).with(value).and_return(true)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "returns the owner of the brew executable when it is at a default location for x86_64 machines" do
|
70
|
+
false_unless_specific_value(File, :exist?, default_brew_path)
|
71
|
+
false_unless_specific_value(File, :executable?, default_brew_path)
|
72
|
+
allow(File).to receive(:stat).with(default_brew_path).and_return(stat_double)
|
73
|
+
expect(homebrew_user.find_homebrew_uid(user)).to eq(brew_owner)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "returns the owner of the brew executable when it is at a default location for arm machines" do
|
77
|
+
false_unless_specific_value(File, :exist?, default_brew_path_arm)
|
78
|
+
false_unless_specific_value(File, :executable?, default_brew_path_arm)
|
79
|
+
allow(File).to receive(:stat).with(default_brew_path_arm).and_return(stat_double)
|
80
|
+
expect(homebrew_user.find_homebrew_uid(user)).to eq(brew_owner)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "returns the owner of the brew executable when it is at a default location for linux machines" do
|
84
|
+
false_unless_specific_value(File, :exist?, default_brew_path_linux)
|
85
|
+
false_unless_specific_value(File, :executable?, default_brew_path_linux)
|
86
|
+
allow(File).to receive(:stat).with(default_brew_path_linux).and_return(stat_double)
|
65
87
|
expect(homebrew_user.find_homebrew_uid(user)).to eq(brew_owner)
|
66
88
|
end
|
67
89
|
|
68
90
|
it "returns the owner of the brew executable when it is not at a default location" do
|
69
|
-
|
91
|
+
allow_any_instance_of(ExampleHomebrewUser).to receive(:which).and_return("/foo")
|
92
|
+
false_unless_specific_value(File, :exist?, "/foo")
|
93
|
+
false_unless_specific_value(File, :executable?, "/foo")
|
70
94
|
allow(homebrew_user).to receive_message_chain(:shell_out, :stdout, :strip).and_return("/foo")
|
71
|
-
|
95
|
+
allow(File).to receive(:stat).with("/foo").and_return(stat_double)
|
72
96
|
expect(homebrew_user.find_homebrew_uid(user)).to eq(brew_owner)
|
73
97
|
end
|
74
98
|
|
@@ -78,8 +102,7 @@ describe Chef::Mixin::HomebrewUser do
|
|
78
102
|
describe "when the homebrew user is not provided" do
|
79
103
|
|
80
104
|
it "raises an error if no executable is found" do
|
81
|
-
expect(File).to receive(:exist?).
|
82
|
-
allow(homebrew_user).to receive_message_chain(:shell_out, :stdout, :strip).and_return("")
|
105
|
+
expect(File).to receive(:exist?).and_return(nil).at_least(:once)
|
83
106
|
expect { homebrew_user.find_homebrew_uid(user) }.to raise_error(Chef::Exceptions::CannotDetermineHomebrewOwner)
|
84
107
|
end
|
85
108
|
|
@@ -102,7 +102,7 @@ describe Chef::Resource::ChefClientSystemdTimer do
|
|
102
102
|
|
103
103
|
it "sets CPUQuota if cpu_quota property is set" do
|
104
104
|
resource.cpu_quota 50
|
105
|
-
expect(provider.service_content["Service"]["CPUQuota"]).to eq(50)
|
105
|
+
expect(provider.service_content["Service"]["CPUQuota"]).to eq("50%")
|
106
106
|
end
|
107
107
|
end
|
108
108
|
end
|
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: 17.10.
|
4
|
+
version: 17.10.114
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Jacob
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-config
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 17.10.
|
19
|
+
version: 17.10.114
|
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: 17.10.
|
26
|
+
version: 17.10.114
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: chef-utils
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 17.10.
|
33
|
+
version: 17.10.114
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 17.10.
|
40
|
+
version: 17.10.114
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: train-core
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -204,44 +204,50 @@ dependencies:
|
|
204
204
|
name: inspec-core
|
205
205
|
requirement: !ruby/object:Gem::Requirement
|
206
206
|
requirements:
|
207
|
-
- - "
|
207
|
+
- - "~>"
|
208
208
|
- !ruby/object:Gem::Version
|
209
|
-
version:
|
209
|
+
version: 5.22.36
|
210
210
|
type: :runtime
|
211
211
|
prerelease: false
|
212
212
|
version_requirements: !ruby/object:Gem::Requirement
|
213
213
|
requirements:
|
214
|
-
- - "
|
214
|
+
- - "~>"
|
215
215
|
- !ruby/object:Gem::Version
|
216
|
-
version:
|
216
|
+
version: 5.22.36
|
217
217
|
- !ruby/object:Gem::Dependency
|
218
218
|
name: ffi
|
219
219
|
requirement: !ruby/object:Gem::Requirement
|
220
220
|
requirements:
|
221
221
|
- - "~>"
|
222
222
|
- !ruby/object:Gem::Version
|
223
|
-
version: 1.15.
|
223
|
+
version: 1.15.5
|
224
224
|
type: :runtime
|
225
225
|
prerelease: false
|
226
226
|
version_requirements: !ruby/object:Gem::Requirement
|
227
227
|
requirements:
|
228
228
|
- - "~>"
|
229
229
|
- !ruby/object:Gem::Version
|
230
|
-
version: 1.15.
|
230
|
+
version: 1.15.5
|
231
231
|
- !ruby/object:Gem::Dependency
|
232
232
|
name: ffi-yajl
|
233
233
|
requirement: !ruby/object:Gem::Requirement
|
234
234
|
requirements:
|
235
|
-
- - "
|
235
|
+
- - ">="
|
236
236
|
- !ruby/object:Gem::Version
|
237
237
|
version: '2.2'
|
238
|
+
- - "<"
|
239
|
+
- !ruby/object:Gem::Version
|
240
|
+
version: '4.0'
|
238
241
|
type: :runtime
|
239
242
|
prerelease: false
|
240
243
|
version_requirements: !ruby/object:Gem::Requirement
|
241
244
|
requirements:
|
242
|
-
- - "
|
245
|
+
- - ">="
|
243
246
|
- !ruby/object:Gem::Version
|
244
247
|
version: '2.2'
|
248
|
+
- - "<"
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '4.0'
|
245
251
|
- !ruby/object:Gem::Dependency
|
246
252
|
name: net-sftp
|
247
253
|
requirement: !ruby/object:Gem::Requirement
|
@@ -2388,7 +2394,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
2388
2394
|
- !ruby/object:Gem::Version
|
2389
2395
|
version: '0'
|
2390
2396
|
requirements: []
|
2391
|
-
rubygems_version: 3.2.
|
2397
|
+
rubygems_version: 3.2.32
|
2392
2398
|
signing_key:
|
2393
2399
|
specification_version: 4
|
2394
2400
|
summary: A systems integration framework, built to bring the benefits of configuration
|