chef-config 14.15.6 → 15.0.293

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 55079f92dd68138b4f81be9aa07dc08a05cb3259764e0ec6f273a6e48f275455
4
- data.tar.gz: efb9197f2c66bf77a2461c150f611dedc72ccc38425e1479fcf5093044926d95
3
+ metadata.gz: a8d538e27a6a2e8c690ba80f45698f51387b0d26147b08b3f644bb8c00955f8a
4
+ data.tar.gz: b2c243f7dbf98a707ccab6aaa21b3a1344ed20e5b339e1d1854de173c303511e
5
5
  SHA512:
6
- metadata.gz: 99cc071aa5cccc809a3a31f99b982b4aaf3c75283b5a6d0bc7cdbe1cf053fa1b7cfddcd5fc7f6c1c3d6855089e1ba3617c0f967d159df2ca3d341e66e2aaa2e4
7
- data.tar.gz: 44aa4d5a7a2ca40189378229214b84bb56c78dd13eca8c0ee3a7ad2869db868c6608078bc9b7531d4e7424996b9aa9eccbe48bb5573a49a9d6c3af911397cf50
6
+ metadata.gz: 7b354e76b5774426d3cf185dd567e196b43d8553f742e690ad936fb2fd6f487d5130516f724f091d43f556d553cd40680781998fa1da4758a5a411652ca1f3a1
7
+ data.tar.gz: 9b5d22a239f07db27e9bbc6ca569fffe83ed55ccdfc2eee1394b1d6ca6f7a55c09613eaf47bc88c4ecc17cf512cbb6fe109a005ec3fd900cd8bd0ec93b7087bc
data/LICENSE CHANGED
File without changes
data/Rakefile CHANGED
File without changes
File without changes
File without changes
@@ -4,7 +4,7 @@
4
4
  # Author:: AJ Christensen (<aj@chef.io>)
5
5
  # Author:: Mark Mzyk (<mmzyk@chef.io>)
6
6
  # Author:: Kyle Goodwin (<kgoodwin@primerevenue.com>)
7
- # Copyright:: Copyright 2008-2018, Chef Software Inc.
7
+ # Copyright:: Copyright 2008-2019, Chef Software Inc.
8
8
  # License:: Apache License, Version 2.0
9
9
  #
10
10
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -85,10 +85,13 @@ module ChefConfig
85
85
  end
86
86
  end
87
87
 
88
+ # @param name [String]
89
+ # @param file_path [String]
88
90
  def self.add_formatter(name, file_path = nil)
89
91
  formatters << [name, file_path]
90
92
  end
91
93
 
94
+ # @param logger [String]
92
95
  def self.add_event_logger(logger)
93
96
  event_handlers << logger
94
97
  end
@@ -125,18 +128,21 @@ module ChefConfig
125
128
 
126
129
  default :formatters, []
127
130
 
131
+ # @param uri [String] the URI to validate
132
+ #
133
+ # @return [Boolean] is the URL valid
128
134
  def self.is_valid_url?(uri)
129
135
  url = uri.to_s.strip
130
136
  /^http:\/\// =~ url || /^https:\/\// =~ url || /^chefzero:/ =~ url
131
137
  end
138
+
132
139
  # Override the config dispatch to set the value of multiple server options simultaneously
133
140
  #
134
- # === Parameters
135
- # url<String>:: String to be set for all of the chef-server-api URL's
141
+ # @param [String] url String to be set for all of the chef-server-api URL's
136
142
  #
137
143
  configurable(:chef_server_url).writes_value do |uri|
138
144
  unless is_valid_url? uri
139
- raise ConfigurationError, "#{uri} is an invalid chef_server_url."
145
+ raise ConfigurationError, "#{uri} is an invalid chef_server_url. The URL must start with http://, https://, or chefzero://."
140
146
  end
141
147
  uri.to_s.strip
142
148
  end
@@ -184,6 +190,7 @@ module ChefConfig
184
190
  path
185
191
  end
186
192
 
193
+ # @param child_path [String]
187
194
  def self.derive_path_from_chef_repo_path(child_path)
188
195
  if chef_repo_path.kind_of?(String)
189
196
  PathHelper.join(chef_repo_path, child_path)
