chef 19.2.12 → 19.3.14

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +11 -16
  3. data/README.md +6 -1
  4. data/Rakefile +1 -0
  5. data/chef-universal-mingw-ucrt.gemspec +9 -2
  6. data/chef.gemspec +18 -8
  7. data/lib/chef/application/client.rb +7 -1
  8. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +1 -1
  9. data/lib/chef/client.rb +22 -4
  10. data/lib/chef/compliance/runner.rb +19 -1
  11. data/lib/chef/cookbook/gem_installer.rb +1 -1
  12. data/lib/chef/cookbook_uploader.rb +1 -1
  13. data/lib/chef/dsl/rest_resource.rb +63 -12
  14. data/lib/chef/file_access_control/windows.rb +6 -0
  15. data/lib/chef/file_access_control.rb +12 -1
  16. data/lib/chef/handler/slow_report.rb +3 -4
  17. data/lib/chef/licensing.rb +26 -6
  18. data/lib/chef/node.rb +13 -1
  19. data/lib/chef/policy_builder/expand_node_object.rb +12 -1
  20. data/lib/chef/policy_builder/policyfile.rb +12 -0
  21. data/lib/chef/property.rb +1 -1
  22. data/lib/chef/provider/file/content.rb +3 -2
  23. data/lib/chef/provider/file.rb +5 -2
  24. data/lib/chef/provider/ifconfig/redhat.rb +1 -1
  25. data/lib/chef/provider/package/dnf/dnf_helper.py +355 -65
  26. data/lib/chef/provider/package/dnf/python_helper.rb +6 -3
  27. data/lib/chef/provider/package/dnf.rb +24 -5
  28. data/lib/chef/provider/package/yum.rb +1 -1
  29. data/lib/chef/provider/package/yum_tm.rb +1 -1
  30. data/lib/chef/resource/_rest_resource.rb +4 -2
  31. data/lib/chef/resource/build_essential.rb +10 -1
  32. data/lib/chef/resource/execute.rb +0 -15
  33. data/lib/chef/resource/yum_package.rb +1 -1
  34. data/lib/chef/target_io/support.rb +1 -1
  35. data/lib/chef/target_io/train/dir.rb +1 -1
  36. data/lib/chef/target_io/train/file.rb +5 -5
  37. data/lib/chef/target_io/train/fileutils.rb +1 -1
  38. data/lib/chef/version.rb +1 -1
  39. data/lib/chef/win32/version.rb +17 -16
  40. metadata +37 -13
@@ -38,7 +38,7 @@ class Chef
38
38
  use_package_name_for_source
39
39
  use_magic_version
40
40
 
41
- provides :package, platform_family: "fedora_derived"
41
+ provides :package, platform_family: %w{fedora rhel amazon}
42
42
 
43
43
  provides :yum_package
44
44
 
@@ -21,7 +21,7 @@ class Chef
21
21
  class Provider
22
22
  class Package
23
23
  class YumTM < Chef::Provider::Package::Yum
24
- provides :package, platform_family: "fedora_derived", target_mode: true, agent_mode: false
24
+ provides :package, platform_family: %w{fedora rhel amazon}, target_mode: true, agent_mode: false
25
25
  provides :yum_package, target_mode: true, agent_mode: false
26
26
 
27
27
  def load_current_resource
@@ -300,15 +300,17 @@ action_class do
300
300
  end
301
301
 
302
302
  def rest_url_collection
303
- current_resource.class.rest_api_collection
303
+ endpoint = current_resource.class.rest_api_endpoint || ""
304
+ "#{endpoint}#{current_resource.class.rest_api_collection}"
304
305
  end
305
306
 
306
307
  #
307
308
  # Resource document URL after RFC 6570 template evaluation via properties substitution
308
309
  #
309
310
  def rest_url_document
311
+ endpoint = current_resource.class.rest_api_endpoint || ""
310
312
  template = ::Addressable::Template.new(current_resource.class.rest_api_document)
311
- template.expand(property_map).to_s
313
+ "#{endpoint}#{template.expand(property_map)}"
312
314
  end
313
315
 
314
316
  #
@@ -61,7 +61,16 @@ class Chef
61
61
  when debian?
