chef 16.0.257-universal-mingw32 → 16.2.44-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 +3 -1
- data/README.md +3 -3
- data/Rakefile +44 -16
- data/chef.gemspec +4 -4
- 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 -2
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +2 -2
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
- 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 +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
- 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 +7 -7
- 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 +5 -1
- data/lib/chef/digester.rb +4 -4
- data/lib/chef/dsl/declare_resource.rb +1 -1
- data/lib/chef/dsl/platform_introspection.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/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 +18 -3
- 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 +13 -16
- 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/cookbook_delete.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 +18 -3
- data/lib/chef/knife/data_bag_create.rb +1 -1
- data/lib/chef/knife/environment_compare.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/list.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_install.rb +1 -1
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/knife/{user_invite_recind.rb → user_invite_rescind.rb} +6 -6
- data/lib/chef/knife/yaml_convert.rb +2 -2
- 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/create_path.rb +8 -8
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/properties.rb +4 -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/node/mixin/deep_merge_cache.rb +7 -7
- 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 +3 -2
- 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 +28 -32
- 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/freebsd/base.rb +2 -1
- data/lib/chef/provider/package/homebrew.rb +1 -1
- data/lib/chef/provider/package/macports.rb +0 -2
- 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 +27 -52
- 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 +13 -2
- data/lib/chef/provider/service/openbsd.rb +4 -4
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/service/simple.rb +3 -3
- 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 +7 -7
- 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 +5 -3
- data/lib/chef/provider/zypper_repository.rb +30 -10
- data/lib/chef/resource.rb +25 -14
- data/lib/chef/resource/alternatives.rb +65 -4
- data/lib/chef/resource/apt_package.rb +31 -2
- data/lib/chef/resource/apt_preference.rb +34 -5
- data/lib/chef/resource/apt_repository.rb +22 -15
- data/lib/chef/resource/apt_update.rb +6 -4
- data/lib/chef/resource/archive_file.rb +33 -12
- data/lib/chef/resource/bash.rb +1 -2
- data/lib/chef/resource/batch.rb +5 -3
- data/lib/chef/resource/bff_package.rb +1 -1
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/build_essential.rb +8 -4
- data/lib/chef/resource/cab_package.rb +1 -1
- data/lib/chef/resource/chef_client_cron.rb +12 -9
- data/lib/chef/resource/chef_client_scheduled_task.rb +22 -7
- data/lib/chef/resource/chef_client_systemd_timer.rb +10 -7
- data/lib/chef/resource/chef_gem.rb +6 -2
- data/lib/chef/resource/chef_handler.rb +3 -3
- data/lib/chef/resource/chef_sleep.rb +7 -4
- data/lib/chef/resource/chef_vault_secret.rb +4 -4
- data/lib/chef/resource/chocolatey_config.rb +5 -3
- data/lib/chef/resource/chocolatey_feature.rb +5 -3
- data/lib/chef/resource/chocolatey_package.rb +5 -3
- data/lib/chef/resource/chocolatey_source.rb +5 -3
- data/lib/chef/resource/cookbook_file.rb +3 -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} +28 -94
- data/lib/chef/resource/cron_access.rb +17 -6
- data/lib/chef/resource/csh.rb +1 -2
- data/lib/chef/resource/directory.rb +1 -1
- data/lib/chef/resource/dmg_package.rb +18 -15
- data/lib/chef/resource/dnf_package.rb +1 -1
- data/lib/chef/resource/dpkg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +479 -9
- data/lib/chef/resource/file.rb +11 -8
- data/lib/chef/resource/freebsd_package.rb +2 -2
- data/lib/chef/resource/gem_package.rb +6 -6
- data/lib/chef/resource/group.rb +1 -1
- data/lib/chef/resource/helpers/cron_validations.rb +6 -3
- data/lib/chef/resource/homebrew_cask.rb +1 -1
- data/lib/chef/resource/homebrew_package.rb +30 -1
- data/lib/chef/resource/homebrew_tap.rb +1 -1
- data/lib/chef/resource/homebrew_update.rb +107 -0
- data/lib/chef/resource/hostname.rb +11 -24
- data/lib/chef/resource/http_request.rb +1 -1
- data/lib/chef/resource/ifconfig.rb +7 -7
- data/lib/chef/resource/ips_package.rb +1 -1
- data/lib/chef/resource/kernel_module.rb +15 -2
- data/lib/chef/resource/ksh.rb +1 -1
- data/lib/chef/resource/launchd.rb +5 -5
- data/lib/chef/resource/link.rb +4 -4
- data/lib/chef/resource/locale.rb +4 -4
- data/lib/chef/resource/log.rb +1 -1
- data/lib/chef/resource/macos_userdefaults.rb +15 -10
- data/lib/chef/resource/macosx_service.rb +1 -1
- data/lib/chef/resource/macports_package.rb +1 -1
- data/lib/chef/resource/mdadm.rb +1 -1
- data/lib/chef/resource/mount.rb +2 -2
- data/lib/chef/resource/msu_package.rb +2 -2
- data/lib/chef/resource/ohai.rb +1 -1
- data/lib/chef/resource/ohai_hint.rb +1 -1
- data/lib/chef/resource/openbsd_package.rb +1 -1
- data/lib/chef/resource/openssl_dhparam.rb +1 -1
- data/lib/chef/resource/openssl_ec_private_key.rb +1 -1
- data/lib/chef/resource/openssl_ec_public_key.rb +1 -1
- data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
- data/lib/chef/resource/openssl_rsa_public_key.rb +1 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +1 -1
- data/lib/chef/resource/openssl_x509_crl.rb +1 -1
- data/lib/chef/resource/openssl_x509_request.rb +1 -1
- data/lib/chef/resource/osx_profile.rb +1 -1
- data/lib/chef/resource/package.rb +1 -1
- data/lib/chef/resource/pacman_package.rb +1 -1
- data/lib/chef/resource/paludis_package.rb +1 -1
- data/lib/chef/resource/perl.rb +1 -2
- data/lib/chef/resource/plist.rb +24 -5
- data/lib/chef/resource/portage_package.rb +1 -1
- data/lib/chef/resource/powershell_package.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +1 -1
- data/lib/chef/resource/powershell_script.rb +5 -3
- data/lib/chef/resource/python.rb +1 -2
- data/lib/chef/resource/reboot.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/remote_directory.rb +1 -1
- data/lib/chef/resource/remote_file.rb +26 -11
- data/lib/chef/resource/rhsm_errata.rb +1 -3
- data/lib/chef/resource/rhsm_errata_level.rb +1 -1
- data/lib/chef/resource/rhsm_register.rb +1 -2
- data/lib/chef/resource/rhsm_repo.rb +1 -2
- data/lib/chef/resource/rhsm_subscription.rb +1 -3
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/rpm_package.rb +5 -2
- data/lib/chef/resource/ruby.rb +1 -2
- data/lib/chef/resource/ruby_block.rb +1 -4
- data/lib/chef/resource/scm/_scm.rb +4 -3
- data/lib/chef/resource/scm/git.rb +2 -2
- data/lib/chef/resource/scm/subversion.rb +2 -2
- data/lib/chef/resource/script.rb +1 -1
- data/lib/chef/resource/service.rb +1 -1
- data/lib/chef/resource/smartos_package.rb +1 -1
- data/lib/chef/resource/snap_package.rb +1 -1
- data/lib/chef/resource/solaris_package.rb +1 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
- data/lib/chef/resource/sudo.rb +4 -4
- data/lib/chef/resource/swap_file.rb +2 -2
- data/lib/chef/resource/sysctl.rb +61 -2
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +1 -1
- data/lib/chef/resource/user.rb +2 -2
- data/lib/chef/resource/user_ulimit.rb +24 -22
- data/lib/chef/resource/windows_ad_join.rb +31 -2
- data/lib/chef/resource/windows_audit_policy.rb +227 -0
- data/lib/chef/resource/windows_auto_run.rb +13 -2
- data/lib/chef/resource/windows_certificate.rb +28 -2
- data/lib/chef/resource/windows_dfs_folder.rb +1 -1
- data/lib/chef/resource/windows_dfs_namespace.rb +1 -1
- data/lib/chef/resource/windows_dfs_server.rb +2 -2
- data/lib/chef/resource/windows_env.rb +10 -1
- data/lib/chef/resource/windows_feature.rb +57 -2
- data/lib/chef/resource/windows_feature_dism.rb +15 -2
- data/lib/chef/resource/windows_feature_powershell.rb +29 -2
- data/lib/chef/resource/windows_firewall_rule.rb +11 -7
- data/lib/chef/resource/windows_font.rb +13 -4
- data/lib/chef/resource/windows_package.rb +66 -6
- data/lib/chef/resource/windows_pagefile.rb +32 -4
- data/lib/chef/resource/windows_path.rb +18 -1
- data/lib/chef/resource/windows_printer.rb +26 -6
- data/lib/chef/resource/windows_printer_port.rb +29 -1
- data/lib/chef/resource/windows_script.rb +2 -16
- data/lib/chef/resource/windows_security_policy.rb +47 -16
- data/lib/chef/resource/windows_service.rb +1 -1
- data/lib/chef/resource/windows_share.rb +23 -3
- data/lib/chef/resource/windows_shortcut.rb +13 -3
- data/lib/chef/resource/windows_task.rb +143 -29
- data/lib/chef/resource/windows_uac.rb +20 -1
- data/lib/chef/resource/windows_user_privilege.rb +45 -3
- data/lib/chef/resource/windows_workgroup.rb +19 -3
- data/lib/chef/resource/yum_package.rb +88 -6
- data/lib/chef/resource/yum_repository.rb +36 -19
- data/lib/chef/resource/zypper_package.rb +29 -3
- data/lib/chef/resource/zypper_repository.rb +17 -5
- data/lib/chef/resource_inspector.rb +5 -4
- data/lib/chef/resources.rb +4 -2
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/scan_access_control.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/dsc/lcm_output_parser.rb +3 -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 +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 +18 -18
- 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/process.rb +2 -2
- 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/resource/cron_spec.rb +10 -0
- data/spec/functional/resource/dnf_package_spec.rb +2 -2
- data/spec/functional/resource/git_spec.rb +6 -6
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/remote_file_spec.rb +3 -3
- data/spec/functional/resource/user/dscl_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +1 -1
- data/spec/functional/resource/windows_task_spec.rb +12 -12
- data/spec/integration/knife/raw_spec.rb +4 -4
- data/spec/integration/knife/redirection_spec.rb +2 -2
- data/spec/support/chef_helpers.rb +1 -1
- data/spec/support/platform_helpers.rb +1 -14
- 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 +1 -1
- data/spec/support/shared/functional/http.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +1 -1
- data/spec/support/shared/unit/mock_shellout.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application_spec.rb +7 -0
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/http/ssl_policies_spec.rb +20 -0
- data/spec/unit/knife/bootstrap_spec.rb +2 -2
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
- data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/shell_out_spec.rb +25 -31
- 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/apt_repository_spec.rb +27 -27
- data/spec/unit/provider/batch_spec.rb +130 -0
- data/spec/unit/provider/cron_spec.rb +9 -49
- 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 +8 -50
- data/spec/unit/provider/osx_profile_spec.rb +2 -2
- data/spec/unit/provider/package/msu_spec.rb +3 -3
- 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/powershell_script_spec.rb +3 -45
- data/spec/unit/provider/script_spec.rb +20 -110
- data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
- data/spec/unit/provider/zypper_repository_spec.rb +75 -25
- data/spec/unit/provider_resolver_spec.rb +11 -11
- data/spec/unit/resource/archive_file_spec.rb +11 -2
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
- data/spec/unit/resource/cron_spec.rb +2 -2
- 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_package_spec.rb +10 -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_spec.rb +67 -1
- data/spec/unit/run_context_spec.rb +1 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
- data/spec/unit/win32/registry_spec.rb +1 -1
- metadata +28 -27
- data/lib/chef/resource/cron.rb +0 -157
@@ -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."
|
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
|
@@ -28,11 +28,72 @@ class Chef
|
|
28
28
|
|
29
29
|
description "The alternatives resource allows for configuration of command alternatives in Linux using the alternatives or update-alternatives packages."
|
30
30
|
introduced "16.0"
|
31
|
+
examples <<~DOC
|
32
|
+
**Install an alternative**:
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
alternatives 'python install 2' do
|
36
|
+
link_name 'python'
|
37
|
+
path '/usr/bin/python2.7'
|
38
|
+
priority 100
|
39
|
+
action :install
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
**Set an alternative**:
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
alternatives 'python set version 3' do
|
47
|
+
link_name 'python'
|
48
|
+
path '/usr/bin/python3'
|
49
|
+
action :set
|
50
|
+
end
|
51
|
+
```
|
52
|
+
|
53
|
+
**Set the automatic alternative state**:
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
alternatives 'python auto' do
|
57
|
+
link_name 'python'
|
58
|
+
action :auto
|
59
|
+
end
|
60
|
+
```
|
61
|
+
|
62
|
+
**Refresh an alternative**:
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
alternatives 'python refresh' do
|
66
|
+
link_name 'python'
|
67
|
+
action :refresh
|
68
|
+
end
|
69
|
+
```
|
70
|
+
|
71
|
+
**Remove an alternative**:
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
alternatives 'python remove' do
|
75
|
+
link_name 'python'
|
76
|
+
path '/usr/bin/python3'
|
77
|
+
action :remove
|
78
|
+
end
|
79
|
+
```
|
80
|
+
DOC
|
81
|
+
|
82
|
+
property :link_name, String,
|
83
|
+
name_property: true,
|
84
|
+
description: "The name of the link to create. This will be the command you type on the command line such as `ruby` or `gcc`."
|
85
|
+
|
86
|
+
property :link, String,
|
87
|
+
default: lazy { |n| "/usr/bin/#{n.link_name}" },
|
88
|
+
default_description: "/usr/bin/LINK_NAME",
|
89
|
+
description: "The path to the alternatives link."
|
90
|
+
|
91
|
+
property :path, String,
|
92
|
+
description: "The full path to the original application binary such as `/usr/bin/ruby27`."
|
31
93
|
|
32
|
-
property :
|
33
|
-
|
34
|
-
|
35
|
-
property :priority, [String, Integer], coerce: proc { |n| n.to_i }
|
94
|
+
property :priority, [String, Integer],
|
95
|
+
coerce: proc { |n| n.to_i },
|
96
|
+
description: "The priority of the alternative."
|
36
97
|
|
37
98
|
def define_resource_requirements
|
38
99
|
requirements.assert(:install) do |a|
|
@@ -25,11 +25,40 @@ class Chef
|
|
25
25
|
|
26
26
|
provides :apt_package, target_mode: true
|
27
27
|
provides :package, platform_family: "debian", target_mode: true
|
28
|
+
examples <<~DOC
|
29
|
+
**Install a package using package manager**:
|
28
30
|
|
29
|
-
|
31
|
+
```ruby
|
32
|
+
apt_package 'name of package' do
|
33
|
+
action :install
|
34
|
+
end
|
35
|
+
```
|
36
|
+
|
37
|
+
**Install a package without specifying the default action**:
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
apt_package 'name of package'
|
41
|
+
```
|
42
|
+
|
43
|
+
**Install multiple packages at once**:
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
apt_package %(package1 package2 package3)
|
47
|
+
```
|
48
|
+
|
49
|
+
**Install without using recommend packages as a dependency**:
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
package 'apache2' do
|
53
|
+
options '--no-install-recommends'
|
54
|
+
end
|
55
|
+
```
|
56
|
+
DOC
|
57
|
+
|
58
|
+
description "Use the **apt_package** resource to manage packages on Debian and Ubuntu platforms."
|
30
59
|
|
31
60
|
property :default_release, String,
|
32
|
-
description: "The default release. For example: stable
|
61
|
+
description: "The default release. For example: `stable`.",
|
33
62
|
desired_state: false
|
34
63
|
|
35
64
|
property :overwrite_config_files, [TrueClass, FalseClass],
|
@@ -20,14 +20,43 @@ require_relative "../resource"
|
|
20
20
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
|
-
# @since 13.3
|
24
23
|
class AptPreference < Chef::Resource
|
25
24
|
unified_mode true
|
26
25
|
|
27
26
|
provides(:apt_preference) { true }
|
28
27
|
|
29
|
-
description "
|
28
|
+
description "Use the **apt_preference** resource to create APT [preference files](https://wiki.debian.org/AptPreferences). Preference files are used to control which package versions and sources are prioritized during installation."
|
30
29
|
introduced "13.3"
|
30
|
+
examples <<~DOC
|
31
|
+
**Pin libmysqlclient16 to a version 5.1.49-3**:
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
apt_preference 'libmysqlclient16' do
|
35
|
+
pin 'version 5.1.49-3'
|
36
|
+
pin_priority '700'
|
37
|
+
end
|
38
|
+
```
|
39
|
+
|
40
|
+
Note: The `pin_priority` of `700` ensures that this version will be preferred over any other available versions.
|
41
|
+
|
42
|
+
**Unpin a libmysqlclient16**:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
apt_preference 'libmysqlclient16' do
|
46
|
+
action :remove
|
47
|
+
end
|
48
|
+
```
|
49
|
+
|
50
|
+
**Pin all packages to prefer the packages.dotdeb.org repository**:
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
apt_preference 'dotdeb' do
|
54
|
+
glob '*'
|
55
|
+
pin 'origin packages.dotdeb.org'
|
56
|
+
pin_priority '700'
|
57
|
+
end
|
58
|
+
```
|
59
|
+
DOC
|
31
60
|
|
32
61
|
property :package_name, String,
|
33
62
|
name_property: true,
|
@@ -36,15 +65,15 @@ class Chef
|
|
36
65
|
validation_message: "The provided package name is not valid. Package names can only contain alphanumeric characters as well as _, -, +, or *!"
|
37
66
|
|
38
67
|
property :glob, String,
|
39
|
-
description: "Pin by glob() expression or with regular
|
68
|
+
description: "Pin by a `glob()` expression or with a regular expression surrounded by `/`."
|
40
69
|
|
41
70
|
property :pin, String,
|
42
71
|
description: "The package version or repository to pin.",
|
43
|
-
required:
|
72
|
+
required: [:add]
|
44
73
|
|
45
74
|
property :pin_priority, [String, Integer],
|
46
75
|
description: "Sets the Pin-Priority for a package. See <https://wiki.debian.org/AptPreferences> for more details.",
|
47
|
-
required:
|
76
|
+
required: [:add]
|
48
77
|
|
49
78
|
default_action :add
|
50
79
|
allowed_actions :add, :remove
|
@@ -28,11 +28,12 @@ class Chef
|
|
28
28
|
|
29
29
|
provides(:apt_repository) { true }
|
30
30
|
|
31
|
-
description "Use the apt_repository resource to specify additional APT repositories. Adding a new repository will update the APT package cache immediately."
|
31
|
+
description "Use the **apt_repository** resource to specify additional APT repositories. Adding a new repository will update the APT package cache immediately."
|
32
32
|
introduced "12.9"
|
33
33
|
|
34
34
|
examples <<~DOC
|
35
|
-
Add repository with basic settings
|
35
|
+
**Add repository with basic settings**:
|
36
|
+
|
36
37
|
```ruby
|
37
38
|
apt_repository 'nginx' do
|
38
39
|
uri 'http://nginx.org/packages/ubuntu/'
|
@@ -40,29 +41,32 @@ class Chef
|
|
40
41
|
end
|
41
42
|
```
|
42
43
|
|
43
|
-
Enable Ubuntu multiverse repositories
|
44
|
+
**Enable Ubuntu multiverse repositories**:
|
45
|
+
|
44
46
|
```ruby
|
45
47
|
apt_repository 'security-ubuntu-multiverse' do
|
46
48
|
uri 'http://security.ubuntu.com/ubuntu'
|
47
|
-
distribution '
|
49
|
+
distribution 'xenial-security'
|
48
50
|
components ['multiverse']
|
49
51
|
deb_src true
|
50
52
|
end
|
51
53
|
```
|
52
54
|
|
53
|
-
Add the Nginx PPA, autodetect the key and repository url
|
55
|
+
**Add the Nginx PPA, autodetect the key and repository url**:
|
56
|
+
|
54
57
|
```ruby
|
55
58
|
apt_repository 'nginx-php' do
|
56
59
|
uri 'ppa:nginx/stable'
|
57
60
|
end
|
58
61
|
```
|
59
62
|
|
60
|
-
Add the JuJu PPA, grab the key from the keyserver, and add source repo
|
63
|
+
**Add the JuJu PPA, grab the key from the keyserver, and add source repo**:
|
64
|
+
|
61
65
|
```ruby
|
62
66
|
apt_repository 'juju' do
|
63
67
|
uri 'http://ppa.launchpad.net/juju/stable/ubuntu'
|
64
68
|
components ['main']
|
65
|
-
distribution '
|
69
|
+
distribution 'xenial'
|
66
70
|
key 'C8068B11'
|
67
71
|
keyserver 'keyserver.ubuntu.com'
|
68
72
|
action :add
|
@@ -70,7 +74,8 @@ class Chef
|
|
70
74
|
end
|
71
75
|
```
|
72
76
|
|
73
|
-
Add repository that requires multiple keys to authenticate packages
|
77
|
+
**Add repository that requires multiple keys to authenticate packages**:
|
78
|
+
|
74
79
|
```ruby
|
75
80
|
apt_repository 'rundeck' do
|
76
81
|
uri 'https://dl.bintray.com/rundeck/rundeck-deb'
|
@@ -81,18 +86,20 @@ class Chef
|
|
81
86
|
end
|
82
87
|
```
|
83
88
|
|
84
|
-
Add the Cloudera Repo of CDH4 packages for Ubuntu
|
89
|
+
**Add the Cloudera Repo of CDH4 packages for Ubuntu 16.04 on AMD64**:
|
90
|
+
|
85
91
|
```ruby
|
86
92
|
apt_repository 'cloudera' do
|
87
|
-
uri 'http://archive.cloudera.com/cdh4/ubuntu/
|
93
|
+
uri 'http://archive.cloudera.com/cdh4/ubuntu/xenial/amd64/cdh'
|
88
94
|
arch 'amd64'
|
89
|
-
distribution '
|
95
|
+
distribution 'xenial-cdh4'
|
90
96
|
components ['contrib']
|
91
97
|
key 'http://archive.cloudera.com/debian/archive.key'
|
92
98
|
end
|
93
99
|
```
|
94
100
|
|
95
|
-
Remove a repository from the list
|
101
|
+
**Remove a repository from the list**:
|
102
|
+
|
96
103
|
```ruby
|
97
104
|
apt_repository 'zenoss' do
|
98
105
|
action :remove
|
@@ -115,15 +122,15 @@ class Chef
|
|
115
122
|
description: "The base of the Debian distribution."
|
116
123
|
|
117
124
|
property :distribution, [ String, nil, FalseClass ],
|
118
|
-
description: "Usually a distribution's codename, such as xenial
|
125
|
+
description: "Usually a distribution's codename, such as `xenial`, `bionic`, or `focal`.",
|
119
126
|
default: lazy { node["lsb"]["codename"] }, default_description: "The LSB codename of the node such as 'focal'."
|
120
127
|
|
121
128
|
property :components, Array,
|
122
129
|
description: "Package groupings, such as 'main' and 'stable'.",
|
123
|
-
default: lazy { [] }, default_description: "
|
130
|
+
default: lazy { [] }, default_description: "`main` if using a PPA repository."
|
124
131
|
|
125
132
|
property :arch, [String, nil, FalseClass],
|
126
|
-
description: "Constrain packages to a particular CPU architecture such as
|
133
|
+
description: "Constrain packages to a particular CPU architecture such as `i386` or `amd64`."
|
127
134
|
|
128
135
|
property :trusted, [TrueClass, FalseClass],
|
129
136
|
description: "Determines whether you should treat all packages from this repository as authenticated regardless of signature.",
|
@@ -25,10 +25,11 @@ class Chef
|
|
25
25
|
|
26
26
|
provides(:apt_update) { true }
|
27
27
|
|
28
|
-
description "Use the apt_update resource to manage APT repository updates on Debian and Ubuntu platforms."
|
28
|
+
description "Use the **apt_update** resource to manage APT repository updates on Debian and Ubuntu platforms."
|
29
29
|
introduced "12.7"
|
30
30
|
examples <<~DOC
|
31
|
-
Update the Apt repository at a specified interval
|
31
|
+
**Update the Apt repository at a specified interval**:
|
32
|
+
|
32
33
|
```ruby
|
33
34
|
apt_update 'all platforms' do
|
34
35
|
frequency 86400
|
@@ -36,7 +37,8 @@ class Chef
|
|
36
37
|
end
|
37
38
|
```
|
38
39
|
|
39
|
-
Update the Apt repository at the start of a Chef Infra Client run
|
40
|
+
**Update the Apt repository at the start of a Chef Infra Client run**:
|
41
|
+
|
40
42
|
```ruby
|
41
43
|
apt_update 'update'
|
42
44
|
```
|
@@ -46,7 +48,7 @@ class Chef
|
|
46
48
|
property :name, String, default: ""
|
47
49
|
|
48
50
|
property :frequency, Integer,
|
49
|
-
description: "Determines how frequently (in seconds) APT repository updates are made. Use this property when the
|
51
|
+
description: "Determines how frequently (in seconds) APT repository updates are made. Use this property when the `:periodic` action is specified.",
|
50
52
|
default: 86_400
|
51
53
|
|
52
54
|
default_action :periodic
|