@@ -286,15 +293,18 @@ module ChefConfig
286
293
  # the cache path.
287
294
  unless path_accessible?(primary_cache_path) || path_accessible?(primary_cache_root)
288
295
  secondary_cache_path = PathHelper.join(user_home, ".chef")
296
+ secondary_cache_path = target_mode? ? "#{secondary_cache_path}/#{target_mode.host}" : secondary_cache_path
289
297
  ChefConfig.logger.trace("Unable to access cache at #{primary_cache_path}. Switching cache to #{secondary_cache_path}")
290
298
  secondary_cache_path
291
299
  else
292
- primary_cache_path
300
+ target_mode? ? "#{primary_cache_path}/#{target_mode.host}" : primary_cache_path
293
301
  end
294
302
  end
295
303
  end
296
304
 
297
305
  # Returns true only if the path exists and is readable and writeable for the user.
306
+ #
307
+ # @param path [String]
298
308
  def self.path_accessible?(path)
299
309
  File.exists?(path) && File.readable?(path) && File.writable?(path)
300
310
  end
@@ -358,7 +368,7 @@ module ChefConfig
358
368
  # Whether or not to send the Authorization header again on http redirects.
359
369
  # As per the plan in https://github.com/chef/chef/pull/7006, this will be
360
370
  # False in Chef 14, True in Chef 15, and will be removed entirely in Chef 16.
361
- default :http_disable_auth_on_redirect, false
371
+ default :http_disable_auth_on_redirect, true
362
372
 
363
373
  default :interval, nil
364
374
  default :once, nil
@@ -369,6 +379,11 @@ module ChefConfig
369
379
  default :diff_disabled, false
370
380
  default :diff_filesize_threshold, 10000000
371
381
  default :diff_output_threshold, 1000000
382
+
383
+ # This is true for "local mode" which uses a chef-zero server listening on
384
+ # localhost one way or another. This is true for both `chef-solo` (without
385
+ # the --legacy-mode flag) or `chef-client -z` methods of starting a client run.
386
+ #
372
387
  default :local_mode, false
373
388
 
374
389
  # Configures the mode of operation for ChefFS, which is applied to the
@@ -421,6 +436,22 @@ module ChefConfig
421
436
  # * Chef 11 mode doesn't expose RBAC objects
422
437
  default :osc_compat, false
423
438
  end
439
+
440
+ # RFCxxx Target Mode support, value is the name of a remote device to Chef against
441
+ # --target exists as a shortcut to enabling target_mode and setting the host
442
+ configurable(:target)
443
+
444
+ config_context :target_mode do
445
+ config_strict_mode false # we don't want to have to add all train configuration keys here
446
+ default :enabled, false
447
+ default :protocol, "ssh"
448
+ # typical additional keys: host, user, password
449
+ end
450
+
451
+ def self.target_mode?
452
+ target_mode.enabled
453
+ end
454
+
424
455
  default :chef_server_url, "https://localhost:443"
425
456
 
426
457
  default(:chef_server_root) do
@@ -436,11 +467,29 @@ module ChefConfig
436
467
  end
437
468
 
438
469
  default :rest_timeout, 300
439
- default :yum_timeout, 900
440
- default :yum_lock_timeout, 30
470
+
471
+ # This solo setting is now almost entirely useless. It is set to true if chef-solo was
472
+ # invoked that way from the command-line (i.e. from Application::Solo as opposed to
473
+ # Application::Client). The more useful information is contained in the :solo_legacy_mode
474
+ # vs the :local_mode flags which will be set to true or false depending on how solo was
475
+ # invoked and actually change more of the behavior. There might be slight differences in
476
+ # the behavior of :local_mode due to the behavioral differences in Application::Solo vs.
477
+ # Application::Client and `chef-solo` vs `chef-client -z`, but checking this value and
478
+ # switching based on it is almost certainly doing the wrong thing and papering over
479
+ # bugs that should be fixed in one or the other class, and will be brittle and destined
480
+ # to break in the future (and not necessarily on a major version bump). Checking this value
481
+ # is also not sufficent to determine if we are not running against a server since this can
482
+ # be unset but :local_mode may be set. It would be accurate to check both :solo and :local_mode
483
+ # to determine if we're not running against a server, but the more semantically accurate test
484
+ # is going to be combining :solo_legacy_mode and :local_mode.
485
+ #
486
+ # TL;DR: `if Chef::Config[:solo]` is almost certainly buggy code, you should use:
487
+ # `if Chef::Config[:local_mode] || Chef::Config[:solo_legacy_mode]`
488
+ #
489
+ # @api private
441
490
  default :solo, false
