chef 18.8.54 → 18.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/chef.gemspec +1 -2
- data/lib/chef/file_access_control/unix.rb +27 -24
- data/lib/chef/provider/file.rb +8 -7
- data/lib/chef/recipe.rb +3 -1
- data/lib/chef/version.rb +1 -1
- metadata +12 -26
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8a1de7dd02696d84d680c3851565ec4837ca0275cc4cc153d39bde72eea4f2be
|
|
4
|
+
data.tar.gz: 5e8ac13c389d7e024108b626f935d11c092a120fd857ac5200fc13fafcc1a5d2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cc96321c5e4d51febea1aec696accb358d3219a31e142c00b5c7255501682f98f098de20ae2e720ac9fbb4c13991a3692614262585ed4dde34ce2b2eb7830bb7
|
|
7
|
+
data.tar.gz: 8d35f965f1f382983b098dce2a7302684cd2273523ea03b07a1a66c5183f70bda24bcabfd4056c8c9bc7ca5eeb7c698ed92e70826703e760b5927b4a06af1055
|
data/chef.gemspec
CHANGED
|
@@ -31,7 +31,6 @@ Gem::Specification.new do |s|
|
|
|
31
31
|
s.required_ruby_version = ">= 3.1.0"
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
s.add_dependency "activesupport", ">= 4.2.7.1", "<= 7.1.5.2"
|
|
35
34
|
s.add_dependency "chef-config", "= #{Chef::VERSION}"
|
|
36
35
|
s.add_dependency "chef-utils", "= #{Chef::VERSION}"
|
|
37
36
|
s.add_dependency "train-core", "~> 3.13", ">= 3.13.4"
|
|
@@ -60,7 +59,7 @@ Gem::Specification.new do |s|
|
|
|
60
59
|
s.add_dependency "erubis", "~> 2.7" # template resource / cookbook syntax check
|
|
61
60
|
s.add_dependency "diff-lcs", ">= 1.2.4", "!= 1.4.0", "< 1.6.0" # 1.4 breaks output. Used in lib/chef/util/diff
|
|
62
61
|
s.add_dependency "ffi-libarchive", "~> 1.0", ">= 1.0.3" # archive_file resource
|
|
63
|
-
s.add_dependency "chef-zero", ">= 15.0.21"
|
|
62
|
+
s.add_dependency "chef-zero", ">= 15.0.21", "< 15.2"
|
|
64
63
|
s.add_dependency "chef-vault" # chef-vault resources and helpers
|
|
65
64
|
|
|
66
65
|
s.add_dependency "plist", "~> 3.2" # launchd, dscl/mac user, macos_userdefaults, osx_profile and plist resources
|
|
@@ -77,15 +77,15 @@ class Chef
|
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
def should_update_owner?
|
|
80
|
-
if target_uid.nil?
|
|
80
|
+
if (target = target_uid).nil?
|
|
81
81
|
# the user has not specified a permission on the new resource, so we never manage it with FAC
|
|
82
82
|
Chef::Log.trace("Found target_uid == nil, so no owner was specified on resource, not managing owner")
|
|
83
83
|
false
|
|
84
|
-
elsif current_uid.nil?
|
|
84
|
+
elsif (current = current_uid).nil?
|
|
85
85
|
# the user has specified a permission, and we are creating a file, so always enforce permissions
|
|
86
86
|
Chef::Log.trace("Found current_uid == nil, so we are creating a new file, updating owner")
|
|
87
87
|
true
|
|
88
|
-
elsif
|
|
88
|
+
elsif target != current
|
|
89
89
|
# the user has specified a permission, and it does not match the file, so fix the permission
|
|
90
90
|
Chef::Log.trace("Found target_uid != current_uid, updating owner")
|
|
91
91
|
true
|
|
@@ -117,15 +117,16 @@ class Chef
|
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
def gid_from_resource(resource)
|
|
120
|
-
|
|
120
|
+
group = resource&.group
|
|
121
|
+
return nil if group.nil?
|
|
121
122
|
|
|
122
|
-
if
|
|
123
|
-
diminished_radix_complement( Etc.getgrnam(
|
|
123
|
+
if group.is_a?(String)
|
|
124
|
+
diminished_radix_complement( Etc.getgrnam(group).gid )
|
|
124
125
|
elsif resource.group.is_a?(Integer)
|
|
125
|
-
|
|
126
|
+
group
|
|
126
127
|
else
|
|
127
|
-
Chef::Log.error("The `group` parameter of the #{@resource} resource is set to an invalid value (#{
|
|
128
|
-
raise ArgumentError, "cannot resolve #{
|
|
128
|
+
Chef::Log.error("The `group` parameter of the #{@resource} resource is set to an invalid value (#{group.inspect})")
|
|
129
|
+
raise ArgumentError, "cannot resolve #{group.inspect} to gid, group must be a string or integer"
|
|
129
130
|
end
|
|
130
131
|
rescue ArgumentError
|
|
131
132
|
provider.requirements.assert(:create, :create_if_missing, :touch) do |a|
|
|
@@ -137,15 +138,15 @@ class Chef
|
|
|
137
138
|
end
|
|
138
139
|
|
|
139
140
|
def should_update_group?
|
|
140
|
-
if target_gid.nil?
|
|
141
|
+
if (target = target_gid).nil?
|
|
141
142
|
# the user has not specified a permission on the new resource, so we never manage it with FAC
|
|
142
143
|
Chef::Log.trace("Found target_gid == nil, so no group was specified on resource, not managing group")
|
|
143
144
|
false
|
|
144
|
-
elsif current_gid.nil?
|
|
145
|
+
elsif (current = current_gid).nil?
|
|
145
146
|
# the user has specified a permission, and we are creating a file, so always enforce permissions
|
|
146
147
|
Chef::Log.trace("Found current_gid == nil, so we are creating a new file, updating group")
|
|
147
148
|
true
|
|
148
|
-
elsif
|
|
149
|
+
elsif target != current
|
|
149
150
|
# the user has specified a permission, and it does not match the file, so fix the permission
|
|
150
151
|
Chef::Log.trace("Found target_gid != current_gid, updating group")
|
|
151
152
|
true
|
|
@@ -169,9 +170,10 @@ class Chef
|
|
|
169
170
|
end
|
|
170
171
|
|
|
171
172
|
def mode_from_resource(res)
|
|
172
|
-
|
|
173
|
+
mode = res&.mode
|
|
174
|
+
return nil if mode.nil?
|
|
173
175
|
|
|
174
|
-
(
|
|
176
|
+
(mode.respond_to?(:oct) ? mode.oct : mode.to_i) & 007777
|
|
175
177
|
end
|
|
176
178
|
|
|
177
179
|
def target_mode
|
|
@@ -187,15 +189,15 @@ class Chef
|
|
|
187
189
|
end
|
|
188
190
|
|
|
189
191
|
def should_update_mode?
|
|
190
|
-
if target_mode.nil?
|
|
192
|
+
if (target = target_mode).nil?
|
|
191
193
|
# the user has not specified a permission on the new resource, so we never manage it with FAC
|
|
192
194
|
Chef::Log.trace("Found target_mode == nil, so no mode was specified on resource, not managing mode")
|
|
193
195
|
false
|
|
194
|
-
elsif current_mode.nil?
|
|
196
|
+
elsif (current = current_mode).nil?
|
|
195
197
|
# the user has specified a permission, and we are creating a file, so always enforce permissions
|
|
196
198
|
Chef::Log.trace("Found current_mode == nil, so we are creating a new file, updating mode")
|
|
197
199
|
true
|
|
198
|
-
elsif
|
|
200
|
+
elsif target != current
|
|
199
201
|
# the user has specified a permission, and it does not match the file, so fix the permission
|
|
200
202
|
Chef::Log.trace("Found target_mode != current_mode, updating mode")
|
|
201
203
|
true
|
|
@@ -266,15 +268,16 @@ class Chef
|
|
|
266
268
|
end
|
|
267
269
|
|
|
268
270
|
def uid_from_resource(resource)
|
|
269
|
-
|
|
271
|
+
owner = resource&.owner
|
|
272
|
+
return nil if owner.nil?
|
|
270
273
|
|
|
271
|
-
if
|
|
272
|
-
diminished_radix_complement( Etc.getpwnam(
|
|
273
|
-
elsif
|
|
274
|
-
|
|
274
|
+
if owner.is_a?(String)
|
|
275
|
+
diminished_radix_complement( Etc.getpwnam(owner).uid )
|
|
276
|
+
elsif owner.is_a?(Integer)
|
|
277
|
+
owner
|
|
275
278
|
else
|
|
276
|
-
Chef::Log.error("The `owner` parameter of the #{@resource} resource is set to an invalid value (#{
|
|
277
|
-
raise ArgumentError, "cannot resolve #{
|
|
279
|
+
Chef::Log.error("The `owner` parameter of the #{@resource} resource is set to an invalid value (#{owner.inspect})")
|
|
280
|
+
raise ArgumentError, "cannot resolve #{owner.inspect} to uid, owner must be a string or integer"
|
|
278
281
|
end
|
|
279
282
|
rescue ArgumentError
|
|
280
283
|
provider.requirements.assert(:create, :create_if_missing, :touch) do |a|
|
data/lib/chef/provider/file.rb
CHANGED
|
@@ -70,32 +70,33 @@ class Chef
|
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
def load_current_resource
|
|
73
|
+
new_resource_path = new_resource.path
|
|
73
74
|
# true if there is a symlink and we need to manage what it points at
|
|
74
|
-
@managing_symlink = file_class.symlink?(
|
|
75
|
+
@managing_symlink = file_class.symlink?(new_resource_path) && ( new_resource.manage_symlink_source || new_resource.manage_symlink_source.nil? )
|
|
75
76
|
|
|
76
77
|
# true if there is a non-file thing in the way that we need to unlink first
|
|
77
78
|
@needs_unlinking =
|
|
78
|
-
if ::File.exist?(
|
|
79
|
+
if ::File.exist?(new_resource_path)
|
|
79
80
|
if managing_symlink?
|
|
80
|
-
!symlink_to_real_file?(
|
|
81
|
+
!symlink_to_real_file?(new_resource_path)
|
|
81
82
|
else
|
|
82
|
-
!real_file?(
|
|
83
|
+
!real_file?(new_resource_path)
|
|
83
84
|
end
|
|
84
85
|
else
|
|
85
86
|
false
|
|
86
87
|
end
|
|
87
88
|
|
|
88
89
|
# true if we are going to be creating a new file
|
|
89
|
-
@needs_creating = !::File.exist?(
|
|
90
|
+
@needs_creating = !::File.exist?(new_resource_path) || needs_unlinking?
|
|
90
91
|
|
|
91
92
|
# Let children resources override constructing the current_resource
|
|
92
93
|
@current_resource ||= Chef::Resource::File.new(new_resource.name)
|
|
93
|
-
current_resource.path(
|
|
94
|
+
current_resource.path(new_resource_path)
|
|
94
95
|
|
|
95
96
|
unless needs_creating?
|
|
96
97
|
# we are updating an existing file
|
|
97
98
|
if managing_content?
|
|
98
|
-
logger.trace("#{new_resource} checksumming file at #{
|
|
99
|
+
logger.trace("#{new_resource} checksumming file at #{new_resource_path}.")
|
|
99
100
|
current_resource.checksum(checksum(current_resource.path))
|
|
100
101
|
else
|
|
101
102
|
# if the file does not exist or is not a file, then the checksum is invalid/pointless
|
data/lib/chef/recipe.rb
CHANGED
|
@@ -83,7 +83,9 @@ class Chef
|
|
|
83
83
|
self.source_file = filename
|
|
84
84
|
if File.file?(filename) && File.readable?(filename)
|
|
85
85
|
yaml_contents = IO.read(filename)
|
|
86
|
-
|
|
86
|
+
# Count document separators instead of using unsafe load_stream
|
|
87
|
+
doc_count = yaml_contents.scan(/^---\s*$/).length
|
|
88
|
+
if doc_count > 1
|
|
87
89
|
raise ArgumentError, "YAML recipe '#{filename}' contains multiple documents, only one is supported"
|
|
88
90
|
end
|
|
89
91
|
|
data/lib/chef/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,63 +1,43 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chef
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 18.
|
|
4
|
+
version: 18.9.4
|
|
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: 2026-01-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: activesupport
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: 4.2.7.1
|
|
20
|
-
- - "<="
|
|
21
|
-
- !ruby/object:Gem::Version
|
|
22
|
-
version: 7.1.5.2
|
|
23
|
-
type: :runtime
|
|
24
|
-
prerelease: false
|
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
-
requirements:
|
|
27
|
-
- - ">="
|
|
28
|
-
- !ruby/object:Gem::Version
|
|
29
|
-
version: 4.2.7.1
|
|
30
|
-
- - "<="
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: 7.1.5.2
|
|
33
13
|
- !ruby/object:Gem::Dependency
|
|
34
14
|
name: chef-config
|
|
35
15
|
requirement: !ruby/object:Gem::Requirement
|
|
36
16
|
requirements:
|
|
37
17
|
- - '='
|
|
38
18
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 18.
|
|
19
|
+
version: 18.9.4
|
|
40
20
|
type: :runtime
|
|
41
21
|
prerelease: false
|
|
42
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
23
|
requirements:
|
|
44
24
|
- - '='
|
|
45
25
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 18.
|
|
26
|
+
version: 18.9.4
|
|
47
27
|
- !ruby/object:Gem::Dependency
|
|
48
28
|
name: chef-utils
|
|
49
29
|
requirement: !ruby/object:Gem::Requirement
|
|
50
30
|
requirements:
|
|
51
31
|
- - '='
|
|
52
32
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: 18.
|
|
33
|
+
version: 18.9.4
|
|
54
34
|
type: :runtime
|
|
55
35
|
prerelease: false
|
|
56
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
37
|
requirements:
|
|
58
38
|
- - '='
|
|
59
39
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: 18.
|
|
40
|
+
version: 18.9.4
|
|
61
41
|
- !ruby/object:Gem::Dependency
|
|
62
42
|
name: train-core
|
|
63
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -395,6 +375,9 @@ dependencies:
|
|
|
395
375
|
- - ">="
|
|
396
376
|
- !ruby/object:Gem::Version
|
|
397
377
|
version: 15.0.21
|
|
378
|
+
- - "<"
|
|
379
|
+
- !ruby/object:Gem::Version
|
|
380
|
+
version: '15.2'
|
|
398
381
|
type: :runtime
|
|
399
382
|
prerelease: false
|
|
400
383
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -402,6 +385,9 @@ dependencies:
|
|
|
402
385
|
- - ">="
|
|
403
386
|
- !ruby/object:Gem::Version
|
|
404
387
|
version: 15.0.21
|
|
388
|
+
- - "<"
|
|
389
|
+
- !ruby/object:Gem::Version
|
|
390
|
+
version: '15.2'
|
|
405
391
|
- !ruby/object:Gem::Dependency
|
|
406
392
|
name: chef-vault
|
|
407
393
|
requirement: !ruby/object:Gem::Requirement
|