chef 16.0.287 → 16.2.73
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/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
|
@@ -202,10 +202,12 @@ If !ERRORLEVEL!==0 (
|
|
|
202
202
|
) else (
|
|
203
203
|
@echo Installation completed successfully
|
|
204
204
|
del /f /q "%CHEF_CLIENT_MSI_LOG_PATH%"
|
|
205
|
-
|
|
205
|
+
)
|
|
206
206
|
|
|
207
207
|
<% end %>
|
|
208
208
|
|
|
209
|
+
@rem This line is required to separate the key_create label from the "block boundary"
|
|
210
|
+
@rem Removing these lines will cause the error "The system cannot find the batch label specified - key_create"
|
|
209
211
|
:key_create
|
|
210
212
|
@endlocal
|
|
211
213
|
|
|
@@ -75,7 +75,7 @@ class Chef
|
|
|
75
75
|
# It's a regex.
|
|
76
76
|
filter_re = Regexp.new($1, $2 ? Regexp::IGNORECASE : 0)
|
|
77
77
|
config_data.each do |key, value|
|
|
78
|
-
output_data[key] = value if key.to_s
|
|
78
|
+
output_data[key] = value if key.to_s&.match?(filter_re)
|
|
79
79
|
end
|
|
80
80
|
else
|
|
81
81
|
# It's a dotted path string.
|
|
@@ -33,17 +33,27 @@ class Chef
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def run
|
|
36
|
+
credentials_data = self.class.config_loader.parse_credentials_file
|
|
36
37
|
context_file = ChefConfig::PathHelper.home(".chef", "context").freeze
|
|
37
38
|
profile = @name_args[0]&.strip
|
|
38
|
-
if profile
|
|
39
|
+
if profile.nil? || profile.empty?
|
|
40
|
+
show_usage
|
|
41
|
+
ui.fatal("You must specify a profile")
|
|
42
|
+
exit 1
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
if credentials_data.nil? || credentials_data.empty?
|
|
46
|
+
ui.fatal("No profiles found, #{self.class.config_loader.credentials_file_path} does not exist or is empty")
|
|
47
|
+
exit 1
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
if credentials_data[profile].nil?
|
|
51
|
+
raise ChefConfig::ConfigurationError, "Profile #{profile} doesn't exist. Please add it to #{self.class.config_loader.credentials_file_path} and if it is profile with DNS name check that you are not missing single quotes around it as per docs https://docs.chef.io/workstation/knife_setup/#knife-profiles."
|
|
52
|
+
else
|
|
39
53
|
# Ensure the .chef/ folder exists.
|
|
40
54
|
FileUtils.mkdir_p(File.dirname(context_file))
|
|
41
55
|
IO.write(context_file, "#{profile}\n")
|
|
42
56
|
ui.msg("Set default profile to #{profile}")
|
|
43
|
-
else
|
|
44
|
-
show_usage
|
|
45
|
-
ui.fatal("You must specify a profile")
|
|
46
|
-
exit 1
|
|
47
57
|
end
|
|
48
58
|
end
|
|
49
59
|
|
|
@@ -89,7 +89,7 @@ class Chef
|
|
|
89
89
|
url_and_version["versions"].map { |url_by_version| url_by_version["version"] }
|
|
90
90
|
end.flatten
|
|
91
91
|
rescue Net::HTTPClientException => e
|
|
92
|
-
if e.to_s
|
|
92
|
+
if /^404/.match?(e.to_s)
|
|
93
93
|
ui.error("Cannot find a cookbook named #{@cookbook_name} to delete.")
|
|
94
94
|
nil
|
|
95
95
|
else
|
|
@@ -23,9 +23,6 @@ require_relative "../knife"
|
|
|
23
23
|
class Chef
|
|
24
24
|
class Knife
|
|
25
25
|
class CookbookUpload < Knife
|
|
26
|
-
CHECKSUM = "checksum".freeze
|
|
27
|
-
MATCH_CHECKSUM = /[0-9a-f]{32,}/.freeze
|
|
28
|
-
|
|
29
26
|
deps do
|
|
30
27
|
require_relative "../mixin/file_class"
|
|
31
28
|
include Chef::Mixin::FileClass
|
|
@@ -245,7 +242,7 @@ class Chef
|
|
|
245
242
|
# manifest object, but the manifest becomes invalid when you
|
|
246
243
|
# regenerate the metadata
|
|
247
244
|
broken_files = cookbook.dup.manifest_records_by_path.select do |path, info|
|
|
248
|
-
|
|
245
|
+
!/[0-9a-f]{32,}/.match?(info["checksum"])
|
|
249
246
|
end
|
|
250
247
|
unless broken_files.empty?
|
|
251
248
|
broken_filenames = Array(broken_files).map { |path, info| path }
|
|
@@ -28,7 +28,7 @@ class Chef
|
|
|
28
28
|
# bootstrap templates. For backwards compatibility, they +must+ set the
|
|
29
29
|
# following instance variables:
|
|
30
30
|
# * @config - a hash of knife's config values
|
|
31
|
-
# * @run_list - the run list for the node to
|
|
31
|
+
# * @run_list - the run list for the node to bootstrap
|
|
32
32
|
#
|
|
33
33
|
class BootstrapContext
|
|
34
34
|
|
|
@@ -58,7 +58,7 @@ class Chef
|
|
|
58
58
|
exit 1
|
|
59
59
|
end
|
|
60
60
|
cmd = git("status --porcelain")
|
|
61
|
-
if cmd.stdout
|
|
61
|
+
if DIRTY_REPO.match?(cmd.stdout)
|
|
62
62
|
ui.error "You have uncommitted changes to your cookbook repo (#{repo_path}):"
|
|
63
63
|
ui.msg cmd.stdout
|
|
64
64
|
ui.info "Commit or stash your changes before importing cookbooks"
|
|
@@ -44,7 +44,7 @@ class Chef
|
|
|
44
44
|
else
|
|
45
45
|
commands = manifest[KEY]["plugins_by_category"]
|
|
46
46
|
end
|
|
47
|
-
# If any of the specified plugins in the manifest
|
|
47
|
+
# If any of the specified plugins in the manifest don't have a valid path we will
|
|
48
48
|
# eventually get an error and the user will need to rehash - instead, lets just
|
|
49
49
|
# print out 1 error here telling them to rehash
|
|
50
50
|
errors = {}
|
|
@@ -94,7 +94,7 @@ class Chef
|
|
|
94
94
|
def summarize(data)
|
|
95
95
|
if data.is_a?(Chef::Node)
|
|
96
96
|
node = data
|
|
97
|
-
# special case clouds with their split horizon
|
|
97
|
+
# special case clouds with their split horizon thing.
|
|
98
98
|
ip = (node[:cloud] && node[:cloud][:public_ipv4_addrs] && node[:cloud][:public_ipv4_addrs].first) || node[:ipaddress]
|
|
99
99
|
|
|
100
100
|
summarized = <<~SUMMARY
|
|
@@ -95,7 +95,7 @@ class Chef
|
|
|
95
95
|
summarized = ""
|
|
96
96
|
list.each do |data|
|
|
97
97
|
node = data
|
|
98
|
-
# special case clouds with their split horizon
|
|
98
|
+
# special case clouds with their split horizon thing.
|
|
99
99
|
ip = (node[:cloud] && node[:cloud][:public_ipv4_addrs] && node[:cloud][:public_ipv4_addrs].first) || node[:ipaddress]
|
|
100
100
|
fqdn = (node[:cloud] && node[:cloud][:public_hostname]) || node[:fqdn]
|
|
101
101
|
name = node["name"] || node.name
|
|
@@ -32,7 +32,7 @@ class Chef
|
|
|
32
32
|
# optionally filtering by category
|
|
33
33
|
# subcommand_files - returns an array of all subcommand files
|
|
34
34
|
# that could be loaded
|
|
35
|
-
#
|
|
35
|
+
# command_class_from(args) - returns the subcommand class for the
|
|
36
36
|
# user-requested command
|
|
37
37
|
#
|
|
38
38
|
class SubcommandLoader
|
|
@@ -24,10 +24,10 @@ class Chef
|
|
|
24
24
|
class Knife
|
|
25
25
|
module Core
|
|
26
26
|
# Instances of BootstrapContext are the context objects (i.e., +self+) for
|
|
27
|
-
# bootstrap templates. For backwards
|
|
27
|
+
# bootstrap templates. For backwards compatibility, they +must+ set the
|
|
28
28
|
# following instance variables:
|
|
29
29
|
# * @config - a hash of knife's config values
|
|
30
|
-
# * @run_list - the run list for the node to
|
|
30
|
+
# * @run_list - the run list for the node to bootstrap
|
|
31
31
|
#
|
|
32
32
|
class WindowsBootstrapContext < BootstrapContext
|
|
33
33
|
attr_accessor :config
|
|
@@ -41,6 +41,21 @@ class Chef
|
|
|
41
41
|
super(config, run_list, chef_config, secret)
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
+
# This is a duplicate of ChefConfig::PathHelper.cleanpath, however
|
|
45
|
+
# this presumes Windows so we can avoid changing the method definitions
|
|
46
|
+
# across Chef, ChefConfig, and ChefUtils for the circumstance where
|
|
47
|
+
# the methods are being run for a system other than the one Ruby is
|
|
48
|
+
# executing on.
|
|
49
|
+
#
|
|
50
|
+
# We only need to cleanpath the paths that we are passing to cmd.exe,
|
|
51
|
+
# anything written to a configuration file or passed as an argument
|
|
52
|
+
# will be interpreted by ruby later and do the right thing.
|
|
53
|
+
def cleanpath(path)
|
|
54
|
+
path = Pathname.new(path).cleanpath.to_s
|
|
55
|
+
path = path.gsub(File::SEPARATOR, '\\')
|
|
56
|
+
path
|
|
57
|
+
end
|
|
58
|
+
|
|
44
59
|
def validation_key
|
|
45
60
|
if File.exist?(File.expand_path(chef_config[:validation_key]))
|
|
46
61
|
IO.read(File.expand_path(chef_config[:validation_key]))
|
|
@@ -160,7 +175,7 @@ class Chef
|
|
|
160
175
|
|
|
161
176
|
def start_chef
|
|
162
177
|
bootstrap_environment_option = bootstrap_environment.nil? ? "" : " -E #{bootstrap_environment}"
|
|
163
|
-
start_chef = "SET \"PATH=%SystemRoot%\\system32;%SystemRoot%;%SystemRoot%\\System32\\Wbem;%SYSTEMROOT%\\System32\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;#{ChefConfig::Config.c_opscode_dir}
|
|
178
|
+
start_chef = "SET \"PATH=%SystemRoot%\\system32;%SystemRoot%;%SystemRoot%\\System32\\Wbem;%SYSTEMROOT%\\System32\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;#{ChefConfig::Config.c_opscode_dir}\\bin;#{ChefConfig::Config.c_opscode_dir}\\embedded\\bin\;%PATH%\"\n"
|
|
164
179
|
start_chef << "#{Chef::Dist::CLIENT} -c #{ChefConfig::Config.etc_chef_dir(true)}/client.rb -j #{ChefConfig::Config.etc_chef_dir(true)}/first-boot.json#{bootstrap_environment_option}\n"
|
|
165
180
|
end
|
|
166
181
|
|
|
@@ -262,7 +277,7 @@ class Chef
|
|
|
262
277
|
end
|
|
263
278
|
|
|
264
279
|
def bootstrap_directory
|
|
265
|
-
ChefConfig::Config.etc_chef_dir(true)
|
|
280
|
+
cleanpath(ChefConfig::Config.etc_chef_dir(true))
|
|
266
281
|
end
|
|
267
282
|
|
|
268
283
|
def local_download_path
|
|
@@ -54,7 +54,7 @@ class Chef
|
|
|
54
54
|
rest.get("data/#{@data_bag_name}")
|
|
55
55
|
ui.info("Data bag #{@data_bag_name} already exists")
|
|
56
56
|
rescue Net::HTTPClientException => e
|
|
57
|
-
raise unless e.to_s
|
|
57
|
+
raise unless /^404/.match?(e.to_s)
|
|
58
58
|
|
|
59
59
|
# if it doesn't exists, try to create it
|
|
60
60
|
rest.post("data", { "name" => @data_bag_name })
|
|
@@ -42,7 +42,7 @@ class Chef
|
|
|
42
42
|
option :expiration_date,
|
|
43
43
|
short: "-e DATE",
|
|
44
44
|
long: "--expiration-date DATE",
|
|
45
|
-
description: "Optionally pass the expiration date for the key in ISO 8601
|
|
45
|
+
description: "Optionally pass the expiration date for the key in ISO 8601 formatted string: YYYY-MM-DDTHH:MM:SSZ e.g. 2013-12-24T21:00:00Z. Defaults to infinity if not passed. UTC timezone assumed."
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
end
|
|
@@ -47,7 +47,7 @@ class Chef
|
|
|
47
47
|
option :expiration_date,
|
|
48
48
|
short: "-e DATE",
|
|
49
49
|
long: "--expiration-date DATE",
|
|
50
|
-
description: "Updates the expiration_date field of your key if passed. Pass in ISO 8601
|
|
50
|
+
description: "Updates the expiration_date field of your key if passed. Pass in ISO 8601 formatted string: YYYY-MM-DDTHH:MM:SSZ e.g. 2013-12-24T21:00:00Z or infinity. UTC timezone assumed."
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
end
|
data/lib/chef/knife/ssh.rb
CHANGED
|
@@ -59,7 +59,7 @@ class Chef
|
|
|
59
59
|
|
|
60
60
|
option :prefix_attribute,
|
|
61
61
|
long: "--prefix-attribute ATTR",
|
|
62
|
-
description: "The attribute to use for prefixing the
|
|
62
|
+
description: "The attribute to use for prefixing the output - default depends on the context."
|
|
63
63
|
|
|
64
64
|
option :ssh_user,
|
|
65
65
|
short: "-x USERNAME",
|
|
@@ -364,7 +364,7 @@ class Chef
|
|
|
364
364
|
|
|
365
365
|
ch.on_data do |ichannel, data|
|
|
366
366
|
print_data(ichannel.connection[:prefix], data)
|
|
367
|
-
if
|
|
367
|
+
if /^knife sudo password: /.match?(data)
|
|
368
368
|
print_data(ichannel.connection[:prefix], "\n")
|
|
369
369
|
ichannel.send_data("#{get_password}\n")
|
|
370
370
|
end
|
|
@@ -132,7 +132,7 @@ class Chef
|
|
|
132
132
|
res = Chef::JSONCompat.from_json(http_resp.body)
|
|
133
133
|
if http_resp.code.to_i != 201
|
|
134
134
|
if res["error_messages"]
|
|
135
|
-
if res["error_messages"][0]
|
|
135
|
+
if /Version already exists/.match?(res["error_messages"][0])
|
|
136
136
|
ui.error "The same version of this cookbook already exists on Supermarket."
|
|
137
137
|
exit(1)
|
|
138
138
|
else
|
|
@@ -48,7 +48,7 @@ class Chef
|
|
|
48
48
|
begin
|
|
49
49
|
rest.delete "#{config[:supermarket_site]}/api/v1/cookbooks/#{@name_args[0]}"
|
|
50
50
|
rescue Net::HTTPClientException => e
|
|
51
|
-
raise e unless e.message
|
|
51
|
+
raise e unless /Forbidden/.match?(e.message)
|
|
52
52
|
|
|
53
53
|
ui.error "Forbidden: You must be the maintainer of #{@cookbook_name} to unshare it."
|
|
54
54
|
exit 1
|
data/lib/chef/log.rb
CHANGED
|
@@ -21,7 +21,7 @@ require "logger"
|
|
|
21
21
|
require_relative "monologger"
|
|
22
22
|
require_relative "exceptions"
|
|
23
23
|
require "mixlib/log"
|
|
24
|
-
require_relative "log/syslog" unless RUBY_PLATFORM
|
|
24
|
+
require_relative "log/syslog" unless RUBY_PLATFORM.match?(/mswin|mingw|windows/)
|
|
25
25
|
require_relative "log/winevt"
|
|
26
26
|
|
|
27
27
|
class Chef
|
|
@@ -53,7 +53,7 @@ class Chef
|
|
|
53
53
|
<<~EOH
|
|
54
54
|
The reregister command only supports server API version 0.
|
|
55
55
|
The server that received the request supports a min version of #{min_version} and a max version of #{max_version}.
|
|
56
|
-
User keys are now managed via the key rotation
|
|
56
|
+
User keys are now managed via the key rotation commands.
|
|
57
57
|
Please refer to the documentation on how to manage your keys via the key rotation commands:
|
|
58
58
|
https://docs.chef.io/ctl_chef_server/#key-rotation
|
|
59
59
|
EOH
|
data/lib/chef/mixin/checksum.rb
CHANGED
|
@@ -218,7 +218,7 @@ class Chef
|
|
|
218
218
|
# Chef 12 backward compatibility
|
|
219
219
|
::OpenSSL::PKey::EC.send(:alias_method, :private?, :private_key?)
|
|
220
220
|
|
|
221
|
-
request.sign(key, ::OpenSSL::Digest
|
|
221
|
+
request.sign(key, ::OpenSSL::Digest.new("SHA256"))
|
|
222
222
|
request
|
|
223
223
|
end
|
|
224
224
|
|
|
@@ -289,7 +289,7 @@ class Chef
|
|
|
289
289
|
cert.add_extension ef.create_extension("authorityKeyIdentifier",
|
|
290
290
|
"keyid:always,issuer:always")
|
|
291
291
|
|
|
292
|
-
cert.sign(key, ::OpenSSL::Digest
|
|
292
|
+
cert.sign(key, ::OpenSSL::Digest.new("SHA256"))
|
|
293
293
|
cert
|
|
294
294
|
end
|
|
295
295
|
|
|
@@ -319,7 +319,7 @@ class Chef
|
|
|
319
319
|
crl.add_extension ::OpenSSL::X509::Extension.new("crlNumber", ::OpenSSL::ASN1::Integer(1))
|
|
320
320
|
crl.add_extension ef.create_extension("authorityKeyIdentifier",
|
|
321
321
|
"keyid:always,issuer:always")
|
|
322
|
-
crl.sign(ca_private_key, ::OpenSSL::Digest
|
|
322
|
+
crl.sign(ca_private_key, ::OpenSSL::Digest.new("SHA256"))
|
|
323
323
|
crl
|
|
324
324
|
end
|
|
325
325
|
|
|
@@ -398,7 +398,7 @@ class Chef
|
|
|
398
398
|
::OpenSSL::ASN1::Integer(get_next_crl_number(crl)))]
|
|
399
399
|
crl.add_extension ef.create_extension("authorityKeyIdentifier",
|
|
400
400
|
"keyid:always,issuer:always")
|
|
401
|
-
crl.sign(ca_private_key, ::OpenSSL::Digest
|
|
401
|
+
crl.sign(ca_private_key, ::OpenSSL::Digest.new("SHA256"))
|
|
402
402
|
crl
|
|
403
403
|
end
|
|
404
404
|
|
|
@@ -264,7 +264,7 @@ class Chef
|
|
|
264
264
|
end
|
|
265
265
|
|
|
266
266
|
result = properties.values.select(&:identity?)
|
|
267
|
-
# if there are no other identity
|
|
267
|
+
# if there are no other identity properties set, then the name_property becomes the identity, or
|
|
268
268
|
# failing that we use the actual name.
|
|
269
269
|
if result.empty?
|
|
270
270
|
result = name_property ? [ properties[name_property] ] : [ properties[:name] ]
|
|
@@ -355,7 +355,7 @@ class Chef
|
|
|
355
355
|
#
|
|
356
356
|
# @param other [Object] the other object (Chef::Resource) which implements the properties API
|
|
357
357
|
# @param includes [Array<Symbol>] splat-args list of symbols of the properties to copy.
|
|
358
|
-
# @param exclude [Array<Symbol>] list of
|
|
358
|
+
# @param exclude [Array<Symbol>] list of symbols of the properties to exclude.
|
|
359
359
|
# @return the self object the properties were copied to for method chaining
|
|
360
360
|
#
|
|
361
361
|
def copy_properties_from(other, *includes, exclude: [ :name ])
|
data/lib/chef/mixin/securable.rb
CHANGED
|
@@ -172,14 +172,14 @@ class Chef
|
|
|
172
172
|
end
|
|
173
173
|
end
|
|
174
174
|
|
|
175
|
-
if RUBY_PLATFORM
|
|
175
|
+
if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
|
|
176
176
|
include WindowsSecurableAttributes
|
|
177
177
|
end
|
|
178
178
|
|
|
179
179
|
# Callback that fires when included; will extend the including class
|
|
180
180
|
# with WindowsMacros and define #rights and #deny_rights on it.
|
|
181
181
|
def self.included(including_class)
|
|
182
|
-
if RUBY_PLATFORM
|
|
182
|
+
if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
|
|
183
183
|
including_class.extend(WindowsMacros)
|
|
184
184
|
# create a default 'rights' attribute
|
|
185
185
|
including_class.rights_attribute(:rights)
|
data/lib/chef/mixin/shell_out.rb
CHANGED
|
@@ -71,7 +71,7 @@ class Chef
|
|
|
71
71
|
default_val = 900
|
|
72
72
|
return options if options.key?(:timeout)
|
|
73
73
|
|
|
74
|
-
# FIXME: need to nuke
|
|
74
|
+
# FIXME: need to nuke descendent tracker out of Chef::Provider so we can just define that class here without requiring the
|
|
75
75
|
# world, and then just use symbol lookup
|
|
76
76
|
if obj.class.ancestors.map(&:name).include?("Chef::Provider") && obj.respond_to?(:new_resource) && obj.new_resource.respond_to?(:timeout) && !options.key?(:timeout)
|
|
77
77
|
options[:timeout] = obj.new_resource.timeout ? obj.new_resource.timeout.to_f : default_val
|
data/lib/chef/node/attribute.rb
CHANGED
|
@@ -184,7 +184,7 @@ class Chef
|
|
|
184
184
|
# return the role level override attribute component
|
|
185
185
|
attr_reader :role_override
|
|
186
186
|
|
|
187
|
-
# return the
|
|
187
|
+
# return the environment level override attribute component
|
|
188
188
|
attr_reader :env_override
|
|
189
189
|
|
|
190
190
|
# return the force override level attribute component
|
|
@@ -535,7 +535,7 @@ class Chef
|
|
|
535
535
|
e
|
|
536
536
|
end
|
|
537
537
|
|
|
538
|
-
# Deep merge all attribute levels using hash-only merging between different
|
|
538
|
+
# Deep merge all attribute levels using hash-only merging between different precedence
|
|
539
539
|
# levels (so override arrays completely replace arrays set at any default level).
|
|
540
540
|
#
|
|
541
541
|
# The path allows for selectively deep-merging a subtree of the node object.
|
|
@@ -120,7 +120,7 @@ class Chef
|
|
|
120
120
|
# ImmutableMash acts like a Mash (Hash that is indifferent to String or
|
|
121
121
|
# Symbol keys), with some important exceptions:
|
|
122
122
|
# * Methods that mutate state are overridden to raise an error instead.
|
|
123
|
-
# * Methods that read from the collection are
|
|
123
|
+
# * Methods that read from the collection are overridden so that they check
|
|
124
124
|
# if the Chef::Node::Attribute has been modified since an instance of
|
|
125
125
|
# this class was generated. An error is raised if the object detects that
|
|
126
126
|
# it is stale.
|
|
@@ -328,7 +328,7 @@ class Chef
|
|
|
328
328
|
end
|
|
329
329
|
end
|
|
330
330
|
|
|
331
|
-
# Do some
|
|
331
|
+
# Do some minimal validation of the policyfile we fetched from the
|
|
332
332
|
# server. Compatibility mode relies on using data bags to store policy
|
|
333
333
|
# files; therefore no real validation will be performed server-side and
|
|
334
334
|
# we need to make additional checks to ensure the data will be formatted
|