442
491
 
443
- # Are we running in old Chef Solo legacy mode?
492
+ # This is true for old chef-solo legacy mode without any chef-zero server (chef-solo --legacy-mode)
444
493
  default :solo_legacy_mode, false
445
494
 
446
495
  default :splay, nil
@@ -450,14 +499,6 @@ module ChefConfig
450
499
  default :ez, false
451
500
  default :enable_reporting, true
452
501
  default :enable_reporting_url_fatals, false
453
- # Possible values for :audit_mode
454
- # :enabled, :disabled, :audit_only,
455
- #
456
- # TODO: 11 Dec 2014: Currently audit-mode is an experimental feature
457
- # and is disabled by default. When users choose to enable audit-mode,
458
- # a warning is issued in application/client#reconfigure.
459
- # This can be removed when audit-mode is enabled by default.
460
- default :audit_mode, :disabled
461
502
 
462
503
  # Chef only needs ohai to run the hostname plugin for the most basic
463
504
  # functionality. If the rest of the ohai plugins are not needed (like in
@@ -491,12 +532,6 @@ module ChefConfig
491
532
 
492
533
  default :named_run_list, nil
493
534
 
494
- # During initial development, users were required to set `use_policyfile true`
495
- # in `client.rb` to opt-in to policyfile use. Chef Client now examines
496
- # configuration, node json, and the stored node to determine if policyfile
497
- # usage is desired. This flag is still honored if set, but is unnecessary.
498
- default :use_policyfile, false
499
-
500
535
  # Policyfiles can be used in a native mode (default) or compatibility mode.
501
536
  # Native mode requires Chef Server 12.1 (it can be enabled via feature flag
502
537
  # on some prior versions). In native mode, policies and associated
@@ -607,7 +642,15 @@ module ChefConfig
607
642
  # `node_name` of the client.
608
643
  #
609
644
  # If chef-zero is enabled, this defaults to nil (no authentication).
610
- default(:client_key) { chef_zero.enabled ? nil : platform_specific_path("/etc/chef/client.pem") }
645
+ default(:client_key) do
646
+ if chef_zero.enabled
647
+ nil
648
+ elsif target_mode?
649
+ platform_specific_path("/etc/chef/#{target_mode.host}/client.pem")
650
+ else
651
+ platform_specific_path("/etc/chef/client.pem")
652
+ end
653
+ end
611
654
 
612
655
  # A credentials file may contain a complete client key, rather than the path
613
656
  # to one.
@@ -627,7 +670,9 @@ module ChefConfig
627
670
 
628
671
  # This secret is used to decrypt encrypted data bag items.
629
672
  default(:encrypted_data_bag_secret) do
630
- if File.exist?(platform_specific_path("/etc/chef/encrypted_data_bag_secret"))
673
+ if target_mode? && File.exist?(platform_specific_path("/etc/chef/#{target_mode.host}/encrypted_data_bag_secret"))
674
+ platform_specific_path("/etc/chef/#{target_mode.host}/encrypted_data_bag_secret")
675
+ elsif File.exist?(platform_specific_path("/etc/chef/encrypted_data_bag_secret"))
631
676
  platform_specific_path("/etc/chef/encrypted_data_bag_secret")
632
677
  else
633
678
  nil
@@ -767,7 +812,6 @@ module ChefConfig
767
812
  default :bootstrap_template, nil
768
813
  default :secret, nil
769
814
  default :secret_file, nil
770
- default :identity_file, nil
771
815
  default :host_key_verify, nil
772
816
  default :forward_agent, nil
773
817
  default :sort_status_reverse, nil
@@ -829,7 +873,6 @@ module ChefConfig
829
873
  #
830
874
  # NOTE: CHANGING THIS SETTING MAY CAUSE CORRUPTION, DATA LOSS AND
