chef 16.0.287-universal-mingw32 → 16.2.73-universal-mingw32
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/Gemfile +2 -3
- data/README.md +3 -3
- data/Rakefile +3 -2
- data/chef.gemspec +5 -5
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/application/apply.rb +2 -1
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +4 -4
- data/lib/chef/cookbook/chefignore.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +2 -2
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +4 -4
- data/lib/chef/data_bag.rb +4 -4
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/digester.rb +5 -4
- data/lib/chef/dsl/declare_resource.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/file_access_control.rb +1 -1
- data/lib/chef/file_access_control/windows.rb +2 -2
- data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
- data/lib/chef/http.rb +19 -4
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +1 -1
- data/lib/chef/http/json_output.rb +1 -1
- data/lib/chef/http/ssl_policies.rb +18 -0
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -2
- data/lib/chef/knife/bootstrap.rb +20 -14
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
- data/lib/chef/knife/client_bulk_delete.rb +1 -1
- data/lib/chef/knife/config_get.rb +1 -1
- data/lib/chef/knife/config_use_profile.rb +15 -5
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +1 -4
- data/lib/chef/knife/core/bootstrap_context.rb +1 -1
- data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- data/lib/chef/knife/core/node_presenter.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +19 -4
- data/lib/chef/knife/data_bag_create.rb +1 -1
- data/lib/chef/knife/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/node_bulk_delete.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/role_bulk_delete.rb +1 -1
- data/lib/chef/knife/ssh.rb +2 -2
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/properties.rb +2 -2
- data/lib/chef/mixin/securable.rb +2 -2
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +1 -1
- data/lib/chef/property.rb +2 -2
- data/lib/chef/provider.rb +3 -3
- data/lib/chef/provider/batch.rb +3 -10
- data/lib/chef/provider/cron.rb +2 -14
- data/lib/chef/provider/directory.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/file.rb +1 -1
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/windows.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +7 -7
- data/lib/chef/provider/launchd.rb +11 -9
- data/lib/chef/provider/mount/aix.rb +1 -1
- data/lib/chef/provider/mount/windows.rb +2 -2
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/package/cab.rb +1 -1
- data/lib/chef/provider/package/chocolatey.rb +1 -1
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/openbsd.rb +1 -1
- data/lib/chef/provider/package/portage.rb +3 -2
- data/lib/chef/provider/package/powershell.rb +6 -2
- data/lib/chef/provider/package/rubygems.rb +3 -3
- data/lib/chef/provider/package/snap.rb +96 -27
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/msi.rb +3 -3
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
- data/lib/chef/provider/package/yum.rb +1 -1
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +11 -15
- data/lib/chef/provider/remote_directory.rb +2 -2
- data/lib/chef/provider/remote_file/http.rb +4 -1
- data/lib/chef/provider/script.rb +4 -75
- data/lib/chef/provider/service/arch.rb +2 -2
- data/lib/chef/provider/service/debian.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +9 -0
- data/lib/chef/provider/service/openbsd.rb +4 -4
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +1 -1
- data/lib/chef/provider/subversion.rb +2 -2
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/linux.rb +3 -3
- data/lib/chef/provider/user/mac.rb +15 -11
- data/lib/chef/provider/windows_script.rb +87 -25
- data/lib/chef/provider/windows_task.rb +4 -2
- data/lib/chef/provider/zypper_repository.rb +30 -10
- data/lib/chef/resource.rb +25 -14
- data/lib/chef/resource/alternatives.rb +1 -1
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/archive_file.rb +28 -8
- data/lib/chef/resource/bash.rb +0 -1
- data/lib/chef/resource/batch.rb +4 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
- data/lib/chef/resource/chef_gem.rb +57 -21
- data/lib/chef/resource/chef_handler.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +1 -1
- data/lib/chef/resource/cron/_cron_shared.rb +98 -0
- data/lib/chef/resource/cron/cron.rb +46 -0
- data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
- data/lib/chef/resource/cron_access.rb +11 -3
- data/lib/chef/resource/csh.rb +0 -1
- data/lib/chef/resource/dmg_package.rb +2 -2
- data/lib/chef/resource/execute.rb +478 -8
- data/lib/chef/resource/file.rb +10 -8
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +35 -2
- data/lib/chef/resource/helpers/cron_validations.rb +6 -3
- data/lib/chef/resource/homebrew_package.rb +30 -1
- data/lib/chef/resource/homebrew_update.rb +107 -0
- data/lib/chef/resource/hostname.rb +7 -20
- data/lib/chef/resource/kernel_module.rb +14 -1
- data/lib/chef/resource/launchd.rb +1 -1
- data/lib/chef/resource/locale.rb +3 -3
- data/lib/chef/resource/macos_userdefaults.rb +11 -6
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/perl.rb +0 -1
- data/lib/chef/resource/plist.rb +23 -4
- data/lib/chef/resource/powershell_script.rb +4 -2
- data/lib/chef/resource/python.rb +0 -1
- data/lib/chef/resource/remote_file.rb +26 -10
- data/lib/chef/resource/ruby.rb +0 -1
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +15 -0
- data/lib/chef/resource/sudo.rb +29 -2
- data/lib/chef/resource/swap_file.rb +17 -0
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +15 -0
- data/lib/chef/resource/windows_ad_join.rb +30 -1
- data/lib/chef/resource/windows_audit_policy.rb +227 -0
- data/lib/chef/resource/windows_auto_run.rb +11 -0
- data/lib/chef/resource/windows_certificate.rb +27 -1
- data/lib/chef/resource/windows_dfs_server.rb +1 -1
- data/lib/chef/resource/windows_font.rb +3 -3
- data/lib/chef/resource/windows_package.rb +1 -1
- data/lib/chef/resource/windows_pagefile.rb +2 -2
- data/lib/chef/resource/windows_script.rb +2 -16
- data/lib/chef/resource/windows_security_policy.rb +47 -16
- data/lib/chef/resource/windows_shortcut.rb +1 -2
- data/lib/chef/resource/windows_task.rb +10 -10
- data/lib/chef/resource/windows_user_privilege.rb +70 -5
- data/lib/chef/resource/yum_repository.rb +9 -9
- data/lib/chef/resource_inspector.rb +4 -3
- data/lib/chef/resources.rb +4 -2
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/search/query.rb +1 -1
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/util/diff.rb +2 -2
- data/lib/chef/util/windows/net_user.rb +1 -1
- data/lib/chef/util/windows/volume.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -2
- data/lib/chef/win32/api/error.rb +3 -1
- data/lib/chef/win32/api/file.rb +1 -1
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/registry.rb +2 -2
- data/lib/chef/win32/security.rb +1 -1
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/functional/knife/configure_spec.rb +1 -1
- data/spec/functional/resource/aix_service_spec.rb +10 -1
- data/spec/functional/resource/aixinit_service_spec.rb +1 -1
- data/spec/functional/resource/bash_spec.rb +3 -2
- data/spec/functional/resource/bff_spec.rb +1 -1
- data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
- data/spec/functional/resource/cron_spec.rb +20 -1
- data/spec/functional/resource/dnf_package_spec.rb +6 -3
- data/spec/functional/resource/execute_spec.rb +1 -1
- data/spec/functional/resource/git_spec.rb +6 -6
- data/spec/functional/resource/group_spec.rb +9 -1
- data/spec/functional/resource/ifconfig_spec.rb +9 -1
- data/spec/functional/resource/insserv_spec.rb +3 -2
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/link_spec.rb +2 -5
- data/spec/functional/resource/mount_spec.rb +9 -1
- data/spec/functional/resource/msu_package_spec.rb +9 -3
- data/spec/functional/resource/powershell_script_spec.rb +4 -4
- data/spec/functional/resource/remote_file_spec.rb +8 -8
- data/spec/functional/resource/rpm_spec.rb +1 -1
- data/spec/functional/resource/timezone_spec.rb +2 -0
- data/spec/functional/resource/windows_package_spec.rb +0 -1
- data/spec/functional/resource/windows_path_spec.rb +4 -0
- data/spec/functional/resource/windows_security_policy_spec.rb +0 -1
- data/spec/functional/resource/windows_service_spec.rb +4 -0
- data/spec/functional/resource/windows_task_spec.rb +16 -15
- data/spec/functional/resource/windows_user_privilege_spec.rb +0 -1
- data/spec/functional/resource/yum_package_spec.rb +4 -1
- data/spec/functional/resource/zypper_package_spec.rb +4 -1
- data/spec/functional/shell_spec.rb +0 -1
- data/spec/functional/win32/crypto_spec.rb +1 -1
- data/spec/integration/knife/config_use_profile_spec.rb +55 -2
- data/spec/integration/knife/cookbook_upload_spec.rb +1 -1
- data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
- data/spec/integration/knife/environment_from_file_spec.rb +1 -1
- data/spec/integration/knife/node_from_file_spec.rb +1 -1
- data/spec/integration/knife/role_from_file_spec.rb +1 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +4 -0
- data/spec/integration/recipes/resource_load_spec.rb +2 -2
- data/spec/support/chef_helpers.rb +1 -1
- data/spec/support/platform_helpers.rb +1 -1
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/securable_resource.rb +1 -2
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
- data/spec/support/shared/functional/windows_script.rb +3 -3
- data/spec/support/shared/unit/execute_resource.rb +1 -1
- data/spec/support/shared/unit/provider/file.rb +12 -8
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application/solo_spec.rb +4 -2
- data/spec/unit/application_spec.rb +7 -0
- data/spec/unit/chef_fs/config_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +8 -8
- data/spec/unit/client_spec.rb +4 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
- data/spec/unit/data_bag_spec.rb +6 -3
- data/spec/unit/decorator_spec.rb +23 -23
- data/spec/unit/environment_spec.rb +5 -1
- data/spec/unit/guard_interpreter_spec.rb +1 -1
- data/spec/unit/http/api_versions_spec.rb +1 -1
- data/spec/unit/http/ssl_policies_spec.rb +20 -0
- data/spec/unit/knife/bootstrap_spec.rb +3 -2
- data/spec/unit/knife/cookbook_download_spec.rb +2 -2
- data/spec/unit/knife/cookbook_show_spec.rb +6 -7
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
- data/spec/unit/lwrp_spec.rb +5 -2
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/powershell_out_spec.rb +2 -4
- data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
- data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
- data/spec/unit/mixin/unformatter_spec.rb +2 -2
- data/spec/unit/mixin/uris_spec.rb +1 -1
- data/spec/unit/mixin/user_context_spec.rb +1 -9
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/property_spec.rb +1 -1
- data/spec/unit/provider/batch_spec.rb +130 -0
- data/spec/unit/provider/cron/unix_spec.rb +1 -1
- data/spec/unit/provider/cron_spec.rb +9 -49
- data/spec/unit/provider/dsc_resource_spec.rb +22 -38
- data/spec/unit/provider/dsc_script_spec.rb +10 -10
- data/spec/unit/provider/execute_spec.rb +1 -1
- data/spec/unit/provider/git_spec.rb +3 -3
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +0 -42
- data/spec/unit/provider/mdadm_spec.rb +1 -3
- data/spec/unit/provider/package/openbsd_spec.rb +1 -1
- data/spec/unit/provider/package/pacman_spec.rb +17 -20
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +96 -87
- data/spec/unit/provider/package/snap_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
- data/spec/unit/provider/powershell_script_spec.rb +3 -45
- data/spec/unit/provider/script_spec.rb +20 -110
- data/spec/unit/provider/user/dscl_spec.rb +2 -2
- data/spec/unit/provider/windows_env_spec.rb +5 -4
- data/spec/unit/provider/zypper_repository_spec.rb +60 -10
- data/spec/unit/resource/archive_file_spec.rb +11 -2
- data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
- data/spec/unit/resource/cron_spec.rb +2 -2
- data/spec/unit/resource/file/verification_spec.rb +2 -1
- data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
- data/spec/unit/resource/homebrew_update_spec.rb +30 -0
- data/spec/unit/resource/powershell_script_spec.rb +10 -15
- data/spec/unit/resource/timezone_spec.rb +1 -1
- data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
- data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
- data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/resource/windows_uac_spec.rb +2 -2
- data/spec/unit/resource/yum_repository_spec.rb +21 -21
- data/spec/unit/resource_spec.rb +84 -1
- data/spec/unit/role_spec.rb +23 -21
- data/spec/unit/util/backup_spec.rb +1 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
- data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
- data/spec/unit/util/selinux_spec.rb +2 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
- data/spec/unit/win32/registry_spec.rb +1 -1
- metadata +37 -31
- data/lib/chef/resource/cron.rb +0 -157
- data/spec/functional/resource/base.rb +0 -28
data/lib/chef/digester.rb
CHANGED
@@ -19,6 +19,7 @@
|
|
19
19
|
#
|
20
20
|
|
21
21
|
require "openssl" unless defined?(OpenSSL)
|
22
|
+
require "digest" unless defined?(Digest)
|
22
23
|
require "singleton" unless defined?(Singleton)
|
23
24
|
|
24
25
|
class Chef
|
@@ -39,9 +40,9 @@ class Chef
|
|
39
40
|
|
40
41
|
def generate_checksum(file)
|
41
42
|
if file.is_a?(StringIO)
|
42
|
-
checksum_io(file, OpenSSL::Digest
|
43
|
+
checksum_io(file, OpenSSL::Digest.new("SHA256"))
|
43
44
|
else
|
44
|
-
checksum_file(file, OpenSSL::Digest
|
45
|
+
checksum_file(file, OpenSSL::Digest.new("SHA256"))
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
@@ -50,11 +51,11 @@ class Chef
|
|
50
51
|
end
|
51
52
|
|
52
53
|
def generate_md5_checksum_for_file(file)
|
53
|
-
checksum_file(file,
|
54
|
+
checksum_file(file, ::Digest::MD5.new)
|
54
55
|
end
|
55
56
|
|
56
57
|
def generate_md5_checksum(io)
|
57
|
-
checksum_io(io,
|
58
|
+
checksum_io(io, ::Digest::MD5.new)
|
58
59
|
end
|
59
60
|
|
60
61
|
private
|
@@ -151,7 +151,7 @@ class Chef
|
|
151
151
|
# source "y.txt.erb"
|
152
152
|
# variables {}
|
153
153
|
# end
|
154
|
-
# resource.variables.merge!({ home: "/home/
|
154
|
+
# resource.variables.merge!({ home: "/home/clowns" })
|
155
155
|
#
|
156
156
|
def edit_resource(type, name, created_at: nil, run_context: self.run_context, &resource_attrs_block)
|
157
157
|
edit_resource!(type, name, created_at: created_at, run_context: run_context, &resource_attrs_block)
|
@@ -158,7 +158,7 @@ class Chef::EncryptedDataBagItem
|
|
158
158
|
d = OpenSSL::Cipher.new(algorithm)
|
159
159
|
d.decrypt
|
160
160
|
# We must set key before iv: https://bugs.ruby-lang.org/issues/8221
|
161
|
-
d.key = OpenSSL::Digest
|
161
|
+
d.key = OpenSSL::Digest.digest("SHA256", key)
|
162
162
|
d.iv = iv
|
163
163
|
d
|
164
164
|
end
|
@@ -102,7 +102,7 @@ class Chef::EncryptedDataBagItem
|
|
102
102
|
encryptor = OpenSSL::Cipher.new(algorithm)
|
103
103
|
encryptor.encrypt
|
104
104
|
# We must set key before iv: https://bugs.ruby-lang.org/issues/8221
|
105
|
-
encryptor.key = OpenSSL::Digest
|
105
|
+
encryptor.key = OpenSSL::Digest.digest("SHA256", key)
|
106
106
|
@iv ||= encryptor.random_iv
|
107
107
|
encryptor.iv = @iv
|
108
108
|
encryptor
|
@@ -26,7 +26,7 @@ class Chef
|
|
26
26
|
# the values specified by a value object, usually a Chef::Resource.
|
27
27
|
class FileAccessControl
|
28
28
|
|
29
|
-
if RUBY_PLATFORM
|
29
|
+
if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
|
30
30
|
require_relative "file_access_control/windows"
|
31
31
|
include FileAccessControl::Windows
|
32
32
|
else
|
@@ -96,7 +96,7 @@ class Chef
|
|
96
96
|
self_ace.mask = securable_object.predict_rights_mask(target_ace.mask)
|
97
97
|
new_target_acl << self_ace
|
98
98
|
end
|
99
|
-
# As there is no
|
99
|
+
# As there is no inheritance needed in case of WRITE permissions.
|
100
100
|
if target_ace.mask != Chef::ReservedNames::Win32::API::Security::WRITE && target_ace.flags & (CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE) != 0
|
101
101
|
children_ace = target_ace.dup
|
102
102
|
children_ace.flags |= INHERIT_ONLY_ACE
|
@@ -242,7 +242,7 @@ class Chef
|
|
242
242
|
flags = 0
|
243
243
|
|
244
244
|
#
|
245
|
-
# Configure child
|
245
|
+
# Configure child inheritance only if the resource is some
|
246
246
|
# type of a directory.
|
247
247
|
#
|
248
248
|
if resource.is_a? Chef::Resource::Directory
|
@@ -51,7 +51,7 @@ class Chef
|
|
51
51
|
# in the case where i'm running chef-solo on my homedir as myself and some root-shell
|
52
52
|
# work has caused dotfiles of mine to change to root-owned, i'm fine with this not being
|
53
53
|
# exceptional, and i think most use cases will consider this to not be exceptional, and
|
54
|
-
# the right thing is to fix the ownership of the file to the user running the
|
54
|
+
# the right thing is to fix the ownership of the file to the user running the command
|
55
55
|
# (which requires write perms to the directory, or mv will throw an exception)
|
56
56
|
begin
|
57
57
|
::File.chown(uid, nil, src)
|
data/lib/chef/formatters/base.rb
CHANGED
@@ -142,7 +142,7 @@ class Chef
|
|
142
142
|
|
143
143
|
# Generic callback for any attribute/library/lwrp/recipe file in a
|
144
144
|
# cookbook getting loaded. The per-filetype callbacks for file load are
|
145
|
-
#
|
145
|
+
# overridden so that they call this instead. This means that a subclass of
|
146
146
|
# Formatters::Base can implement #file_loaded to do the same thing for
|
147
147
|
# every kind of file that Chef loads from a recipe instead of
|
148
148
|
# implementing all the per-filetype callbacks.
|
@@ -41,7 +41,7 @@ class Chef
|
|
41
41
|
|
42
42
|
if found_error_in_cookbooks?
|
43
43
|
traceback = filtered_bt.map { |line| " #{line}" }.join("\n")
|
44
|
-
error_description.section("Cookbook Trace:", traceback)
|
44
|
+
error_description.section("Cookbook Trace: (most recent call first)", traceback)
|
45
45
|
error_description.section("Relevant File Content:", context)
|
46
46
|
end
|
47
47
|
|
@@ -46,7 +46,7 @@ class Chef
|
|
46
46
|
when Chef::Exceptions::PrivateKeyMissing
|
47
47
|
error_description.section("Private Key Not Found:", <<~E)
|
48
48
|
Your private key could not be loaded. If the key file exists, ensure that it is
|
49
|
-
readable by #{Chef::Dist::
|
49
|
+
readable by #{Chef::Dist::PRODUCT}.
|
50
50
|
E
|
51
51
|
error_description.section("Relevant Config Settings:", <<~E)
|
52
52
|
client_key "#{api_key}"
|
@@ -99,7 +99,7 @@ class Chef
|
|
99
99
|
# redirect.
|
100
100
|
def describe_404_error(error_description)
|
101
101
|
error_description.section("Resource Not Found:", <<~E)
|
102
|
-
The
|
102
|
+
The #{Chef::Dist::SERVER_PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url is incorrect.
|
103
103
|
E
|
104
104
|
error_description.section("Relevant Config Settings:", <<~E)
|
105
105
|
chef_server_url "#{server_url}"
|
@@ -28,7 +28,7 @@ class Chef
|
|
28
28
|
humanize_http_exception(error_description)
|
29
29
|
when Errno::ECONNREFUSED, Timeout::Error, Errno::ETIMEDOUT, SocketError
|
30
30
|
error_description.section("Network Error:", <<~E)
|
31
|
-
There was a network error connecting to the Chef
|
31
|
+
There was a network error connecting to the #{Chef::Dist::SERVER_PRODUCT}:
|
32
32
|
#{exception.message}
|
33
33
|
E
|
34
34
|
error_description.section("Relevant Config Settings:", <<~E)
|
@@ -39,14 +39,14 @@ class Chef
|
|
39
39
|
when Chef::Exceptions::PrivateKeyMissing
|
40
40
|
error_description.section("Private Key Not Found:", <<~E)
|
41
41
|
Your private key could not be loaded. If the key file exists, ensure that it is
|
42
|
-
readable by #{Chef::Dist::
|
42
|
+
readable by #{Chef::Dist::PRODUCT}.
|
43
43
|
E
|
44
44
|
error_description.section("Relevant Config Settings:", <<~E)
|
45
45
|
validation_key "#{api_key}"
|
46
46
|
E
|
47
47
|
when Chef::Exceptions::InvalidRedirect
|
48
48
|
error_description.section("Invalid Redirect:", <<~E)
|
49
|
-
Change your
|
49
|
+
Change your #{Chef::Dist::SERVER_PRODUCT} location in client.rb to the #{Chef::Dist::SERVER_PRODUCT}'s FQDN to avoid unwanted redirections.
|
50
50
|
E
|
51
51
|
when EOFError
|
52
52
|
describe_eof_error(error_description)
|
@@ -61,13 +61,13 @@ class Chef
|
|
61
61
|
when Net::HTTPUnauthorized
|
62
62
|
if clock_skew?
|
63
63
|
error_description.section("Authentication Error:", <<~E)
|
64
|
-
Failed to authenticate to the
|
64
|
+
Failed to authenticate to the #{Chef::Dist::SERVER_PRODUCT} (http 401).
|
65
65
|
The request failed because your clock has drifted by more than 15 minutes.
|
66
66
|
Syncing your clock to an NTP Time source should resolve the issue.
|
67
67
|
E
|
68
68
|
else
|
69
69
|
error_description.section("Authentication Error:", <<~E)
|
70
|
-
Failed to authenticate to the
|
70
|
+
Failed to authenticate to the #{Chef::Dist::SERVER_PRODUCT} (http 401).
|
71
71
|
E
|
72
72
|
|
73
73
|
error_description.section("Server Response:", format_rest_error)
|
@@ -81,7 +81,7 @@ class Chef
|
|
81
81
|
end
|
82
82
|
when Net::HTTPForbidden
|
83
83
|
error_description.section("Authorization Error:", <<~E)
|
84
|
-
Your validation client is not authorized to create the client for this node (HTTP 403).
|
84
|
+
Your validation client is not authorized to create the client for this node on the #{Chef::Dist::SERVER_PRODUCT} (HTTP 403).
|
85
85
|
E
|
86
86
|
error_description.section("Possible Causes:", <<~E)
|
87
87
|
* There may already be a client named "#{config[:node_name]}"
|
@@ -94,7 +94,7 @@ class Chef
|
|
94
94
|
error_description.section("Server Response:", format_rest_error)
|
95
95
|
when Net::HTTPNotFound
|
96
96
|
error_description.section("Resource Not Found:", <<~E)
|
97
|
-
The
|
97
|
+
The #{Chef::Dist::SERVER_PRODUCT} returned a HTTP 404. This usually indicates that your chef_server_url configuration is incorrect.
|
98
98
|
E
|
99
99
|
error_description.section("Relevant Config Settings:", <<~E)
|
100
100
|
chef_server_url "#{server_url}"
|
@@ -37,7 +37,7 @@ class Chef
|
|
37
37
|
error_description.section(exception.class.name, exception.message)
|
38
38
|
|
39
39
|
unless filtered_bt.empty?
|
40
|
-
error_description.section("Cookbook Trace:", filtered_bt.join("\n"))
|
40
|
+
error_description.section("Cookbook Trace: (most recent call first)", filtered_bt.join("\n"))
|
41
41
|
end
|
42
42
|
|
43
43
|
unless dynamic_resource?
|
@@ -79,8 +79,8 @@ class Chef
|
|
79
79
|
loop do
|
80
80
|
|
81
81
|
# low rent parser. try to gracefully handle nested blocks in resources
|
82
|
-
nesting += 1 if
|
83
|
-
nesting -= 1 if
|
82
|
+
nesting += 1 if /[\s]+do[\s]*/.match?(lines[current_line])
|
83
|
+
nesting -= 1 if /end[\s]*$/.match?(lines[current_line])
|
84
84
|
|
85
85
|
relevant_lines << format_line(current_line, lines[current_line])
|
86
86
|
|
data/lib/chef/http.rb
CHANGED
@@ -52,7 +52,7 @@ class Chef
|
|
52
52
|
|
53
53
|
def handle_chunk(next_chunk)
|
54
54
|
# stream handlers handle responses so must be applied in reverse order
|
55
|
-
# (same as #apply_stream_complete_middleware or #
|
55
|
+
# (same as #apply_stream_complete_middleware or #apply_response_middleware)
|
56
56
|
@stream_handlers.reverse.inject(next_chunk) do |chunk, handler|
|
57
57
|
Chef::Log.trace("Chef::HTTP::StreamHandler calling #{handler.class}#handle_chunk")
|
58
58
|
handler.handle_chunk(chunk)
|
@@ -269,7 +269,7 @@ class Chef
|
|
269
269
|
if keepalives && !base_url.nil?
|
270
270
|
# only reuse the http_client if we want keepalives and have a base_url
|
271
271
|
@http_client ||= {}
|
272
|
-
# the per-host per-port cache here gets
|
272
|
+
# the per-host per-port cache here gets persistent connections correct when
|
273
273
|
# redirecting to different servers
|
274
274
|
if base_url.is_a?(String) # sigh, this kind of abuse can't happen with strongly typed languages
|
275
275
|
@http_client[base_url] ||= build_http_client(base_url)
|
@@ -291,6 +291,21 @@ class Chef
|
|
291
291
|
|
292
292
|
private
|
293
293
|
|
294
|
+
# @api private
|
295
|
+
def ssl_policy
|
296
|
+
return Chef::HTTP::APISSLPolicy unless @options[:ssl_verify_mode]
|
297
|
+
|
298
|
+
case @options[:ssl_verify_mode]
|
299
|
+
when :verify_none
|
300
|
+
Chef::HTTP::VerifyNoneSSLPolicy
|
301
|
+
when :verify_peer
|
302
|
+
Chef::HTTP::VerifyPeerSSLPolicy
|
303
|
+
else
|
304
|
+
Chef::Log.error("Chef::HTTP was passed an ssl_verify_mode of #{@options[:ssl_verify_mode]} which is unsupported. Falling back to the API policy")
|
305
|
+
Chef::HTTP::APISSLPolicy
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
294
309
|
# @api private
|
295
310
|
def build_http_client(base_url)
|
296
311
|
if chef_zero_uri?(base_url)
|
@@ -304,7 +319,7 @@ class Chef
|
|
304
319
|
|
305
320
|
SocketlessChefZeroClient.new(base_url)
|
306
321
|
else
|
307
|
-
BasicClient.new(base_url, ssl_policy:
|
322
|
+
BasicClient.new(base_url, ssl_policy: ssl_policy, keepalives: keepalives)
|
308
323
|
end
|
309
324
|
end
|
310
325
|
|
@@ -312,7 +327,7 @@ class Chef
|
|
312
327
|
def create_url(path)
|
313
328
|
return path if path.is_a?(URI)
|
314
329
|
|
315
|
-
if
|
330
|
+
if %r{^(http|https|chefzero)://}i.match?(path)
|
316
331
|
URI.parse(path)
|
317
332
|
elsif path.nil? || path.empty?
|
318
333
|
URI.parse(@url)
|
@@ -22,7 +22,7 @@ require_relative "http_request"
|
|
22
22
|
class Chef
|
23
23
|
class HTTP
|
24
24
|
|
25
|
-
# Middleware-
|
25
|
+
# Middleware-ish class for handling compression in HTTP responses.
|
26
26
|
class Decompressor
|
27
27
|
class NoopInflater
|
28
28
|
def inflate(chunk)
|
@@ -128,7 +128,7 @@ class Chef
|
|
128
128
|
rescue NoMethodError => e
|
129
129
|
# http://redmine.ruby-lang.org/issues/show/2708
|
130
130
|
# http://redmine.ruby-lang.org/issues/show/2758
|
131
|
-
if
|
131
|
+
if /#{Regexp.escape(%q{undefined method `closed?' for nil:NilClass})}/.match?(e.to_s)
|
132
132
|
Chef::Log.trace("Rescued error in http connect, re-raising as Errno::ECONNREFUSED to hide bug in net/http")
|
133
133
|
Chef::Log.trace("#{e.class.name}: #{e}")
|
134
134
|
Chef::Log.trace(e.backtrace.join("\n"))
|
@@ -47,7 +47,7 @@ class Chef
|
|
47
47
|
# needed to keep conditional get stuff working correctly.
|
48
48
|
return [http_response, rest_request, return_value] if return_value == false
|
49
49
|
|
50
|
-
if http_response["content-type"]
|
50
|
+
if /json/.match?(http_response["content-type"])
|
51
51
|
if http_response.body.nil?
|
52
52
|
return_value = nil
|
53
53
|
elsif raw_output
|
@@ -129,5 +129,23 @@ class Chef
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
+
# This policy is used when we want to explicitly turn on verification
|
133
|
+
# for a specific request regardless of the API Policy. For example, when
|
134
|
+
# doing a `remote_file` where the user specified `verify_mode :verify_peer`
|
135
|
+
class VerifyPeerSSLPolicy < DefaultSSLPolicy
|
136
|
+
def set_verify_mode
|
137
|
+
http_client.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
# This policy is used when we want to explicitly turn off verification
|
142
|
+
# for a specific request regardless of the API Policy. For example, when
|
143
|
+
# doing a `remote_file` where the user specified `verify_mode :verify_none`
|
144
|
+
class VerifyNoneSSLPolicy < DefaultSSLPolicy
|
145
|
+
def set_verify_mode
|
146
|
+
http_client.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
132
150
|
end
|
133
151
|
end
|
data/lib/chef/json_compat.rb
CHANGED
data/lib/chef/key.rb
CHANGED
@@ -252,7 +252,7 @@ class Chef
|
|
252
252
|
OpenSSL::ASN1::Integer.new(openssl_key_object.public_key.n),
|
253
253
|
OpenSSL::ASN1::Integer.new(openssl_key_object.public_key.e),
|
254
254
|
])
|
255
|
-
OpenSSL::Digest
|
255
|
+
OpenSSL::Digest.hexdigest("SHA1", data_string.to_der).scan(/../).join(":")
|
256
256
|
end
|
257
257
|
|
258
258
|
def list(keys, actor, load_method_symbol, inflate)
|
data/lib/chef/knife.rb
CHANGED
@@ -248,7 +248,7 @@ class Chef
|
|
248
248
|
category_desc = preferred_category ? preferred_category + " " : ""
|
249
249
|
msg "Available #{category_desc}subcommands: (for details, knife SUB-COMMAND --help)\n\n"
|
250
250
|
subcommand_loader.list_commands(preferred_category).sort.each do |category, commands|
|
251
|
-
next if
|
251
|
+
next if /deprecated/i.match?(category)
|
252
252
|
|
253
253
|
msg "** #{category.upcase} COMMANDS **"
|
254
254
|
commands.sort.each do |command|
|
@@ -327,7 +327,7 @@ class Chef
|
|
327
327
|
end
|
328
328
|
|
329
329
|
# Grab a copy before config merge occurs, so that we can later identify
|
330
|
-
#
|
330
|
+
# where a given config value is sourced from.
|
331
331
|
@original_config = config.dup
|
332
332
|
|
333
333
|
# copy Mixlib::CLI over so that it can be configured in config.rb/knife.rb
|
data/lib/chef/knife/bootstrap.rb
CHANGED
@@ -94,7 +94,7 @@ class Chef
|
|
94
94
|
boolean: true
|
95
95
|
|
96
96
|
# This option was provided in knife bootstrap windows winrm,
|
97
|
-
# but it is ignored in knife-windows/WinrmSession, and so remains
|
97
|
+
# but it is ignored in knife-windows/WinrmSession, and so remains unimplemented here.
|
98
98
|
# option :kerberos_keytab_file,
|
99
99
|
# :short => "-T KEYTAB_FILE",
|
100
100
|
# :long => "--keytab-file KEYTAB_FILE",
|
@@ -275,7 +275,7 @@ class Chef
|
|
275
275
|
accumulator
|
276
276
|
}
|
277
277
|
|
278
|
-
# bootstrap override: url of a an installer shell script
|
278
|
+
# bootstrap override: url of a an installer shell script to use in place of omnitruck
|
279
279
|
# Note that the bootstrap template _only_ references this out of Chef::Config, and not from
|
280
280
|
# the provided options to knife bootstrap, so we set the Chef::Config option here.
|
281
281
|
option :bootstrap_url,
|
@@ -580,11 +580,8 @@ class Chef
|
|
580
580
|
|
581
581
|
bootstrap_context.client_pem = client_builder.client_path
|
582
582
|
else
|
583
|
-
ui.
|
584
|
-
|
585
|
-
Delete your validation key in order to use your user credentials for client registration instead.
|
586
|
-
EOM
|
587
|
-
|
583
|
+
ui.warn "Performing legacy client registration with the validation key at #{Chef::Config[:validation_key]}..."
|
584
|
+
ui.warn "Remove the key file or remove the 'validation_key' configuration option from your config.rb (knife.rb) to use more secure user credentials for client registration."
|
588
585
|
end
|
589
586
|
end
|
590
587
|
|
@@ -602,7 +599,7 @@ class Chef
|
|
602
599
|
end
|
603
600
|
|
604
601
|
def connect!
|
605
|
-
ui.info("Connecting to #{ui.color(server_name, :bold)}")
|
602
|
+
ui.info("Connecting to #{ui.color(server_name, :bold)} using #{connection_protocol}")
|
606
603
|
opts ||= connection_opts.dup
|
607
604
|
do_connect(opts)
|
608
605
|
rescue Train::Error => e
|
@@ -706,14 +703,23 @@ class Chef
|
|
706
703
|
true
|
707
704
|
end
|
708
705
|
|
706
|
+
# FIXME: someone needs to clean this up properly: https://github.com/chef/chef/issues/9645
|
707
|
+
# This code is deliberately left without an abstraction around deprecating the config options to avoid knife plugins from
|
708
|
+
# using those methods (which will need to be deprecated and break them) via inheritance (ruby does not have a true `private`
|
709
|
+
# so the lack of any inheritable implementation is because of that).
|
710
|
+
#
|
709
711
|
def winrm_auth_method
|
710
|
-
|
712
|
+
config.key?(:winrm_auth_method) ? config[:winrm_auth_method] : config.key?(:winrm_authentications_protocol) ? config[:winrm_authentication_protocol] : "negotiate" # rubocop:disable Style/NestedTernaryOperator
|
713
|
+
end
|
714
|
+
|
715
|
+
def ssh_verify_host_key
|
716
|
+
config.key?(:ssh_verify_host_key) ? config[:ssh_verify_host_key] : config.key?(:host_key_verify) ? config[:host_key_verify] : "always" # rubocop:disable Style/NestedTernaryOperator
|
711
717
|
end
|
712
718
|
|
713
719
|
# Fail if using plaintext auth without ssl because
|
714
720
|
# this can expose keys in plaintext on the wire.
|
715
721
|
# TODO test for this method
|
716
|
-
# TODO check that the
|
722
|
+
# TODO check that the protocol is valid.
|
717
723
|
def validate_winrm_transport_opts!
|
718
724
|
return true unless winrm?
|
719
725
|
|
@@ -908,7 +914,7 @@ class Chef
|
|
908
914
|
{ self_signed: config[:winrm_no_verify_cert] === true }
|
909
915
|
elsif ssh?
|
910
916
|
# Fall back to the old knife config key name for back compat.
|
911
|
-
{ verify_host_key:
|
917
|
+
{ verify_host_key: ssh_verify_host_key }
|
912
918
|
else
|
913
919
|
{}
|
914
920
|
end
|
@@ -967,7 +973,7 @@ class Chef
|
|
967
973
|
gw_host = split[1]
|
968
974
|
end
|
969
975
|
gw_host, gw_port = gw_host.split(":", 2)
|
970
|
-
# TODO - validate
|
976
|
+
# TODO - validate convertible port in config validation?
|
971
977
|
gw_port = Integer(gw_port) rescue nil
|
972
978
|
opts[:bastion_host] = gw_host
|
973
979
|
opts[:bastion_user] = gw_user
|
@@ -1054,7 +1060,7 @@ class Chef
|
|
1054
1060
|
# @api deprecated
|
1055
1061
|
#
|
1056
1062
|
def config_value(key, fallback_key = nil, default = nil)
|
1057
|
-
Chef.deprecated(:knife_bootstrap_apis, "Use of config_value
|
1063
|
+
Chef.deprecated(:knife_bootstrap_apis, "Use of config_value is deprecated. Knife plugin authors should access the config hash directly, which does correct merging of cli and config options.")
|
1058
1064
|
if config.key?(key)
|
1059
1065
|
# the first key is the primary key so we check the merged hash first
|
1060
1066
|
config[key]
|
@@ -1073,7 +1079,7 @@ class Chef
|
|
1073
1079
|
remote_path
|
1074
1080
|
end
|
1075
1081
|
|
1076
|
-
# build the command string for
|
1082
|
+
# build the command string for bootstrapping
|
1077
1083
|
# @return String
|
1078
1084
|
def bootstrap_command(remote_path)
|
1079
1085
|
if connection.windows?
|