chef 16.0.287-universal-mingw32 → 16.2.73-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -72,6 +72,7 @@ class Chef
|
|
72
72
|
6 => TaskScheduler::TASK_SIXTH,
|
73
73
|
7 => TaskScheduler::TASK_SEVENTH,
|
74
74
|
8 => TaskScheduler::TASK_EIGHTH,
|
75
|
+
# cspell:disable-next-line
|
75
76
|
9 => TaskScheduler::TASK_NINETH,
|
76
77
|
10 => TaskScheduler::TASK_TENTH,
|
77
78
|
11 => TaskScheduler::TASK_ELEVENTH,
|
@@ -93,6 +94,7 @@ class Chef
|
|
93
94
|
27 => TaskScheduler::TASK_TWENTY_SEVENTH,
|
94
95
|
28 => TaskScheduler::TASK_TWENTY_EIGHTH,
|
95
96
|
29 => TaskScheduler::TASK_TWENTY_NINTH,
|
97
|
+
# cspell:disable-next-line
|
96
98
|
30 => TaskScheduler::TASK_THIRTYETH,
|
97
99
|
31 => TaskScheduler::TASK_THIRTY_FIRST,
|
98
100
|
}.freeze
|
@@ -229,7 +231,7 @@ class Chef
|
|
229
231
|
|
230
232
|
private
|
231
233
|
|
232
|
-
#
|
234
|
+
# separated command arguments from :command property
|
233
235
|
def set_command_and_arguments
|
234
236
|
cmd, *args = Chef::Util::PathHelper.split_args(new_resource.command)
|
235
237
|
new_resource.command = cmd
|
@@ -577,7 +579,7 @@ class Chef
|
|
577
579
|
|
578
580
|
def logon_type
|
579
581
|
# Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/aa383566(v=vs.85).aspx
|
580
|
-
# if nothing is passed as logon_type the TASK_LOGON_SERVICE_ACCOUNT is getting set as default so using that for
|
582
|
+
# if nothing is passed as logon_type the TASK_LOGON_SERVICE_ACCOUNT is getting set as default so using that for comparison.
|
581
583
|
user_id = new_resource.user.to_s
|
582
584
|
password = new_resource.password.to_s
|
583
585
|
if Chef::ReservedNames::Win32::Security::SID.service_account_user?(user_id)
|
@@ -115,28 +115,48 @@ class Chef
|
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
118
|
+
# the version of gpg installed on the system
|
119
|
+
#
|
120
|
+
# @return [Gem::Version] the version of GPG
|
121
|
+
def gpg_version
|
122
|
+
so = shell_out!("gpg --version")
|
123
|
+
# matches 2.0 and 2.2 versions from SLES 12 and 15: https://rubular.com/r/e6D0WfGK6SXvUp
|
124
|
+
version = /gpg \(GnuPG\)\s*(.*)/.match(so.stdout)[1]
|
125
|
+
logger.trace("GPG package version is #{version}")
|
126
|
+
Gem::Version.new(version)
|
127
|
+
end
|
128
|
+
|
118
129
|
# is the provided key already installed
|
119
130
|
# @param [String] key_path the path to the key on the local filesystem
|
120
131
|
#
|
121
132
|
# @return [boolean] is the key already known by rpm
|
122
133
|
def key_installed?(key_path)
|
123
|
-
so = shell_out("rpm -qa gpg-pubkey*")
|
134
|
+
so = shell_out("/bin/rpm -qa gpg-pubkey*")
|
124
135
|
# expected output & match: http://rubular.com/r/RdF7EcXEtb
|
125
|
-
status = /gpg-pubkey-#{
|
136
|
+
status = /gpg-pubkey-#{short_key_id(key_path)}/.match(so.stdout)
|
126
137
|
logger.trace("GPG key at #{key_path} is known by rpm? #{status ? "true" : "false"}")
|
127
138
|
status
|
128
139
|
end
|
129
140
|
|
130
|
-
# extract the gpg key
|
141
|
+
# extract the gpg key's short key id from a local file. Learning moment: This 8 hex value ID
|
142
|
+
# is sometimes incorrectly called the fingerprint. The fingerprint is the full length value
|
143
|
+
# and googling for that will just result in sad times.
|
144
|
+
#
|
131
145
|
# @param [String] key_path the path to the key on the local filesystem
|
132
146
|
#
|
133
|
-
# @return [String] the
|
134
|
-
def
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
147
|
+
# @return [String] the short key id of the key
|
148
|
+
def short_key_id(key_path)
|
149
|
+
if gpg_version >= Gem::Version.new("2.2") # SLES 15+
|
150
|
+
so = shell_out!("gpg --import-options import-show --dry-run --import --with-colons #{key_path}")
|
151
|
+
# expected output and match: https://rubular.com/r/uXWJo3yfkli1qA
|
152
|
+
short_key_id = /fpr:*\h*(\h{8}):/.match(so.stdout)[1].downcase
|
153
|
+
else # SLES 12 and earlier
|
154
|
+
so = shell_out!("gpg --with-fingerprint #{key_path}")
|
155
|
+
# expected output and match: http://rubular.com/r/BpfMjxySQM
|
156
|
+
short_key_id = %r{pub\s*\S*/(\S*)}.match(so.stdout)[1].downcase
|
157
|
+
end
|
158
|
+
logger.trace("GPG short key ID of key at #{key_path} is #{short_key_id}")
|
159
|
+
short_key_id
|
140
160
|
end
|
141
161
|
|
142
162
|
# install the provided gpg key
|
data/lib/chef/resource.rb
CHANGED
@@ -451,6 +451,17 @@ class Chef
|
|
451
451
|
description: "Determines whether or not the resource is executed during the compile time phase.",
|
452
452
|
default: false, desired_state: false
|
453
453
|
|
454
|
+
# Set a umask to be used for the duration of converging the resource.
|
455
|
+
# Defaults to `nil`, which means to use the system umask.
|
456
|
+
#
|
457
|
+
# @param arg [String] The umask to apply while converging the resource.
|
458
|
+
# @return [Boolean] The umask to apply while converging the resource.
|
459
|
+
#
|
460
|
+
property :umask, String,
|
461
|
+
desired_state: false,
|
462
|
+
introduced: "16.2",
|
463
|
+
description: "Set a umask to be used for the duration of converging the resource. Defaults to `nil`, which means to use the system umask. Unsupported on Windows because Windows lacks a direct equivalent to UNIX's umask."
|
464
|
+
|
454
465
|
# The time it took (in seconds) to run the most recently-run action. Not
|
455
466
|
# cumulative across actions. This is set to 0 as soon as a new action starts
|
456
467
|
# running, and set to the elapsed time at the end of the action.
|
@@ -588,7 +599,9 @@ class Chef
|
|
588
599
|
begin
|
589
600
|
return if should_skip?(action)
|
590
601
|
|
591
|
-
|
602
|
+
with_umask do
|
603
|
+
provider_for_action(action).run_action
|
604
|
+
end
|
592
605
|
rescue StandardError => e
|
593
606
|
if ignore_failure
|
594
607
|
logger.error("#{custom_exception_message(e)}; ignore_failure is set, continuing")
|
@@ -612,6 +625,13 @@ class Chef
|
|
612
625
|
events.resource_completed(self)
|
613
626
|
end
|
614
627
|
|
628
|
+
def with_umask
|
629
|
+
old_value = ::File.umask(umask.oct) if umask
|
630
|
+
yield
|
631
|
+
ensure
|
632
|
+
::File.umask(old_value) if umask
|
633
|
+
end
|
634
|
+
|
615
635
|
#
|
616
636
|
# If we are currently initializing the resource, this will be true.
|
617
637
|
#
|
@@ -930,7 +950,7 @@ class Chef
|
|
930
950
|
end
|
931
951
|
|
932
952
|
#
|
933
|
-
# A hook called after a resource is created. Meant to be
|
953
|
+
# A hook called after a resource is created. Meant to be overridden by
|
934
954
|
# subclasses.
|
935
955
|
#
|
936
956
|
def after_created
|
@@ -950,16 +970,7 @@ class Chef
|
|
950
970
|
def self.resource_name(name = NOT_PASSED)
|
951
971
|
# Setter
|
952
972
|
if name != NOT_PASSED
|
953
|
-
|
954
|
-
@resource_name = name.to_sym
|
955
|
-
name = name.to_sym
|
956
|
-
# FIXME: determine a way to deprecate this magic behavior
|
957
|
-
unless Chef::ResourceResolver.includes_handler?(name, self)
|
958
|
-
provides name
|
959
|
-
end
|
960
|
-
else
|
961
|
-
@resource_name = nil
|
962
|
-
end
|
973
|
+
@resource_name = name.to_sym rescue nil
|
963
974
|
end
|
964
975
|
|
965
976
|
@resource_name = nil unless defined?(@resource_name)
|
@@ -1114,7 +1125,7 @@ class Chef
|
|
1114
1125
|
# `action_class` method, the presence of either indicates that this is
|
1115
1126
|
# going to be a Chef-12.5 custom resource. If we never see one of these
|
1116
1127
|
# directives then we are constructing an old-style Resource+Provider or
|
1117
|
-
# LWRP or
|
1128
|
+
# LWRP or whatever.
|
1118
1129
|
#
|
1119
1130
|
# If a block is passed, the action_class is always created and the block is
|
1120
1131
|
# run inside it.
|
@@ -1327,7 +1338,7 @@ class Chef
|
|
1327
1338
|
# Once we no longer care about supporting chef < 14.4 then we can deprecate
|
1328
1339
|
# this API.
|
1329
1340
|
#
|
1330
|
-
# @param arg [String] version
|
1341
|
+
# @param arg [String] version constraint to match against (e.g. "> 14")
|
1331
1342
|
#
|
1332
1343
|
def self.chef_version_for_provides(constraint)
|
1333
1344
|
@chef_version_for_provides = constraint
|
@@ -89,7 +89,7 @@ class Chef
|
|
89
89
|
description: "The path to the alternatives link."
|
90
90
|
|
91
91
|
property :path, String,
|
92
|
-
description: "The
|
92
|
+
description: "The absolute path to the original application binary such as `/usr/bin/ruby27`."
|
93
93
|
|
94
94
|
property :priority, [String, Integer],
|
95
95
|
coerce: proc { |n| n.to_i },
|
@@ -19,6 +19,7 @@
|
|
19
19
|
#
|
20
20
|
|
21
21
|
require_relative "../resource"
|
22
|
+
require "fileutils" unless defined?(FileUtils)
|
22
23
|
|
23
24
|
class Chef
|
24
25
|
class Resource
|
@@ -39,6 +40,18 @@ class Chef
|
|
39
40
|
destination '/srv/files'
|
40
41
|
end
|
41
42
|
```
|
43
|
+
|
44
|
+
**Set specific permissions on the extracted files**:
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
archive_file 'Precompiled.zip' do
|
48
|
+
owner 'tsmith'
|
49
|
+
group 'staff'
|
50
|
+
mode '700'
|
51
|
+
path '/tmp/Precompiled.zip'
|
52
|
+
destination '/srv/files'
|
53
|
+
end
|
54
|
+
```
|
42
55
|
DOC
|
43
56
|
|
44
57
|
property :path, String,
|
@@ -53,7 +66,7 @@ class Chef
|
|
53
66
|
description: "The group of the extracted files."
|
54
67
|
|
55
68
|
property :mode, [String, Integer],
|
56
|
-
description: "The mode of the extracted files.",
|
69
|
+
description: "The mode of the extracted files. Integer values are deprecated as octal values (ex. 0755) would not be interpreted correctly.",
|
57
70
|
default: "755"
|
58
71
|
|
59
72
|
property :destination, String,
|
@@ -72,11 +85,11 @@ class Chef
|
|
72
85
|
alias_method :extract_options, :options
|
73
86
|
alias_method :extract_to, :destination
|
74
87
|
|
75
|
-
require "fileutils" unless defined?(FileUtils)
|
76
|
-
|
77
88
|
action :extract do
|
78
89
|
description "Extract and archive file."
|
79
90
|
|
91
|
+
require_libarchive
|
92
|
+
|
80
93
|
unless ::File.exist?(new_resource.path)
|
81
94
|
raise Errno::ENOENT, "No archive found at #{new_resource.path}! Cannot continue."
|
82
95
|
end
|
@@ -85,7 +98,8 @@ class Chef
|
|
85
98
|
Chef::Log.trace("File or directory does not exist at destination path: #{new_resource.destination}")
|
86
99
|
|
87
100
|
converge_by("create directory #{new_resource.destination}") do
|
88
|
-
|
101
|
+
# @todo when we remove the ability for mode to be an int we can remove the .to_s below
|
102
|
+
FileUtils.mkdir_p(new_resource.destination, mode: new_resource.mode.to_s.to_i(8))
|
89
103
|
end
|
90
104
|
|
91
105
|
extract(new_resource.path, new_resource.destination, Array(new_resource.options))
|
@@ -113,6 +127,16 @@ class Chef
|
|
113
127
|
end
|
114
128
|
|
115
129
|
action_class do
|
130
|
+
def require_libarchive
|
131
|
+
require "ffi-libarchive"
|
132
|
+
end
|
133
|
+
|
134
|
+
def define_resource_requirements
|
135
|
+
if new_resource.mode.is_a?(Integer)
|
136
|
+
Chef.deprecated(:archive_file_integer_file_mode, "The mode property should be passed to archive_file resources as a String and not an Integer to ensure the value is properly interpreted.")
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
116
140
|
# This can't be a constant since we might not have required 'ffi-libarchive' yet.
|
117
141
|
def extract_option_map
|
118
142
|
{
|
@@ -136,8 +160,6 @@ class Chef
|
|
136
160
|
#
|
137
161
|
# @return [Boolean]
|
138
162
|
def archive_differs_from_disk?(src, dest)
|
139
|
-
require "ffi-libarchive"
|
140
|
-
|
141
163
|
modified = false
|
142
164
|
Dir.chdir(dest) do
|
143
165
|
archive = Archive::Reader.open_filename(src)
|
@@ -164,8 +186,6 @@ class Chef
|
|
164
186
|
#
|
165
187
|
# @return [void]
|
166
188
|
def extract(src, dest, options = [])
|
167
|
-
require "ffi-libarchive"
|
168
|
-
|
169
189
|
converge_by("extract #{src} to #{dest}") do
|
170
190
|
flags = [options].flatten.map { |option| extract_option_map[option] }.compact.reduce(:|)
|
171
191
|
|
data/lib/chef/resource/bash.rb
CHANGED
data/lib/chef/resource/batch.rb
CHANGED
@@ -27,8 +27,10 @@ class Chef
|
|
27
27
|
|
28
28
|
description "Use the **batch** resource to execute a batch script using the cmd.exe interpreter on Windows. The batch resource creates and executes a temporary file (similar to how the script resource behaves), rather than running the command inline. Commands that are executed with this resource are (by their nature) not idempotent, as they are typically unique to the environment in which they are run. Use not_if and only_if to guard this resource for idempotence."
|
29
29
|
|
30
|
-
def initialize(
|
31
|
-
super
|
30
|
+
def initialize(*args)
|
31
|
+
super
|
32
|
+
@interpreter = "cmd.exe"
|
33
|
+
@default_guard_interpreter = resource_name
|
32
34
|
end
|
33
35
|
|
34
36
|
end
|
@@ -48,6 +48,16 @@ class Chef
|
|
48
48
|
daemon_options ["--override-runlist mycorp_base::default"]
|
49
49
|
end
|
50
50
|
```
|
51
|
+
|
52
|
+
**Run #{Chef::Dist::PRODUCT} daily at 01:00 am, specifying a named run-list**:
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
chef_client_scheduled_task "Run chef-client named run-list daily" do
|
56
|
+
frequency 'daily'
|
57
|
+
start_time '01:00'
|
58
|
+
daemon_options ['-n audit_only']
|
59
|
+
end
|
60
|
+
```
|
51
61
|
DOC
|
52
62
|
|
53
63
|
resource_name :chef_client_scheduled_task
|
@@ -72,7 +82,8 @@ class Chef
|
|
72
82
|
coerce: proc { |x| Integer(x) },
|
73
83
|
callbacks: { "should be a positive number" => proc { |v| v > 0 } },
|
74
84
|
description: "Numeric value to go with the scheduled task frequency",
|
75
|
-
default: 30
|
85
|
+
default: lazy { frequency == "minute" ? 30 : 1 },
|
86
|
+
default_description: "30 if frequency is 'minute', 1 otherwise"
|
76
87
|
|
77
88
|
property :accept_chef_license, [true, false],
|
78
89
|
description: "Accept the Chef Online Master License and Services Agreement. See <https://www.chef.io/online-master-agreement/>",
|
@@ -129,6 +140,7 @@ class Chef
|
|
129
140
|
|
130
141
|
# According to https://docs.microsoft.com/en-us/windows/desktop/taskschd/schtasks,
|
131
142
|
# the :once, :onstart, :onlogon, and :onidle schedules don't accept schedule modifiers
|
143
|
+
|
132
144
|
windows_task new_resource.task_name do
|
133
145
|
run_level :highest
|
134
146
|
command full_command
|
@@ -22,26 +22,59 @@ require_relative "../dist"
|
|
22
22
|
|
23
23
|
class Chef
|
24
24
|
class Resource
|
25
|
-
# Use the chef_gem resource to install a gem only for the instance of Ruby that is dedicated to the chef-client.
|
26
|
-
# When a gem is installed from a local file, it must be added to the node using the remote_file or cookbook_file
|
27
|
-
# resources.
|
28
|
-
#
|
29
|
-
# The chef_gem resource works with all of the same properties and options as the gem_package resource, but does not
|
30
|
-
# accept the gem_binary property because it always uses the CurrentGemEnvironment under which the chef-client is
|
31
|
-
# running. In addition to performing actions similar to the gem_package resource, the chef_gem resource does the
|
32
|
-
# following:
|
33
|
-
# - Runs its actions immediately, before convergence, allowing a gem to be used in a recipe immediately after it is
|
34
|
-
# installed
|
35
|
-
# - Runs Gem.clear_paths after the action, ensuring that gem is aware of changes so that it can be required
|
36
|
-
# immediately after it is installed
|
37
|
-
|
38
|
-
require_relative "gem_package"
|
39
|
-
require_relative "../dist"
|
40
|
-
|
41
25
|
class ChefGem < Chef::Resource::Package::GemPackage
|
42
26
|
unified_mode true
|
43
27
|
provides :chef_gem
|
44
28
|
|
29
|
+
description <<~DESC
|
30
|
+
Use the **chef_gem** resource to install a gem only for the instance of Ruby that is dedicated to the #{Chef::Dist::CLIENT}.
|
31
|
+
When a gem is installed from a local file, it must be added to the node using the **remote_file** or **cookbook_file** resources.
|
32
|
+
|
33
|
+
The **chef_gem** resource works with all of the same properties and options as the **gem_package** resource, but does not
|
34
|
+
accept the `gem_binary` property because it always uses the `CurrentGemEnvironment` under which the `#{Chef::Dist::CLIENT}` is
|
35
|
+
running. In addition to performing actions similar to the **gem_package** resource, the **chef_gem** resource does the
|
36
|
+
following:
|
37
|
+
- Runs its actions immediately, before convergence, allowing a gem to be used in a recipe immediately after it is installed.
|
38
|
+
- Runs `Gem.clear_paths` after the action, ensuring that gem is aware of changes so that it can be required immediately after it is installed.
|
39
|
+
|
40
|
+
Warning: The **chef_gem** and **gem_package** resources are both used to install Ruby gems. For any machine on which #{Chef::Dist::PRODUCT} is
|
41
|
+
installed, there are two instances of Ruby. One is the standard, system-wide instance of Ruby and the other is a dedicated instance that is
|
42
|
+
available only to #{Chef::Dist::PRODUCT}.
|
43
|
+
Use the **chef_gem** resource to install gems into the instance of Ruby that is dedicated to #{Chef::Dist::PRODUCT}.
|
44
|
+
Use the **gem_package** resource to install all other gems (i.e. install gems system-wide).
|
45
|
+
DESC
|
46
|
+
|
47
|
+
examples <<~EXAMPLES
|
48
|
+
**Compile time vs. converge time installation of gems**
|
49
|
+
|
50
|
+
To install a gem while #{Chef::Dist::PRODUCT} is configuring the node (the converge phase), set the `compile_time` property to `false`:
|
51
|
+
```ruby
|
52
|
+
chef_gem 'right_aws' do
|
53
|
+
compile_time false
|
54
|
+
action :install
|
55
|
+
end
|
56
|
+
```
|
57
|
+
|
58
|
+
To install a gem while the resource collection is being built (the compile phase), set the `compile_time` property to `true`:
|
59
|
+
```ruby
|
60
|
+
chef_gem 'right_aws' do
|
61
|
+
compile_time true
|
62
|
+
action :install
|
63
|
+
end
|
64
|
+
```
|
65
|
+
|
66
|
+
Install MySQL for Chef
|
67
|
+
```ruby
|
68
|
+
apt_update
|
69
|
+
|
70
|
+
build_essential 'install compilation tools' do
|
71
|
+
compile_time true
|
72
|
+
end
|
73
|
+
|
74
|
+
chef_gem 'mysql'
|
75
|
+
```
|
76
|
+
EXAMPLES
|
77
|
+
|
45
78
|
property :package_name, String,
|
46
79
|
description: "An optional property to set the package name if it differs from the resource block's name.",
|
47
80
|
identity: true
|
@@ -49,11 +82,14 @@ class Chef
|
|
49
82
|
property :version, String,
|
50
83
|
description: "The version of a package to be installed or upgraded."
|
51
84
|
|
52
|
-
property :gem_binary,
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
85
|
+
property :gem_binary, String,
|
86
|
+
default: "#{RbConfig::CONFIG["bindir"]}/gem",
|
87
|
+
default_description: "The `gem` binary included with #{Chef::Dist::PRODUCT}.",
|
88
|
+
description: "The path of a gem binary to use for the installation. By default, the same version of Ruby that is used by #{Chef::Dist::PRODUCT} will be used.",
|
89
|
+
callbacks: {
|
90
|
+
"The `chef_gem` resource is restricted to the current gem environment, use `gem_package` to install to other environments." =>
|
91
|
+
proc { |v| v == "#{RbConfig::CONFIG["bindir"]}/gem" },
|
92
|
+
}
|
57
93
|
end
|
58
94
|
end
|
59
95
|
end
|
@@ -107,7 +107,7 @@ class Chef
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
-
# Walks down the namespace
|
110
|
+
# Walks down the namespace hierarchy to return the class object for the given class name.
|
111
111
|
# If the class is not available, NameError is thrown.
|
112
112
|
#
|
113
113
|
# @param class_full_name [String] full class name such as 'Chef::Handler::Foo' or 'MyHandler'.
|
@@ -118,7 +118,7 @@ class Chef
|
|
118
118
|
class_name = ancestors.pop
|
119
119
|
|
120
120
|
# We need to search the ancestors only for the first/uppermost namespace of the class, so we
|
121
|
-
# need to enable the #const_get inherit
|
121
|
+
# need to enable the #const_get inherit parameter only when we are searching in Kernel scope
|
122
122
|
# (see COOK-4117).
|
123
123
|
parent = ancestors.inject(Kernel) { |scope, const_name| scope.const_get(const_name, scope === Kernel) }
|
124
124
|
child = parent.const_get(class_name, parent === Kernel)
|