831
875
  # INSTABILITY.
832
- #
833
876
  default :file_atomic_update, true
834
877
 
835
878
  # There are 3 possible values for this configuration setting.
@@ -837,28 +880,19 @@ module ChefConfig
837
880
  # false => file staging is done via tempfiles under ENV['TMP']
838
881
  # :auto => file staging will try using destination directory if possible and
839
882
  # will fall back to ENV['TMP'] if destination directory is not usable.
840
- #
841
883
  default :file_staging_uses_destdir, :auto
842
884
 
843
885
  # Exit if another run is in progress and the chef-client is unable to
844
886
  # get the lock before time expires. If nil, no timeout is enforced. (Exits
845
887
  # immediately if 0.)
846
- #
847
888
  default :run_lock_timeout, nil
848
889
 
849
890
  # Number of worker threads for syncing cookbooks in parallel. Increasing
850
891
  # this number can result in gateway errors from the server (namely 503 and 504).
851
892
  # If you are seeing this behavior while using the default setting, reducing
852
893
  # the number of threads will help.
853
- #
854
894
  default :cookbook_sync_threads, 10
855
895
 
856
- # True if all resources by default default to unified mode, with all resources
857
- # applying in "compile" mode, with no "converge" mode. False is backwards compatible
858
- # setting for Chef 11-15 behavior. This will break forward notifications.
859
- #
860
- default :resource_unified_mode_default, false
861
-
862
896
  # At the beginning of the Chef Client run, the cookbook manifests are downloaded which
863
897
  # contain URLs for every file in every relevant cookbook. Most of the files
864
898
  # (recipes, resources, providers, libraries, etc) are immediately synchronized
@@ -884,9 +918,9 @@ module ChefConfig
884
918
  default :no_lazy_load, true
885
919
 
886
920
  # A whitelisted array of attributes you want sent over the wire when node
887
- # data is saved. The default setting is nil, which collects all data. Setting
888
- # to [] will not collect any data for save.
889
- #
921
+ # data is saved.
922
+ # The default setting is nil, which collects all data. Setting to [] will not
923
+ # collect any data for save.
890
924
  default :automatic_attribute_whitelist, nil
891
925
  default :default_attribute_whitelist, nil
892
926
  default :normal_attribute_whitelist, nil
@@ -929,7 +963,7 @@ module ChefConfig
929
963
  # data collector will not run.
930
964
  # Ex: http://my-data-collector.mycompany.com/ingest
931
965
  default(:server_url) do
932
- if config_parent.solo || config_parent.local_mode
966
+ if config_parent.solo_legacy_mode || config_parent.local_mode
933
967
  nil
934
968
  else
935
969
  File.join(config_parent.chef_server_url, "/data-collector")
@@ -960,7 +994,7 @@ module ChefConfig
960
994
  # generated by the DataCollector when Chef is run in Solo mode. This
961
995
  # allows users to associate their Solo nodes with faux organizations
962
996
  # without the nodes being connected to an actual Chef Server.
963
- default :organization, nil
997
+ default :organization, "chef_solo"
964
998
  end
965
999
 
966
1000
  configurable(:http_proxy)
File without changes
File without changes
File without changes
@@ -89,8 +89,7 @@ module ChefConfig
89
89
  # Unknown profile name. For "default" just silently ignore, otherwise
90
90
  # raise an error.
91
91
  return if profile == "default"
92
-
93
- raise ChefConfig::ConfigurationError, "Profile #{profile} doesn't exist. Please add it to #{credentials_file_path}."
92
+ raise ChefConfig::ConfigurationError, "Profile #{profile} doesn't exist. Please add it to #{credentials_file}."
94
93
  end
95
94
  apply_credentials(config[profile], profile)
96
95
  end
File without changes
File without changes
@@ -21,7 +21,7 @@
21
21
 
22
22
  module ChefConfig
23
23
  CHEFCONFIG_ROOT = File.expand_path("../..", __FILE__)
24
- VERSION = "14.15.6".freeze
24
+ VERSION = "15.0.293".freeze
25
25
  end
26
26
 
27
27
  #
File without changes
File without changes
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
3
  # Author:: Kyle Goodwin (<kgoodwin@primerevenue.com>)
