chef 16.0.257 → 16.2.44
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/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
@@ -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
|
@@ -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
|
@@ -29,15 +30,28 @@ class Chef
|
|
29
30
|
provides :libarchive_file # legacy cookbook name
|
30
31
|
|
31
32
|
introduced "15.0"
|
32
|
-
description "Use the archive_file resource to extract archive files to disk. This resource uses the libarchive library to extract multiple archive formats including tar, gzip, bzip, and zip formats."
|
33
|
+
description "Use the **archive_file** resource to extract archive files to disk. This resource uses the libarchive library to extract multiple archive formats including tar, gzip, bzip, and zip formats."
|
33
34
|
examples <<~DOC
|
34
|
-
Extract a zip file to a specified directory
|
35
|
+
**Extract a zip file to a specified directory**:
|
36
|
+
|
35
37
|
```ruby
|
36
38
|
archive_file 'Precompiled.zip' do
|
37
39
|
path '/tmp/Precompiled.zip'
|
38
40
|
destination '/srv/files'
|
39
41
|
end
|
40
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
|
+
```
|
41
55
|
DOC
|
42
56
|
|
43
57
|
property :path, String,
|
@@ -52,7 +66,7 @@ class Chef
|
|
52
66
|
description: "The group of the extracted files."
|
53
67
|
|
54
68
|
property :mode, [String, Integer],
|
55
|
-
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.",
|
56
70
|
default: "755"
|
57
71
|
|
58
72
|
property :destination, String,
|
@@ -60,22 +74,22 @@ class Chef
|
|
60
74
|
required: true
|
61
75
|
|
62
76
|
property :options, [Array, Symbol],
|
63
|
-
description: "An array of symbols representing extraction flags. Example:
|
77
|
+
description: "An array of symbols representing extraction flags. Example: `:no_overwrite` to prevent overwriting files on disk. By default, this properly sets `:time` which preserves the modification timestamps of files in the archive when writing them to disk.",
|
64
78
|
default: lazy { [:time] }
|
65
79
|
|
66
80
|
property :overwrite, [TrueClass, FalseClass, :auto],
|
67
|
-
description: "Should the resource overwrite the destination file contents if they already exist? If set to
|
81
|
+
description: "Should the resource overwrite the destination file contents if they already exist? If set to `:auto` the date stamp of files within the archive will be compared to those on disk and disk contents will be overwritten if they differ. This may cause unintended consequences if disk date stamps are changed between runs, which will result in the files being overwritten during each client run. Make sure to properly test any change to this property.",
|
68
82
|
default: false
|
69
83
|
|
70
84
|
# backwards compatibility for the legacy cookbook names
|
71
85
|
alias_method :extract_options, :options
|
72
86
|
alias_method :extract_to, :destination
|
73
87
|
|
74
|
-
require "fileutils" unless defined?(FileUtils)
|
75
|
-
|
76
88
|
action :extract do
|
77
89
|
description "Extract and archive file."
|
78
90
|
|
91
|
+
require_libarchive
|
92
|
+
|
79
93
|
unless ::File.exist?(new_resource.path)
|
80
94
|
raise Errno::ENOENT, "No archive found at #{new_resource.path}! Cannot continue."
|
81
95
|
end
|
@@ -84,7 +98,8 @@ class Chef
|
|
84
98
|
Chef::Log.trace("File or directory does not exist at destination path: #{new_resource.destination}")
|
85
99
|
|
86
100
|
converge_by("create directory #{new_resource.destination}") do
|
87
|
-
|
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))
|
88
103
|
end
|
89
104
|
|
90
105
|
extract(new_resource.path, new_resource.destination, Array(new_resource.options))
|
@@ -112,6 +127,16 @@ class Chef
|
|
112
127
|
end
|
113
128
|
|
114
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
|
+
|
115
140
|
# This can't be a constant since we might not have required 'ffi-libarchive' yet.
|
116
141
|
def extract_option_map
|
117
142
|
{
|
@@ -135,8 +160,6 @@ class Chef
|
|
135
160
|
#
|
136
161
|
# @return [Boolean]
|
137
162
|
def archive_differs_from_disk?(src, dest)
|
138
|
-
require "ffi-libarchive"
|
139
|
-
|
140
163
|
modified = false
|
141
164
|
Dir.chdir(dest) do
|
142
165
|
archive = Archive::Reader.open_filename(src)
|
@@ -163,8 +186,6 @@ class Chef
|
|
163
186
|
#
|
164
187
|
# @return [void]
|
165
188
|
def extract(src, dest, options = [])
|
166
|
-
require "ffi-libarchive"
|
167
|
-
|
168
189
|
converge_by("extract #{src} to #{dest}") do
|
169
190
|
flags = [options].flatten.map { |option| extract_option_map[option] }.compact.reduce(:|)
|
170
191
|
|
data/lib/chef/resource/bash.rb
CHANGED
@@ -17,7 +17,6 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require_relative "script"
|
20
|
-
require_relative "../provider/script"
|
21
20
|
|
22
21
|
class Chef
|
23
22
|
class Resource
|
@@ -26,7 +25,7 @@ class Chef
|
|
26
25
|
|
27
26
|
provides :bash
|
28
27
|
|
29
|
-
description "Use the bash resource to execute scripts using the Bash interpreter. This resource may also use any of the actions and properties that are available to the execute resource. 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."
|
28
|
+
description "Use the **bash** resource to execute scripts using the Bash interpreter. This resource may also use any of the actions and properties that are available to the execute resource. 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."
|
30
29
|
|
31
30
|
def initialize(name, run_context = nil)
|
32
31
|
super
|