62
62
  package %w{ autoconf binutils-doc bison build-essential flex gettext ncurses-dev }
63
63
  when fedora_derived?
64
- package %w{ autoconf bison flex gcc gcc-c++ gettext kernel-devel make m4 ncurses-devel patch }
64
+ package %w{ autoconf bison flex gcc gcc-c++ gettext make m4 ncurses-devel patch }
65
+ # kernel-devel is installed separately with ignore_failure because dnf
66
+ # version-pins it to the running kernel, which may not be available in
67
+ # repos (e.g. Docker containers where the host kernel differs from the
68
+ # guest userland). We cannot use the --skip-unavailable option here
69
+ # because dnf5 (Fedora 42+) requires it after the subcommand, but
70
+ # Chef's dnf_package provider places options before it.
71
+ package "kernel-devel" do
72
+ ignore_failure true
73
+ end
65
74
  when freebsd?
66
75
  package "devel/gmake"
67
76
  package "devel/autoconf"
@@ -388,21 +388,6 @@ class Chef
388
388
  end
389
389
  ```
390
390
 
391
- **Run a Knife command**:
392
-
393
- ```ruby
394
- execute 'create_user' do
395
- command <<~EOM
396
- knife user create \#{user}
397
- --admin
398
- --password password
399
- --disable-editing
400
- --file /home/vagrant/.chef/user.pem
401
- --config /tmp/knife-admin.rb
402
- EOM
403
- end
404
- ```
405
-
406
391
  **Run install command into virtual environment**:
407
392
 
408
393
  The following example shows how to install a lightweight JavaScript framework
@@ -24,7 +24,7 @@ class Chef
24
24
  class YumPackage < Chef::Resource::Package
25
25
 
26
26
  provides :yum_package, target_mode: true
27
- provides :package, platform_family: "fedora_derived"
27
+ provides :package, platform_family: %w{fedora rhel amazon}
28
28
  target_mode support: :full
29
29
 
30
30
  description "Use the **yum_package** resource to install, upgrade, and remove packages with Yum for the Red Hat and CentOS platforms. The yum_package resource is able to resolve `provides` data for packages much like Yum can do when it is run from the command line. This allows a variety of options for installing packages, like minimum versions, virtual provides, and library names. Note: Support for using file names to install packages (as in `yum_package '/bin/sh'`) is not available because the volume of data required to parse for this is excessive."
@@ -20,7 +20,7 @@ module TargetIO
20
20
 
21
21
  def write_file(remote_file, content)
22
22
  tempfile = ::Tempfile.new
23
- tempfile.write(tempfile, content)
23
+ tempfile.write(content)
24
24
  tempfile.close
25
25
 
26
26
  upload(tempfile.path, remote_file)
@@ -33,7 +33,7 @@ module TargetIO
33
33
  pattern = Array(pattern)
34
34
  matchdot = flags || ::File::FNM_DOTMATCH ? "dotglob" : ""
35
35
 
36
- cmd += <<-BASH4
36
+ cmd = <<-BASH4
37
37
  shopt -s globstar #{matchdot}
38
38
  cd #{base}
39
39
  for f in #{pattern.join(" ")}; do
@@ -14,7 +14,7 @@ module TargetIO
14
14
  end
15
15
 
16
16
  def binread(name, length = nil, offset = 0)
17
- content = read(file_name)
17
+ content = read(name)
18
18
  length = content.size - offset if length.nil?
19
19
 
20
20
  content[offset, length]
@@ -142,14 +142,14 @@ module TargetIO
142
142
  end
143
143
 
144
144
  def tempfile(filename)
145
- tempdir = ::TargetIO::Dir.mktmpdir(path)
145
+ tempdir = ::TargetIO::Dir.mktmpdir(filename)
146
146
  ::File.join(tempdir, filename)
147
147
  end
148
148
 
149
149
  # passthrough or map calls to third parties
150
150
  def method_missing(m, *args, **kwargs, &block)
151
- nonio = %i{extname join dirname path split}
152
- passthru = %i{basename directory? exist? exists? file? path pipe? socket? symlink?}
151
+ nonio = %i{extname join dirname basename path split}
152
+ passthru = %i{directory? exist? exists? file? path pipe? socket? symlink?}
153
153
  redirect_train = {
154
154
  blockdev?: :block_device?,
155
155
  chardev?: :character_device?,
@@ -207,7 +207,7 @@ module TargetIO
207
207
  file_name, other_args = args[0], args[1..]
208
208
 
209
209
  file = transport_connection.file(file_name)
210
- file.send(redirect[m], *other_args, **kwargs) # TODO: pass block
210
+ file.send(redirect_train[m], *other_args, **kwargs) # TODO: pass block
211
211
 
212
212
  else
213
213
  raise "Unsupported File method #{m}"
@@ -77,7 +77,7 @@ module TargetIO
77
77
  def install(src, dest, mode: nil, owner: nil, group: nil, preserve: nil, noop: nil, verbose: nil)
78
78
  cmd = "install -c"
79
79
  cmd << " -p" if preserve
80
- cmd << " -m " << mode_to_s(mode) if mode
80
+ cmd << " -m " << __mode_to_s(mode) if mode
81
81
  cmd << " -o #{owner}" if owner
82
82
  cmd << " -g #{group}" if group
83
83
  cmd << " " << [src, dest].flatten.join(" ")
data/lib/chef/version.rb CHANGED
@@ -23,7 +23,7 @@ require_relative "version_string"
23
23
 
24
24
  class Chef
25
25
  CHEF_ROOT = File.expand_path("..", __dir__)
26
- VERSION = Chef::VersionString.new("19.2.12")
26
+ VERSION = Chef::VersionString.new("19.3.14")
27
27
  end
28
28
 
29
29
  #
@@ -49,22 +49,23 @@ class Chef
49
49
  private_class_method :method_name_from_marketing_name
50
50
 
51
51
  WIN_VERSIONS = {
52
- "Windows Server 2022" => { major: 10, minor: 0, callable: lambda { |product_type, suite_mask, build_number| product_type != VER_NT_WORKSTATION && build_number >= 20348 } },
53
- "Windows Server 2019" => { major: 10, minor: 0, callable: lambda { |product_type, suite_mask, build_number| product_type != VER_NT_WORKSTATION && build_number >= 17763 && build_number < 20348 } },
54
- "Windows 11" => { major: 10, minor: 0, callable: lambda { |product_type, suite_mask, build_number| product_type == VER_NT_WORKSTATION && build_number >= 22000 } },
55
- "Windows 10" => { major: 10, minor: 0, callable: lambda { |product_type, suite_mask, build_number| product_type == VER_NT_WORKSTATION && build_number >= 19044 && build_number < 22000 } },
56
- "Windows Server 2016" => { major: 10, minor: 0, callable: lambda { |product_type, suite_mask, build_number| product_type != VER_NT_WORKSTATION && build_number <= 14393 } },
57
- "Windows 8.1" => { major: 6, minor: 3, callable: lambda { |product_type, suite_mask, build_number| product_type == VER_NT_WORKSTATION } },
58
- "Windows Server 2012 R2" => { major: 6, minor: 3, callable: lambda { |product_type, suite_mask, build_number| product_type != VER_NT_WORKSTATION } },
59
- "Windows 8" => { major: 6, minor: 2, callable: lambda { |product_type, suite_mask, build_number| product_type == VER_NT_WORKSTATION } },
60
- "Windows Server 2012" => { major: 6, minor: 2, callable: lambda { |product_type, suite_mask, build_number| product_type != VER_NT_WORKSTATION } },
61
- "Windows 7" => { major: 6, minor: 1, callable: lambda { |product_type, suite_mask, build_number| product_type == VER_NT_WORKSTATION } },
62
- "Windows Server 2008 R2" => { major: 6, minor: 1, callable: lambda { |product_type, suite_mask, build_number| product_type != VER_NT_WORKSTATION } },
63
- "Windows Server 2008" => { major: 6, minor: 0, callable: lambda { |product_type, suite_mask, build_number| product_type != VER_NT_WORKSTATION } },
64
- "Windows Vista" => { major: 6, minor: 0, callable: lambda { |product_type, suite_mask, build_number| product_type == VER_NT_WORKSTATION } },
65
- "Windows Server 2003 R2" => { major: 5, minor: 2, callable: lambda { |product_type, suite_mask, build_number| get_system_metrics(SM_SERVERR2) != 0 } },
66
- "Windows Home Server" => { major: 5, minor: 2, callable: lambda { |product_type, suite_mask, build_number| (suite_mask & VER_SUITE_WH_SERVER) == VER_SUITE_WH_SERVER } },
67
- "Windows Server 2003" => { major: 5, minor: 2, callable: lambda { |product_type, suite_mask, build_number| get_system_metrics(SM_SERVERR2) == 0 } },
52
+ "Windows Server 2025" => { major: 10, minor: 0, callable: lambda { |product_type, _suite_mask, build_number| product_type != VER_NT_WORKSTATION && build_number >= 26100 } },
53
+ "Windows Server 2022" => { major: 10, minor: 0, callable: lambda { |product_type, _suite_mask, build_number| product_type != VER_NT_WORKSTATION && build_number >= 20348 && build_number < 26100 } },
54
+ "Windows Server 2019" => { major: 10, minor: 0, callable: lambda { |product_type, _suite_mask, build_number| product_type != VER_NT_WORKSTATION && build_number >= 17763 && build_number < 20348 } },
55
+ "Windows 11" => { major: 10, minor: 0, callable: lambda { |product_type, _suite_mask, build_number| product_type == VER_NT_WORKSTATION && build_number >= 22000 } },
56
+ "Windows 10" => { major: 10, minor: 0, callable: lambda { |product_type, _suite_mask, build_number| product_type == VER_NT_WORKSTATION && build_number >= 19044 && build_number < 22000 } },
57
+ "Windows Server 2016" => { major: 10, minor: 0, callable: lambda { |product_type, _suite_mask, build_number| product_type != VER_NT_WORKSTATION && build_number <= 14393 } },
58
+ "Windows 8.1" => { major: 6, minor: 3, callable: lambda { |product_type, _suite_mask, _build_number| product_type == VER_NT_WORKSTATION } },
59
+ "Windows Server 2012 R2" => { major: 6, minor: 3, callable: lambda { |product_type, _suite_mask, _build_number| product_type != VER_NT_WORKSTATION } },
60
+ "Windows 8" => { major: 6, minor: 2, callable: lambda { |product_type, _suite_mask, _build_number| product_type == VER_NT_WORKSTATION } },
61
+ "Windows Server 2012" => { major: 6, minor: 2, callable: lambda { |product_type, _suite_mask, _build_number| product_type != VER_NT_WORKSTATION } },
62
+ "Windows 7" => { major: 6, minor: 1, callable: lambda { |product_type, _suite_mask, _build_number| product_type == VER_NT_WORKSTATION } },
63
+ "Windows Server 2008 R2" => { major: 6, minor: 1, callable: lambda { |product_type, _suite_mask, _build_number| product_type != VER_NT_WORKSTATION } },
64
+ "Windows Server 2008" => { major: 6, minor: 0, callable: lambda { |product_type, _suite_mask, _build_number| product_type != VER_NT_WORKSTATION } },
65
+ "Windows Vista" => { major: 6, minor: 0, callable: lambda { |product_type, _suite_mask, _build_number| product_type == VER_NT_WORKSTATION } },
66
+ "Windows Server 2003 R2" => { major: 5, minor: 2, callable: lambda { |_product_type, _suite_mask, _build_number| get_system_metrics(SM_SERVERR2) != 0 } },
67
+ "Windows Home Server" => { major: 5, minor: 2, callable: lambda { |_product_type, suite_mask, _build_number| (suite_mask & VER_SUITE_WH_SERVER) == VER_SUITE_WH_SERVER } },
68
+ "Windows Server 2003" => { major: 5, minor: 2, callable: lambda { |_product_type, _suite_mask, _build_number| get_system_metrics(SM_SERVERR2) == 0 } },
68
69
  "Windows XP" => { major: 5, minor: 1 },
69
70
  "Windows 2000" => { major: 5, minor: 0 },
70
71
  }.freeze
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef
3
3
  version: !ruby/object:Gem::Version
4
- version: 19.2.12
4
+ version: 19.3.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
@@ -15,28 +15,28 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 19.2.12
18
+ version: 19.3.14
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 19.2.12
25
+ version: 19.3.14
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: chef-utils
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - '='
31
31
  - !ruby/object:Gem::Version
32
- version: 19.2.12
32
+ version: 19.3.14
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - '='
38
38
  - !ruby/object:Gem::Version
39
- version: 19.2.12
39
+ version: 19.3.14
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: train-core
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -169,16 +169,22 @@ dependencies:
169
169
  name: mixlib-shellout
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - "~>"
172
+ - - ">="
173
173
  - !ruby/object:Gem::Version
174
174
  version: 3.3.8
175
+ - - "<"
176
+ - !ruby/object:Gem::Version
177
+ version: 3.5.0
175
178
  type: :runtime
176
179
  prerelease: false
177
180
  version_requirements: !ruby/object:Gem::Requirement
178
181
  requirements:
179
- - - "~>"
182
+ - - ">="
180
183
  - !ruby/object:Gem::Version
181
184
  version: 3.3.8
185
+ - - "<"
186
+ - !ruby/object:Gem::Version
187
+ version: 3.5.0
182
188
  - !ruby/object:Gem::Dependency
183
189
  name: mixlib-archive
184
190
  requirement: !ruby/object:Gem::Requirement
@@ -251,16 +257,22 @@ dependencies:
251
257
  name: ffi-yajl
252
258
  requirement: !ruby/object:Gem::Requirement
253
259
  requirements:
254
- - - "~>"
260
+ - - ">="
255
261
  - !ruby/object:Gem::Version
256
262
  version: '2.2'
263
+ - - "<"
264
+ - !ruby/object:Gem::Version
265
+ version: '4.0'
257
266
  type: :runtime
258
267
  prerelease: false
259
268
  version_requirements: !ruby/object:Gem::Requirement
260
269
  requirements:
261
- - - "~>"
270
+ - - ">="
262
271
  - !ruby/object:Gem::Version
263
272
  version: '2.2'
273
+ - - "<"
274
+ - !ruby/object:Gem::Version
275
+ version: '4.0'
264
276
  - !ruby/object:Gem::Dependency
265
277
  name: net-sftp
266
278
  requirement: !ruby/object:Gem::Requirement
@@ -501,16 +513,22 @@ dependencies:
501
513
  name: uri
502
514
  requirement: !ruby/object:Gem::Requirement
503
515
  requirements:
504
- - - "~>"
516
+ - - ">="
505
517
  - !ruby/object:Gem::Version
506
518
  version: 1.0.4
519
+ - - "<"
520
+ - !ruby/object:Gem::Version
521
+ version: 1.2.0
507
522
  type: :runtime
508
523
  prerelease: false
509
524
  version_requirements: !ruby/object:Gem::Requirement
510
525
  requirements:
511
- - - "~>"
526
+ - - ">="
512
527
  - !ruby/object:Gem::Version
513
528
  version: 1.0.4
529
+ - - "<"
530
+ - !ruby/object:Gem::Version
531
+ version: 1.2.0
514
532
  - !ruby/object:Gem::Dependency
515
533
  name: corefoundation
516
534
  requirement: !ruby/object:Gem::Requirement
@@ -571,16 +589,22 @@ dependencies:
571
589
  name: vault
572
590
  requirement: !ruby/object:Gem::Requirement
573
591
  requirements:
574
- - - "~>"
592
+ - - ">="
575
593
  - !ruby/object:Gem::Version
576
594
  version: 0.18.2
595
+ - - "<"
596
+ - !ruby/object:Gem::Version
597
+ version: 0.21.0
577
598
  type: :runtime
578
599
  prerelease: false
579
600
  version_requirements: !ruby/object:Gem::Requirement
580
601
  requirements:
581
- - - "~>"
602
+ - - ">="
582
603
  - !ruby/object:Gem::Version
583
604
  version: 0.18.2
605
+ - - "<"
606
+ - !ruby/object:Gem::Version
607
+ version: 0.21.0
584
608
  - !ruby/object:Gem::Dependency
585
609
  name: chef-licensing
586
610
  requirement: !ruby/object:Gem::Requirement