4
- # Copyright:: Copyright 2008-2016, Chef Software Inc.
4
+ # Copyright:: Copyright 2008-2019, Chef Software Inc.
5
5
  # License:: Apache License, Version 2.0
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -248,9 +248,10 @@ RSpec.describe ChefConfig::Config do
248
248
  end
249
249
 
250
250
  describe "default values" do
251
+ let(:system_drive) { ChefConfig::Config.env["SYSTEMDRIVE"] } if is_windows
251
252
  let :primary_cache_path do
252
253
  if is_windows
253
- "#{ChefConfig::Config.env['SYSTEMDRIVE']}\\chef"
254
+ "#{system_drive}\\chef"
254
255
  else
255
256
  "/var/chef"
256
257
  end
@@ -275,6 +276,35 @@ RSpec.describe ChefConfig::Config do
275
276
  allow(ChefConfig::Config).to receive(:path_accessible?).and_return(false)
276
277
  end
277
278
 
279
+ describe "ChefConfig::Config[:client_key]" do
280
+ let(:path_to_client_key) { to_platform("/etc/chef") + ChefConfig::PathHelper.path_separator }
281
+
282
+ it "sets the default path to the client key" do
283
+ expect(ChefConfig::Config.client_key).to eq(path_to_client_key + "client.pem")
284
+ end
285
+
286
+ context "when target mode is enabled" do
287
+ let(:target_mode_host) { "fluffy.kittens.org" }
288
+
289
+ before do
290
+ ChefConfig::Config.target_mode.enabled = true
291
+ ChefConfig::Config.target_mode.host = target_mode_host
292
+ end
293
+
294
+ it "sets the default path to the client key with the target host name" do
295
+ expect(ChefConfig::Config.client_key).to eq(path_to_client_key + target_mode_host + ChefConfig::PathHelper.path_separator + "client.pem")
296
+ end
297
+ end
298
+
299
+ context "when local mode is enabled" do
300
+ before { ChefConfig::Config[:local_mode] = true }
301
+
302
+ it "returns nil" do
303
+ expect(ChefConfig::Config.client_key).to be_nil
304
+ end
305
+ end
306
+ end
307
+
278
308
  describe "ChefConfig::Config[:fips]" do
279
309
  let(:fips_enabled) { false }
280
310
 
@@ -370,16 +400,32 @@ RSpec.describe ChefConfig::Config do
370
400
  end
371
401
 
372
402
  describe "ChefConfig::Config[:cache_path]" do
403
+ let(:target_mode_host) { "fluffy.kittens.org" }
404
+ let(:target_mode_primary_cache_path) { "#{primary_cache_path}/#{target_mode_host}" }
405
+ let(:target_mode_secondary_cache_path) { "#{secondary_cache_path}/#{target_mode_host}" }
406
+
373
407
  before do
374
408
  if is_windows
375
- allow(File).to receive(:expand_path).and_return("#{ChefConfig::Config.env["SYSTEMDRIVE"]}/Path/To/Executable")
409
+ allow(File).to receive(:expand_path).and_return("#{system_drive}/Path/To/Executable")
376
410
  end
377
411
  end
412
+
378
413
  context "when /var/chef exists and is accessible" do
379
- it "defaults to /var/chef" do
414
+ before do
380
415
  allow(ChefConfig::Config).to receive(:path_accessible?).with(to_platform("/var/chef")).and_return(true)
416
+ end
417
+
418
+ it "defaults to /var/chef" do
381
419
  expect(ChefConfig::Config[:cache_path]).to eq(primary_cache_path)
382
420
  end
421
+
422
+ context "and target mode is enabled" do
423
+ it "cache path includes the target host name" do
424
+ ChefConfig::Config.target_mode.enabled = true
425
+ ChefConfig::Config.target_mode.host = target_mode_host
426
+ expect(ChefConfig::Config[:cache_path]).to eq(target_mode_primary_cache_path)
427
+ end
428
+ end
383
429
  end
384
430
 
385
431
  context "when /var/chef does not exist and /var is accessible" do
@@ -399,13 +445,23 @@ RSpec.describe ChefConfig::Config do
399
445
  end
400
446
 
401
447
  context "when /var/chef exists and is not accessible" do
