chef 16.1.16-universal-mingw32 → 16.3.45-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 +6 -7
- data/README.md +3 -3
- data/Rakefile +3 -16
- data/chef-universal-mingw32.gemspec +2 -2
- data/chef.gemspec +7 -6
- data/lib/chef/application.rb +12 -0
- 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/{whitelist.rb → attribute_allowlist.rb} +11 -11
- data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +1 -1
- data/lib/chef/client.rb +3 -3
- data/lib/chef/cookbook/chefignore.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +1 -1
- data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
- data/lib/chef/cookbook/syntax_check.rb +1 -2
- data/lib/chef/cookbook_loader.rb +15 -29
- data/lib/chef/cookbook_version.rb +2 -2
- data/lib/chef/data_bag.rb +5 -6
- data/lib/chef/deprecated.rb +12 -0
- data/lib/chef/digester.rb +3 -2
- data/lib/chef/dsl/platform_introspection.rb +2 -0
- data/lib/chef/environment.rb +1 -2
- data/lib/chef/exceptions.rb +3 -0
- 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/error_inspectors/compile_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
- data/lib/chef/handler.rb +2 -0
- data/lib/chef/http.rb +27 -13
- data/lib/chef/http/authenticator.rb +3 -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/knife.rb +5 -5
- data/lib/chef/knife/bootstrap.rb +19 -19
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
- data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
- data/lib/chef/knife/client_bulk_delete.rb +1 -1
- data/lib/chef/knife/config_get.rb +2 -1
- data/lib/chef/knife/config_list_profiles.rb +4 -1
- data/lib/chef/knife/config_use_profile.rb +15 -5
- data/lib/chef/knife/configure.rb +1 -1
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +6 -14
- 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/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -0
- data/lib/chef/knife/core/subcommand_loader.rb +20 -1
- data/lib/chef/knife/core/ui.rb +8 -2
- data/lib/chef/knife/core/windows_bootstrap_context.rb +2 -3
- data/lib/chef/knife/data_bag_create.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/rehash.rb +3 -21
- data/lib/chef/knife/role_bulk_delete.rb +1 -1
- data/lib/chef/knife/ssh.rb +6 -2
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/log.rb +8 -3
- data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
- data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
- data/lib/chef/mixin/openssl_helper.rb +27 -5
- data/lib/chef/mixin/path_sanity.rb +5 -4
- data/lib/chef/mixin/securable.rb +2 -2
- data/lib/chef/mixin/shell_out.rb +4 -188
- data/lib/chef/mixin/template.rb +1 -0
- data/lib/chef/mixin/which.rb +6 -3
- data/lib/chef/mixins.rb +1 -0
- data/lib/chef/node.rb +36 -12
- data/lib/chef/node_map.rb +21 -18
- data/lib/chef/platform/service_helpers.rb +31 -28
- data/lib/chef/powershell.rb +1 -1
- data/lib/chef/provider/batch.rb +3 -10
- data/lib/chef/provider/cron.rb +2 -14
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/git.rb +12 -4
- 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/mount/aix.rb +1 -1
- data/lib/chef/provider/mount/solaris.rb +0 -1
- data/lib/chef/provider/mount/windows.rb +2 -2
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/package/openbsd.rb +1 -1
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/powershell.rb +6 -2
- data/lib/chef/provider/package/rubygems.rb +2 -2
- data/lib/chef/provider/package/snap.rb +97 -29
- data/lib/chef/provider/package/windows.rb +9 -4
- 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/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +10 -14
- data/lib/chef/provider/remote_file/http.rb +4 -1
- data/lib/chef/provider/script.rb +4 -75
- data/lib/chef/provider/service.rb +2 -2
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +4 -4
- data/lib/chef/provider/service/redhat.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/dscl.rb +4 -4
- data/lib/chef/provider/user/linux.rb +3 -3
- data/lib/chef/provider/user/mac.rb +5 -5
- data/lib/chef/provider/windows_script.rb +87 -25
- data/lib/chef/provider/yum_repository.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +31 -11
- data/lib/chef/resource.rb +24 -11
- 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/build_essential.rb +2 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +14 -2
- data/lib/chef/resource/chef_gem.rb +57 -21
- data/lib/chef/resource/chocolatey_feature.rb +1 -2
- 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 +13 -5
- data/lib/chef/resource/csh.rb +0 -1
- data/lib/chef/resource/dmg_package.rb +2 -2
- data/lib/chef/resource/execute.rb +479 -9
- data/lib/chef/resource/file.rb +1 -1
- 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 +23 -36
- data/lib/chef/resource/kernel_module.rb +14 -1
- data/lib/chef/resource/launchd.rb +1 -1
- data/lib/chef/resource/lwrp_base.rb +1 -0
- data/lib/chef/resource/macos_userdefaults.rb +176 -61
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +11 -14
- data/lib/chef/resource/openssl_x509_crl.rb +1 -2
- 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/service.rb +2 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
- data/lib/chef/resource/sudo.rb +30 -3
- 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/user_ulimit.rb +1 -1
- 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 +26 -0
- data/lib/chef/resource/windows_dns_record.rb +17 -0
- data/lib/chef/resource/windows_firewall_profile.rb +197 -0
- 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 +1 -1
- data/lib/chef/resource/windows_script.rb +2 -16
- data/lib/chef/resource/windows_security_policy.rb +67 -36
- data/lib/chef/resource/windows_shortcut.rb +1 -2
- data/lib/chef/resource/windows_task.rb +4 -4
- data/lib/chef/resource/windows_user_privilege.rb +30 -7
- data/lib/chef/resource/yum_repository.rb +9 -9
- data/lib/chef/resource_inspector.rb +7 -1
- data/lib/chef/resources.rb +5 -2
- data/lib/chef/role.rb +1 -2
- data/lib/chef/search/query.rb +1 -1
- data/lib/chef/server_api_versions.rb +4 -0
- data/lib/chef/shell/shell_session.rb +2 -0
- data/lib/chef/util/diff.rb +2 -3
- data/lib/chef/util/windows/net_user.rb +1 -1
- data/lib/chef/util/windows/volume.rb +1 -1
- data/lib/chef/version.rb +2 -2
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/registry.rb +3 -4
- data/lib/chef/win32/security.rb +1 -1
- 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/knife/ssh_spec.rb +5 -16
- data/spec/functional/resource/aix_service_spec.rb +9 -2
- data/spec/functional/resource/aixinit_service_spec.rb +1 -2
- data/spec/functional/resource/apt_package_spec.rb +0 -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 -2
- data/spec/functional/resource/dnf_package_spec.rb +4 -1
- data/spec/functional/resource/execute_spec.rb +1 -1
- data/spec/functional/resource/git_spec.rb +23 -1
- data/spec/functional/resource/group_spec.rb +15 -3
- data/spec/functional/resource/ifconfig_spec.rb +9 -1
- data/spec/functional/resource/insserv_spec.rb +3 -3
- 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 +9 -15
- 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 +12 -11
- data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
- data/spec/functional/resource/yum_package_spec.rb +4 -1
- data/spec/functional/resource/zypper_package_spec.rb +4 -1
- data/spec/functional/run_lock_spec.rb +2 -1
- data/spec/functional/shell_spec.rb +5 -6
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/crypto_spec.rb +1 -1
- data/spec/integration/knife/config_list_profiles_spec.rb +30 -2
- data/spec/integration/knife/config_use_profile_spec.rb +55 -2
- data/spec/integration/knife/cookbook_upload_spec.rb +28 -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/accumulator_spec.rb +1 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/integration/recipes/lwrp_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +1 -1
- data/spec/integration/recipes/notifying_block_spec.rb +1 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
- data/spec/integration/recipes/resource_load_spec.rb +4 -2
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +1 -1
- data/spec/scripts/ssl-serve.rb +1 -1
- data/spec/spec_helper.rb +10 -4
- data/spec/support/chef_helpers.rb +1 -20
- data/spec/support/platform_helpers.rb +1 -3
- 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/file_resource.rb +0 -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 +2 -2
- data/spec/support/shared/integration/knife_support.rb +2 -9
- data/spec/support/shared/unit/application_dot_d.rb +0 -1
- data/spec/support/shared/unit/execute_resource.rb +1 -1
- data/spec/support/shared/unit/provider/file.rb +12 -8
- data/spec/unit/application/solo_spec.rb +4 -2
- data/spec/unit/application_spec.rb +11 -2
- data/spec/unit/chef_fs/config_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +8 -8
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
- data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
- data/spec/unit/client_spec.rb +4 -1
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
- data/spec/unit/data_bag_spec.rb +6 -3
- data/spec/unit/data_collector_spec.rb +1 -1
- data/spec/unit/decorator_spec.rb +23 -23
- data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
- data/spec/unit/environment_spec.rb +5 -1
- data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
- data/spec/unit/guard_interpreter_spec.rb +1 -1
- data/spec/unit/http/api_versions_spec.rb +20 -2
- data/spec/unit/http/ssl_policies_spec.rb +20 -0
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +5 -8
- data/spec/unit/knife/cookbook_download_spec.rb +2 -2
- data/spec/unit/knife/cookbook_show_spec.rb +6 -7
- data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
- data/spec/unit/log/syslog_spec.rb +6 -10
- data/spec/unit/log/winevt_spec.rb +21 -13
- data/spec/unit/lwrp_spec.rb +9 -6
- data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
- data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
- 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/securable_spec.rb +0 -1
- data/spec/unit/mixin/shell_out_spec.rb +25 -26
- 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/mixin/which.rb +8 -0
- data/spec/unit/node_spec.rb +98 -11
- data/spec/unit/property_spec.rb +6 -6
- 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 -8
- data/spec/unit/provider/git_spec.rb +3 -3
- data/spec/unit/provider/ifconfig_spec.rb +0 -1
- data/spec/unit/provider/mdadm_spec.rb +1 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- 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/powershell_spec.rb +95 -86
- data/spec/unit/provider/package/rubygems_spec.rb +5 -10
- data/spec/unit/provider/package/smartos_spec.rb +1 -1
- 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/package/windows_spec.rb +30 -53
- data/spec/unit/provider/powershell_script_spec.rb +3 -45
- data/spec/unit/provider/script_spec.rb +20 -110
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/windows_spec.rb +2 -6
- data/spec/unit/provider/systemd_unit_spec.rb +28 -24
- 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/provider_spec.rb +1 -0
- 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/execute_spec.rb +10 -0
- 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/macos_user_defaults_spec.rb +103 -2
- 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_firewall_profile_spec.rb +77 -0
- data/spec/unit/resource/windows_package_spec.rb +1 -0
- 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_reporter_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +84 -1
- data/spec/unit/role_spec.rb +23 -21
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/server_api_spec.rb +43 -16
- data/spec/unit/util/backup_spec.rb +1 -1
- data/spec/unit/util/diff_spec.rb +1 -15
- 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/security_spec.rb +4 -3
- metadata +68 -40
- data/lib/chef/resource/cron.rb +0 -157
@@ -130,10 +130,13 @@ class Chef
|
|
130
130
|
# which tricks Chef::REST into decompressing the response body. In this
|
131
131
|
# case you'd end up with a tar archive (no gzip) named, e.g., foo.tgz,
|
132
132
|
# which is not what you wanted.
|
133
|
-
if uri.to_s
|
133
|
+
if /gz$/.match?(uri.to_s)
|
134
134
|
logger.trace("Turning gzip compression off due to filename ending in gz")
|
135
135
|
opts[:disable_gzip] = true
|
136
136
|
end
|
137
|
+
if new_resource.ssl_verify_mode
|
138
|
+
opts[:ssl_verify_mode] = new_resource.ssl_verify_mode
|
139
|
+
end
|
137
140
|
opts
|
138
141
|
end
|
139
142
|
|
data/lib/chef/provider/script.rb
CHANGED
@@ -16,9 +16,7 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require "tempfile" unless defined?(Tempfile)
|
20
19
|
require_relative "execute"
|
21
|
-
require_relative "../win32/security" if ChefUtils.windows?
|
22
20
|
require "forwardable" unless defined?(Forwardable)
|
23
21
|
|
24
22
|
class Chef
|
@@ -34,84 +32,15 @@ class Chef
|
|
34
32
|
provides :ruby
|
35
33
|
provides :script
|
36
34
|
|
37
|
-
def_delegators :new_resource, :interpreter, :flags
|
38
|
-
|
39
|
-
attr_accessor :code
|
40
|
-
|
41
|
-
def initialize(new_resource, run_context)
|
42
|
-
super
|
43
|
-
self.code = new_resource.code
|
44
|
-
end
|
35
|
+
def_delegators :new_resource, :interpreter, :flags, :code
|
45
36
|
|
46
37
|
def command
|
47
|
-
"\"#{interpreter}\" #{flags}
|
48
|
-
end
|
49
|
-
|
50
|
-
def load_current_resource
|
51
|
-
super
|
52
|
-
end
|
53
|
-
|
54
|
-
action :run do
|
55
|
-
script_file.puts(code)
|
56
|
-
script_file.close
|
57
|
-
|
58
|
-
set_owner_and_group
|
59
|
-
|
60
|
-
super()
|
61
|
-
|
62
|
-
unlink_script_file
|
63
|
-
end
|
64
|
-
|
65
|
-
def set_owner_and_group
|
66
|
-
if ChefUtils.windows?
|
67
|
-
# And on Windows also this is a no-op if there is no user specified.
|
68
|
-
grant_alternate_user_read_access
|
69
|
-
else
|
70
|
-
# FileUtils itself implements a no-op if +user+ or +group+ are nil
|
71
|
-
# You can prove this by running FileUtils.chown(nil,nil,'/tmp/file')
|
72
|
-
# as an unprivileged user.
|
73
|
-
FileUtils.chown(new_resource.user, new_resource.group, script_file.path)
|
74
|
-
end
|
38
|
+
"\"#{interpreter}\" #{flags}"
|
75
39
|
end
|
76
40
|
|
77
|
-
def
|
78
|
-
|
79
|
-
# will already have the correct permissions for the user as part
|
80
|
-
# of the default ACL behavior on Windows.
|
81
|
-
return if new_resource.user.nil?
|
82
|
-
|
83
|
-
# Duplicate the script file's existing DACL
|
84
|
-
# so we can add an ACE later
|
85
|
-
securable_object = Chef::ReservedNames::Win32::Security::SecurableObject.new(script_file.path)
|
86
|
-
aces = securable_object.security_descriptor.dacl.reduce([]) { |result, current| result.push(current) }
|
87
|
-
|
88
|
-
username = new_resource.user
|
89
|
-
|
90
|
-
if new_resource.domain
|
91
|
-
username = new_resource.domain + '\\' + new_resource.user
|
92
|
-
end
|
93
|
-
|
94
|
-
# Create an ACE that allows the alternate user read access to the script
|
95
|
-
# file so it can be read and executed.
|
96
|
-
user_sid = Chef::ReservedNames::Win32::Security::SID.from_account(username)
|
97
|
-
read_ace = Chef::ReservedNames::Win32::Security::ACE.access_allowed(user_sid, Chef::ReservedNames::Win32::API::Security::GENERIC_READ | Chef::ReservedNames::Win32::API::Security::GENERIC_EXECUTE, 0)
|
98
|
-
aces.push(read_ace)
|
99
|
-
acl = Chef::ReservedNames::Win32::Security::ACL.create(aces)
|
100
|
-
|
101
|
-
# This actually applies the modified DACL to the file
|
102
|
-
# Use parentheses to bypass RuboCop / ChefStyle warning
|
103
|
-
# about useless setter
|
104
|
-
(securable_object.dacl = acl)
|
41
|
+
def input
|
42
|
+
code
|
105
43
|
end
|
106
|
-
|
107
|
-
def script_file
|
108
|
-
@script_file ||= Tempfile.open("chef-script")
|
109
|
-
end
|
110
|
-
|
111
|
-
def unlink_script_file
|
112
|
-
script_file && script_file.close!
|
113
|
-
end
|
114
|
-
|
115
44
|
end
|
116
45
|
end
|
117
46
|
end
|
@@ -23,8 +23,8 @@ require "chef-utils" unless defined?(ChefUtils::CANARY)
|
|
23
23
|
class Chef
|
24
24
|
class Provider
|
25
25
|
class Service < Chef::Provider
|
26
|
-
include
|
27
|
-
extend
|
26
|
+
include Chef::Platform::ServiceHelpers
|
27
|
+
extend Chef::Platform::ServiceHelpers
|
28
28
|
|
29
29
|
def supports
|
30
30
|
@supports ||= new_resource.supports.dup
|
@@ -33,7 +33,7 @@ class Chef::Provider::Service::Arch < Chef::Provider::Service::Init
|
|
33
33
|
|
34
34
|
def load_current_resource
|
35
35
|
raise Chef::Exceptions::Service, "Could not find /etc/rc.conf" unless ::File.exists?("/etc/rc.conf")
|
36
|
-
raise Chef::Exceptions::Service, "No DAEMONS found in /etc/rc.conf" unless ::File.read("/etc/rc.conf")
|
36
|
+
raise Chef::Exceptions::Service, "No DAEMONS found in /etc/rc.conf" unless /DAEMONS=\((.*)\)/m.match?(::File.read("/etc/rc.conf"))
|
37
37
|
|
38
38
|
super
|
39
39
|
|
@@ -76,9 +76,9 @@ class Chef
|
|
76
76
|
|
77
77
|
in_info = false
|
78
78
|
::File.readlines(path).each_with_object([]) do |line, acc|
|
79
|
-
if
|
79
|
+
if /^### BEGIN INIT INFO/.match?(line)
|
80
80
|
in_info = true
|
81
|
-
elsif
|
81
|
+
elsif /^### END INIT INFO/.match?(line)
|
82
82
|
break acc
|
83
83
|
elsif in_info
|
84
84
|
if line =~ /Default-(Start|Stop):\s+(\d.*)/
|
@@ -91,7 +91,7 @@ class Chef
|
|
91
91
|
old_services_list = rc_conf_local.match(/^pkg_scripts="(.*)"/)
|
92
92
|
old_services_list = old_services_list ? old_services_list[1].split(" ") : []
|
93
93
|
new_services_list = old_services_list + [new_resource.service_name]
|
94
|
-
if
|
94
|
+
if /^pkg_scripts="(.*)"/.match?(rc_conf_local)
|
95
95
|
new_rcl = rc_conf_local.sub(/^pkg_scripts="(.*)"/, "pkg_scripts=\"#{new_services_list.join(" ")}\"")
|
96
96
|
else
|
97
97
|
new_rcl = rc_conf_local + "\n" + "pkg_scripts=\"#{new_services_list.join(" ")}\"\n"
|
@@ -158,7 +158,7 @@ class Chef
|
|
158
158
|
result = false
|
159
159
|
var_name = builtin_service_enable_variable_name
|
160
160
|
if var_name
|
161
|
-
if
|
161
|
+
if /^#{Regexp.escape(var_name)}=(.*)/.match?(rc_conf)
|
162
162
|
result = true
|
163
163
|
end
|
164
164
|
end
|
@@ -170,7 +170,7 @@ class Chef
|
|
170
170
|
var_name = builtin_service_enable_variable_name
|
171
171
|
if var_name
|
172
172
|
if m = rc_conf.match(/^#{Regexp.escape(var_name)}=(.*)/)
|
173
|
-
unless
|
173
|
+
unless /"?[Nn][Oo]"?/.match?(m[1])
|
174
174
|
result = true
|
175
175
|
end
|
176
176
|
end
|
@@ -186,7 +186,7 @@ class Chef
|
|
186
186
|
if var_name
|
187
187
|
if m = rc_conf_local.match(/^#{Regexp.escape(var_name)}=(.*)/)
|
188
188
|
@enabled_state_found = true
|
189
|
-
unless
|
189
|
+
unless /"?[Nn][Oo]"?/.match?(m[1]) # e.g. looking for httpd_flags=NO
|
190
190
|
result = true
|
191
191
|
end
|
192
192
|
end
|
@@ -87,7 +87,7 @@ class Chef
|
|
87
87
|
chkconfig.stdout.split(/\s+/)[1..-1].each do |level|
|
88
88
|
index = level.split(":").first
|
89
89
|
status = level.split(":").last
|
90
|
-
if level
|
90
|
+
if CHKCONFIG_ON.match?(level)
|
91
91
|
@current_run_levels << index.to_i
|
92
92
|
all_levels_match = false unless run_levels.include?(index.to_i)
|
93
93
|
else
|
@@ -122,7 +122,7 @@ class Chef
|
|
122
122
|
# If the specified revision is an integer, trust it.
|
123
123
|
def revision_int
|
124
124
|
@revision_int ||= begin
|
125
|
-
if new_resource.revision
|
125
|
+
if /^\d+$/.match?(new_resource.revision)
|
126
126
|
new_resource.revision
|
127
127
|
else
|
128
128
|
command = scm(:info, new_resource.repository, new_resource.svn_info_args, authentication, "-r#{new_resource.revision}")
|
@@ -211,7 +211,7 @@ class Chef
|
|
211
211
|
|
212
212
|
def scm(*args)
|
213
213
|
binary = svn_binary
|
214
|
-
binary = "\"#{binary}\"" if
|
214
|
+
binary = "\"#{binary}\"" if /\s/.match?(binary)
|
215
215
|
[binary, *args].compact.join(" ")
|
216
216
|
end
|
217
217
|
|
@@ -215,7 +215,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
|
|
215
215
|
next_uid_guess = base_uid
|
216
216
|
users_uids = run_dscl("list", "/Users", "uid")
|
217
217
|
while next_uid_guess < search_limit + base_uid
|
218
|
-
if users_uids
|
218
|
+
if users_uids&.match?(Regexp.new("#{Regexp.escape(next_uid_guess.to_s)}\n"))
|
219
219
|
next_uid_guess += 1
|
220
220
|
else
|
221
221
|
uid = next_uid_guess
|
@@ -291,7 +291,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
|
|
291
291
|
end
|
292
292
|
|
293
293
|
def validate_home_dir_specification!
|
294
|
-
unless
|
294
|
+
unless %r{^/}.match?(new_resource.home)
|
295
295
|
raise(Chef::Exceptions::InvalidHomeDirectory, "invalid path spec for User: '#{new_resource.username}', home directory: '#{new_resource.home}'")
|
296
296
|
end
|
297
297
|
end
|
@@ -536,7 +536,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
|
|
536
536
|
|
537
537
|
# We flush the cache here in order to make sure that we read fresh information
|
538
538
|
# for the user.
|
539
|
-
shell_out("dscacheutil", "-flushcache") # FIXME: this is
|
539
|
+
shell_out("dscacheutil", "-flushcache") # FIXME: this is macOS version dependent
|
540
540
|
|
541
541
|
begin
|
542
542
|
user_plist_file = "#{USER_PLIST_DIRECTORY}/#{new_resource.username}.plist"
|
@@ -587,7 +587,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
|
|
587
587
|
result = shell_out("dscl", ".", "-#{args[0]}", args[1..-1])
|
588
588
|
return "" if ( args.first =~ /^delete/ ) && ( result.exitstatus != 0 )
|
589
589
|
raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") unless result.exitstatus == 0
|
590
|
-
raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") if
|
590
|
+
raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") if /No such key: /.match?(result.stdout)
|
591
591
|
|
592
592
|
result.stdout
|
593
593
|
end
|
@@ -96,7 +96,7 @@ class Chef
|
|
96
96
|
passwd_s = shell_out("passwd", "-S", new_resource.username, returns: [ 0, 1 ])
|
97
97
|
|
98
98
|
# checking "does not exist" has to come before exit code handling since centos and ubuntu differ in exit codes
|
99
|
-
if
|
99
|
+
if /does not exist/.match?(passwd_s.stderr)
|
100
100
|
return false if whyrun_mode?
|
101
101
|
|
102
102
|
raise Chef::Exceptions::User, "User #{new_resource.username} does not exist when checking lock status for #{new_resource}"
|
@@ -108,8 +108,8 @@ class Chef
|
|
108
108
|
# now the actual output parsing
|
109
109
|
@locked = nil
|
110
110
|
status_line = passwd_s.stdout.split(" ")
|
111
|
-
@locked = false if status_line[1]
|
112
|
-
@locked = true if status_line[1]
|
111
|
+
@locked = false if /^[PN]/.match?(status_line[1])
|
112
|
+
@locked = true if /^L/.match?(status_line[1])
|
113
113
|
|
114
114
|
raise Chef::Exceptions::User, "Cannot determine if user #{new_resource.username} is locked for #{new_resource}" if @locked.nil?
|
115
115
|
|
@@ -163,7 +163,7 @@ class Chef
|
|
163
163
|
# a problem. We'll check stderr and make sure we see that it finished
|
164
164
|
# correctly.
|
165
165
|
res = run_sysadminctl(cmd)
|
166
|
-
unless
|
166
|
+
unless /creating user/.match?(res.downcase)
|
167
167
|
raise Chef::Exceptions::User, "error when creating user: #{res}"
|
168
168
|
end
|
169
169
|
|
@@ -309,7 +309,7 @@ class Chef
|
|
309
309
|
# sysadminctl doesn't exit with a non-zero exit code if it encounters
|
310
310
|
# a problem. We'll check stderr and make sure we see that it finished
|
311
311
|
res = run_sysadminctl(cmd)
|
312
|
-
unless
|
312
|
+
unless /deleting record|not found/.match?(res.downcase)
|
313
313
|
raise Chef::Exceptions::User, "error deleting user: #{res}"
|
314
314
|
end
|
315
315
|
|
@@ -372,7 +372,7 @@ class Chef
|
|
372
372
|
next_uid_guess = base_uid
|
373
373
|
users_uids = run_dscl("list", "/Users", "uid")
|
374
374
|
while next_uid_guess < search_limit + base_uid
|
375
|
-
if users_uids
|
375
|
+
if users_uids&.match?(Regexp.new("#{Regexp.escape(next_uid_guess.to_s)}\n"))
|
376
376
|
next_uid_guess += 1
|
377
377
|
else
|
378
378
|
uid = next_uid_guess
|
@@ -430,7 +430,7 @@ class Chef
|
|
430
430
|
# sysadminctl doesn't exit with a non-zero exit code if it encounters
|
431
431
|
# a problem. We'll check stderr and make sure we see that it finished
|
432
432
|
res = run_sysadminctl(cmd)
|
433
|
-
unless res.downcase
|
433
|
+
unless /done/.match?(res.downcase)
|
434
434
|
raise Chef::Exceptions::User, "error when modifying SecureToken: #{res}"
|
435
435
|
end
|
436
436
|
|
@@ -611,7 +611,7 @@ class Chef
|
|
611
611
|
result = shell_out("dscl", "-plist", ".", "-#{args[0]}", args[1..-1])
|
612
612
|
return "" if ( args.first =~ /^delete/ ) && ( result.exitstatus != 0 )
|
613
613
|
raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") unless result.exitstatus == 0
|
614
|
-
raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") if
|
614
|
+
raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") if /No such key: /.match?(result.stdout)
|
615
615
|
|
616
616
|
result.stdout
|
617
617
|
end
|
@@ -18,57 +18,119 @@
|
|
18
18
|
|
19
19
|
require_relative "script"
|
20
20
|
require_relative "../mixin/windows_architecture_helper"
|
21
|
+
require_relative "../win32/security" if ChefUtils.windows?
|
22
|
+
require "tempfile" unless defined?(Tempfile)
|
21
23
|
|
22
24
|
class Chef
|
23
25
|
class Provider
|
24
26
|
class WindowsScript < Chef::Provider::Script
|
25
27
|
|
26
|
-
attr_reader :is_forced_32bit
|
27
|
-
|
28
28
|
protected
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
def initialize( new_resource, run_context, script_extension = "")
|
33
|
-
super( new_resource, run_context )
|
34
|
-
@script_extension = script_extension
|
30
|
+
attr_accessor :script_file_path
|
35
31
|
|
36
|
-
|
37
|
-
node_windows_architecture(run_context.node)
|
38
|
-
else
|
39
|
-
new_resource.architecture
|
40
|
-
end
|
41
|
-
|
42
|
-
@is_wow64 = wow64_architecture_override_required?(run_context.node, target_architecture)
|
32
|
+
include Chef::Mixin::WindowsArchitectureHelper
|
43
33
|
|
44
|
-
|
34
|
+
def target_architecture
|
35
|
+
@target_architecture ||= if new_resource.architecture.nil?
|
36
|
+
node_windows_architecture(run_context.node)
|
37
|
+
else
|
38
|
+
new_resource.architecture
|
39
|
+
end
|
45
40
|
end
|
46
41
|
|
47
|
-
|
42
|
+
def basepath
|
43
|
+
if forced_32bit_override_required?(run_context.node, target_architecture)
|
44
|
+
wow64_directory
|
45
|
+
else
|
46
|
+
run_context.node["kernel"]["os_info"]["system_directory"]
|
47
|
+
end
|
48
|
+
end
|
48
49
|
|
49
|
-
|
50
|
+
def with_wow64_redirection_disabled
|
50
51
|
wow64_redirection_state = nil
|
51
52
|
|
52
|
-
if
|
53
|
-
wow64_redirection_state = disable_wow64_file_redirection(
|
53
|
+
if wow64_architecture_override_required?(run_context.node, target_architecture)
|
54
|
+
wow64_redirection_state = disable_wow64_file_redirection(run_context.node)
|
54
55
|
end
|
55
56
|
|
56
57
|
begin
|
57
|
-
|
58
|
+
yield
|
58
59
|
rescue
|
59
60
|
raise
|
60
61
|
ensure
|
61
62
|
unless wow64_redirection_state.nil?
|
62
|
-
restore_wow64_file_redirection(
|
63
|
+
restore_wow64_file_redirection(run_context.node, wow64_redirection_state)
|
63
64
|
end
|
64
65
|
end
|
65
66
|
end
|
66
67
|
|
67
|
-
def
|
68
|
-
|
69
|
-
|
68
|
+
def command
|
69
|
+
"\"#{interpreter}\" #{flags} \"#{script_file_path}\""
|
70
|
+
end
|
71
|
+
|
72
|
+
def grant_alternate_user_read_access(file_path)
|
73
|
+
# Do nothing if an alternate user isn't specified -- the file
|
74
|
+
# will already have the correct permissions for the user as part
|
75
|
+
# of the default ACL behavior on Windows.
|
76
|
+
return if new_resource.user.nil?
|
77
|
+
|
78
|
+
# Duplicate the script file's existing DACL
|
79
|
+
# so we can add an ACE later
|
80
|
+
securable_object = Chef::ReservedNames::Win32::Security::SecurableObject.new(file_path)
|
81
|
+
aces = securable_object.security_descriptor.dacl.reduce([]) { |result, current| result.push(current) }
|
82
|
+
|
83
|
+
username = new_resource.user
|
84
|
+
|
85
|
+
if new_resource.domain
|
86
|
+
username = new_resource.domain + '\\' + new_resource.user
|
87
|
+
end
|
88
|
+
|
89
|
+
# Create an ACE that allows the alternate user read access to the script
|
90
|
+
# file so it can be read and executed.
|
91
|
+
user_sid = Chef::ReservedNames::Win32::Security::SID.from_account(username)
|
92
|
+
read_ace = Chef::ReservedNames::Win32::Security::ACE.access_allowed(user_sid, Chef::ReservedNames::Win32::API::Security::GENERIC_READ | Chef::ReservedNames::Win32::API::Security::GENERIC_EXECUTE, 0)
|
93
|
+
aces.push(read_ace)
|
94
|
+
acl = Chef::ReservedNames::Win32::Security::ACL.create(aces)
|
95
|
+
|
96
|
+
# This actually applies the modified DACL to the file
|
97
|
+
# Use parentheses to bypass RuboCop / ChefStyle warning
|
98
|
+
# about useless setter
|
99
|
+
(securable_object.dacl = acl)
|
100
|
+
end
|
101
|
+
|
102
|
+
def with_temp_script_file
|
103
|
+
Tempfile.open(["chef-script", script_extension]) do |script_file|
|
104
|
+
script_file.puts(code)
|
105
|
+
script_file.close
|
106
|
+
|
107
|
+
grant_alternate_user_read_access(script_file.path)
|
108
|
+
|
109
|
+
# This needs to be set here so that the call to #command in Execute works.
|
110
|
+
self.script_file_path = script_file.path
|
111
|
+
|
112
|
+
yield
|
113
|
+
|
114
|
+
self.script_file_path = nil
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def input
|
119
|
+
nil
|
120
|
+
end
|
121
|
+
|
122
|
+
public
|
123
|
+
|
124
|
+
action :run do
|
125
|
+
with_wow64_redirection_disabled do
|
126
|
+
with_temp_script_file do
|
127
|
+
super()
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
70
131
|
|
71
|
-
|
132
|
+
def script_extension
|
133
|
+
raise Chef::Exceptions::Override, "You must override #{__method__} in #{self}"
|
72
134
|
end
|
73
135
|
end
|
74
136
|
end
|