chef 16.0.257-universal-mingw32 → 16.2.44-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 +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
|