402
- it "defaults to $HOME/.chef" do
448
+ before do
403
449
  allow(File).to receive(:exists?).with(to_platform("/var/chef")).and_return(true)
404
450
  allow(File).to receive(:readable?).with(to_platform("/var/chef")).and_return(true)
405
451
  allow(File).to receive(:writable?).with(to_platform("/var/chef")).and_return(false)
452
+ end
406
453
 
454
+ it "defaults to $HOME/.chef" do
407
455
  expect(ChefConfig::Config[:cache_path]).to eq(secondary_cache_path)
408
456
  end
457
+
458
+ context "and target mode is enabled" do
459
+ it "cache path defaults to $HOME/.chef with the target host name" do
460
+ ChefConfig::Config.target_mode.enabled = true
461
+ ChefConfig::Config.target_mode.host = target_mode_host
462
+ expect(ChefConfig::Config[:cache_path]).to eq(target_mode_secondary_cache_path)
463
+ end
464
+ end
409
465
  end
410
466
 
411
467
  context "when chef is running in local mode" do
@@ -1197,10 +1253,23 @@ RSpec.describe ChefConfig::Config do
1197
1253
 
1198
1254
  end
1199
1255
 
1200
- context "for Chef Solo" do
1256
+ context "for Chef Solo legacy mode" do
1257
+
1258
+ before do
1259
+ ChefConfig::Config[:solo_legacy_mode] = true
1260
+ end
1261
+
1262
+ it "sets the data collector server URL to nil" do
1263
+ ChefConfig::Config[:chef_server_url] = "https://chef.example/organizations/myorg"
1264
+ expect(ChefConfig::Config[:data_collector][:server_url]).to be_nil
1265
+ end
1266
+
1267
+ end
1268
+
1269
+ context "for local mode" do
1201
1270
 
1202
1271
  before do
1203
- ChefConfig::Config[:solo] = true
1272
+ ChefConfig::Config[:local_mode] = true
1204
1273
  end
1205
1274
 
1206
1275
  it "sets the data collector server URL to nil" do
File without changes
File without changes
@@ -459,7 +459,7 @@ RSpec.describe ChefConfig::WorkstationConfigLoader do
459
459
  client_key = "barney_rubble.pem"
460
460
  chef_server_url = "https://api.chef.io/organizations/bedrock"
461
461
  invalid_config_option1234 = "foobar"
462
- EOH
462
+ EOH
463
463
  content
464
464
  end
465
465
 
@@ -484,7 +484,7 @@ EOH
484
484
  }
485
485
  [default.knife]
486
486
  ssh_user = "knife_ssh_user"
487
- EOH
487
+ EOH
488
488
  content
489
489
  end
490
490
 
@@ -506,7 +506,7 @@ EOH
506
506
  -----BEGIN RSA PRIVATE KEY-----
507
507
  foo
508
508
  """
509
- EOH
509
+ EOH
510
510
  content
511
511
  end
512
512
 
@@ -515,7 +515,7 @@ EOH
515
515
  expect(ChefConfig::Config.client_key_contents).to eq(<<~EOH
516
516
  -----BEGIN RSA PRIVATE KEY-----
517
517
  foo
518
- EOH
518
+ EOH
519
519
  )
520
520
  end
521
521
  end
@@ -531,7 +531,7 @@ EOH
531
531
  client_name = "explicit"
532
532
  [context]
533
533
  client_name = "context"
534
- EOH
534
+ EOH
535
535
  content
536
536
  end
537
537
 
@@ -573,7 +573,7 @@ EOH
573
573
  [default]
574
574
  node_name = 'barney'
575
575
  client_name = 'barney'
576
- EOH
576
+ EOH
577
577
  content
578
578
  end
579
579
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-config
3
3
  version: !ruby/object:Gem::Version
4
- version: 14.15.6
4
+ version: 15.0.293
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-07 00:00:00.000000000 Z
11
+ date: 2019-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-shellout
@@ -194,8 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0'
196
196
  requirements: []
197
- rubyforge_project:
198
- rubygems_version: 2.7.9
197
+ rubygems_version: 3.0.3
199
198
  signing_key:
200
199
  specification_version: 4
201
200
  summary: Chef's default configuration and config loading