chef 16.2.50-universal-mingw32 → 16.4.38-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 +4 -4
- data/Rakefile +3 -16
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +4 -3
- data/lib/chef/action_collection.rb +4 -0
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +13 -1
- data/lib/chef/application/apply.rb +6 -5
- data/lib/chef/application/windows_service.rb +27 -27
- data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
- data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
- data/lib/chef/chef_class.rb +0 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/client.rb +14 -14
- data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
- data/lib/chef/cookbook/syntax_check.rb +1 -2
- data/lib/chef/cookbook_loader.rb +15 -29
- data/lib/chef/data_bag.rb +1 -2
- data/lib/chef/data_collector/run_end_message.rb +11 -1
- data/lib/chef/deprecated.rb +8 -0
- data/lib/chef/digester.rb +3 -2
- data/lib/chef/dsl/platform_introspection.rb +9 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/environment.rb +3 -4
- data/lib/chef/exceptions.rb +4 -1
- data/lib/chef/file_access_control/windows.rb +2 -2
- data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
- data/lib/chef/file_content_management/tempfile.rb +9 -9
- data/lib/chef/handler.rb +2 -0
- data/lib/chef/http.rb +12 -12
- data/lib/chef/http/authenticator.rb +3 -1
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +18 -15
- data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
- data/lib/chef/knife/config_get.rb +1 -0
- data/lib/chef/knife/config_list_profiles.rb +4 -1
- data/lib/chef/knife/configure.rb +1 -1
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +29 -37
- data/lib/chef/knife/core/bootstrap_context.rb +1 -1
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
- data/lib/chef/knife/core/subcommand_loader.rb +20 -1
- data/lib/chef/knife/core/ui.rb +8 -2
- data/lib/chef/knife/core/windows_bootstrap_context.rb +33 -26
- data/lib/chef/knife/delete.rb +15 -15
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/rehash.rb +3 -21
- data/lib/chef/knife/ssh.rb +11 -7
- data/lib/chef/knife/xargs.rb +19 -19
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/log.rb +7 -2
- data/lib/chef/mixin/checksum.rb +0 -1
- data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
- data/lib/chef/mixin/deep_merge.rb +35 -6
- data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
- data/lib/chef/mixin/openssl_helper.rb +30 -6
- data/lib/chef/mixin/path_sanity.rb +5 -4
- data/lib/chef/mixin/shell_out.rb +4 -188
- data/lib/chef/mixin/template.rb +1 -0
- data/lib/chef/mixin/which.rb +6 -3
- data/lib/chef/mixins.rb +1 -0
- data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
- data/lib/chef/node.rb +36 -12
- data/lib/chef/node/attribute.rb +2 -4
- data/lib/chef/node_map.rb +21 -18
- data/lib/chef/platform/service_helpers.rb +31 -28
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider/cron/unix.rb +0 -2
- data/lib/chef/provider/git.rb +17 -9
- data/lib/chef/provider/group.rb +0 -2
- data/lib/chef/provider/group/suse.rb +5 -5
- data/lib/chef/provider/ifconfig.rb +1 -4
- data/lib/chef/provider/mount.rb +0 -2
- data/lib/chef/provider/mount/solaris.rb +0 -1
- data/lib/chef/provider/package.rb +0 -2
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/snap.rb +3 -4
- data/lib/chef/provider/package/windows.rb +9 -4
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +21 -5
- data/lib/chef/provider/route.rb +1 -1
- data/lib/chef/provider/service.rb +2 -2
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +1 -4
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +10 -10
- data/lib/chef/provider/systemd_unit.rb +0 -2
- data/lib/chef/provider/template/content.rb +1 -0
- data/lib/chef/provider/user/dscl.rb +2 -2
- data/lib/chef/provider/user/mac.rb +9 -9
- data/lib/chef/provider/windows_task.rb +0 -3
- data/lib/chef/provider/yum_repository.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +1 -2
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/recipe.rb +1 -1
- data/lib/chef/resource.rb +9 -11
- data/lib/chef/resource/apt_repository.rb +1 -10
- data/lib/chef/resource/build_essential.rb +2 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
- data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +13 -13
- data/lib/chef/resource/chocolatey_feature.rb +1 -2
- data/lib/chef/resource/cron/cron_d.rb +1 -1
- data/lib/chef/resource/cron_access.rb +2 -2
- data/lib/chef/resource/dmg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +4 -5
- data/lib/chef/resource/homebrew_update.rb +2 -2
- data/lib/chef/resource/hostname.rb +18 -18
- data/lib/chef/resource/launchd.rb +1 -1
- data/lib/chef/resource/lwrp_base.rb +1 -0
- data/lib/chef/resource/macos_userdefaults.rb +176 -61
- data/lib/chef/resource/openssl_dhparam.rb +2 -0
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
- data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
- data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
- data/lib/chef/resource/openssl_x509_crl.rb +3 -2
- data/lib/chef/resource/openssl_x509_request.rb +23 -20
- data/lib/chef/resource/osx_profile.rb +227 -5
- data/lib/chef/resource/powershell_package_source.rb +1 -1
- data/lib/chef/resource/powershell_script.rb +24 -30
- data/lib/chef/resource/service.rb +2 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
- data/lib/chef/resource/sudo.rb +2 -2
- data/lib/chef/resource/sysctl.rb +5 -5
- data/lib/chef/resource/user_ulimit.rb +1 -1
- data/lib/chef/resource/windows_ad_join.rb +2 -0
- data/lib/chef/resource/windows_audit_policy.rb +3 -0
- data/lib/chef/resource/windows_auto_run.rb +2 -0
- data/lib/chef/resource/windows_certificate.rb +2 -0
- data/lib/chef/resource/windows_dfs_folder.rb +2 -0
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
- data/lib/chef/resource/windows_dfs_server.rb +2 -0
- data/lib/chef/resource/windows_dns_record.rb +25 -5
- data/lib/chef/resource/windows_dns_zone.rb +12 -7
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_feature_dism.rb +10 -0
- data/lib/chef/resource/windows_feature_powershell.rb +14 -2
- data/lib/chef/resource/windows_firewall_profile.rb +199 -0
- data/lib/chef/resource/windows_firewall_rule.rb +5 -3
- data/lib/chef/resource/windows_font.rb +3 -1
- data/lib/chef/resource/windows_pagefile.rb +4 -0
- data/lib/chef/resource/windows_printer.rb +17 -18
- data/lib/chef/resource/windows_printer_port.rb +14 -13
- data/lib/chef/resource/windows_security_policy.rb +51 -20
- data/lib/chef/resource/windows_share.rb +5 -3
- data/lib/chef/resource/windows_shortcut.rb +2 -0
- data/lib/chef/resource/windows_uac.rb +2 -0
- data/lib/chef/resource/windows_user_privilege.rb +27 -2
- data/lib/chef/resource/windows_workgroup.rb +2 -3
- data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
- data/lib/chef/resource_inspector.rb +7 -1
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/role.rb +3 -4
- data/lib/chef/run_context/cookbook_compiler.rb +20 -20
- data/lib/chef/run_status.rb +2 -6
- data/lib/chef/server_api_versions.rb +4 -0
- data/lib/chef/shell.rb +1 -1
- data/lib/chef/shell/shell_session.rb +2 -0
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +11 -12
- data/lib/chef/util/powershell/cmdlet.rb +1 -1
- data/lib/chef/version.rb +2 -2
- data/lib/chef/win32/file.rb +2 -2
- data/lib/chef/win32/file/version_info.rb +5 -5
- data/lib/chef/win32/registry.rb +1 -2
- data/spec/data/ssl/chef-rspec.cert +15 -15
- data/spec/functional/knife/configure_spec.rb +1 -1
- data/spec/functional/knife/ssh_spec.rb +5 -16
- data/spec/functional/resource/aix_service_spec.rb +9 -2
- data/spec/functional/resource/aixinit_service_spec.rb +8 -9
- data/spec/functional/resource/apt_package_spec.rb +0 -1
- data/spec/functional/resource/bash_spec.rb +3 -2
- data/spec/functional/resource/bff_spec.rb +3 -3
- data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +10 -2
- data/spec/functional/resource/dnf_package_spec.rb +4 -1
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/dsc_script_spec.rb +0 -1
- data/spec/functional/resource/execute_spec.rb +1 -1
- data/spec/functional/resource/git_spec.rb +23 -1
- data/spec/functional/resource/group_spec.rb +21 -9
- data/spec/functional/resource/ifconfig_spec.rb +9 -1
- data/spec/functional/resource/insserv_spec.rb +7 -7
- data/spec/functional/resource/link_spec.rb +22 -25
- data/spec/functional/resource/mount_spec.rb +9 -1
- data/spec/functional/resource/msu_package_spec.rb +9 -3
- data/spec/functional/resource/powershell_script_spec.rb +8 -8
- data/spec/functional/resource/remote_file_spec.rb +7 -13
- data/spec/functional/resource/rpm_spec.rb +3 -3
- data/spec/functional/resource/timezone_spec.rb +2 -0
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_font_spec.rb +49 -0
- data/spec/functional/resource/windows_package_spec.rb +0 -1
- data/spec/functional/resource/windows_path_spec.rb +4 -0
- data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
- data/spec/functional/resource/windows_service_spec.rb +4 -0
- data/spec/functional/resource/windows_task_spec.rb +4 -3
- data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
- data/spec/functional/resource/yum_package_spec.rb +4 -1
- data/spec/functional/resource/zypper_package_spec.rb +4 -1
- data/spec/functional/run_lock_spec.rb +26 -25
- data/spec/functional/shell_spec.rb +5 -6
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/crypto_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +8 -8
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +12 -12
- data/spec/integration/knife/config_get_profile_spec.rb +69 -68
- data/spec/integration/knife/config_get_spec.rb +126 -125
- data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
- data/spec/integration/knife/config_use_profile_spec.rb +110 -109
- data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
- data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +3 -1
- data/spec/integration/knife/download_spec.rb +3 -1
- data/spec/integration/knife/environment_from_file_spec.rb +1 -1
- data/spec/integration/knife/node_from_file_spec.rb +1 -1
- data/spec/integration/knife/role_from_file_spec.rb +1 -1
- data/spec/integration/knife/serve_spec.rb +5 -5
- data/spec/integration/knife/upload_spec.rb +3 -1
- data/spec/integration/recipes/accumulator_spec.rb +1 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
- data/spec/integration/recipes/lwrp_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +1 -1
- data/spec/integration/recipes/notifying_block_spec.rb +1 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
- data/spec/integration/recipes/resource_load_spec.rb +4 -2
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +1 -1
- data/spec/scripts/ssl-serve.rb +1 -1
- data/spec/spec_helper.rb +16 -10
- data/spec/support/chef_helpers.rb +1 -20
- data/spec/support/platform_helpers.rb +9 -11
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/directory_resource.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +20 -21
- data/spec/support/shared/functional/securable_resource.rb +1 -2
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +5 -5
- data/spec/support/shared/integration/integration_helper.rb +22 -52
- data/spec/support/shared/integration/knife_support.rb +2 -9
- data/spec/support/shared/unit/application_dot_d.rb +0 -1
- data/spec/support/shared/unit/provider/file.rb +12 -8
- data/spec/support/shared/unit/script_resource.rb +6 -20
- data/spec/support/shared/unit/windows_script_resource.rb +15 -28
- data/spec/unit/application/solo_spec.rb +4 -2
- data/spec/unit/application_spec.rb +4 -2
- data/spec/unit/chef_fs/config_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +8 -8
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
- data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
- data/spec/unit/client_spec.rb +4 -1
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
- data/spec/unit/data_bag_spec.rb +6 -3
- data/spec/unit/data_collector_spec.rb +29 -1
- data/spec/unit/decorator_spec.rb +23 -23
- data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
- data/spec/unit/environment_spec.rb +12 -8
- data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
- data/spec/unit/guard_interpreter_spec.rb +1 -1
- data/spec/unit/http/api_versions_spec.rb +20 -2
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +17 -20
- data/spec/unit/knife/cookbook_download_spec.rb +6 -6
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/cookbook_show_spec.rb +6 -7
- data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/log/syslog_spec.rb +6 -10
- data/spec/unit/log/winevt_spec.rb +21 -13
- data/spec/unit/lwrp_spec.rb +9 -6
- data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
- data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
- data/spec/unit/mixin/powershell_out_spec.rb +2 -4
- data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
- data/spec/unit/mixin/securable_spec.rb +0 -1
- data/spec/unit/mixin/shell_out_spec.rb +25 -26
- data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
- data/spec/unit/mixin/template_spec.rb +30 -30
- data/spec/unit/mixin/unformatter_spec.rb +2 -2
- data/spec/unit/mixin/uris_spec.rb +1 -1
- data/spec/unit/mixin/which.rb +8 -0
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
- data/spec/unit/node/immutable_collections_spec.rb +6 -2
- data/spec/unit/node_spec.rb +103 -16
- data/spec/unit/property_spec.rb +5 -5
- data/spec/unit/provider/batch_spec.rb +1 -1
- data/spec/unit/provider/cron/unix_spec.rb +1 -1
- data/spec/unit/provider/dsc_resource_spec.rb +22 -38
- data/spec/unit/provider/dsc_script_spec.rb +10 -10
- data/spec/unit/provider/execute_spec.rb +1 -8
- data/spec/unit/provider/git_spec.rb +3 -3
- data/spec/unit/provider/ifconfig_spec.rb +0 -1
- data/spec/unit/provider/mdadm_spec.rb +1 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/openbsd_spec.rb +1 -1
- data/spec/unit/provider/package/pacman_spec.rb +17 -20
- data/spec/unit/provider/package/rubygems_spec.rb +5 -10
- data/spec/unit/provider/package/smartos_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
- data/spec/unit/provider/package/windows_spec.rb +30 -53
- data/spec/unit/provider/powershell_script_spec.rb +11 -4
- data/spec/unit/provider/remote_directory_spec.rb +9 -9
- data/spec/unit/provider/service/arch_service_spec.rb +3 -2
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
- data/spec/unit/provider/service/macosx_spec.rb +3 -3
- data/spec/unit/provider/service/redhat_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider/service/windows_spec.rb +2 -6
- data/spec/unit/provider/systemd_unit_spec.rb +28 -24
- data/spec/unit/provider/user/dscl_spec.rb +2 -2
- data/spec/unit/provider/windows_env_spec.rb +5 -4
- data/spec/unit/provider_resolver_spec.rb +6 -6
- data/spec/unit/provider_spec.rb +1 -0
- data/spec/unit/resource/batch_spec.rb +6 -6
- data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
- data/spec/unit/resource/execute_spec.rb +123 -118
- data/spec/unit/resource/file/verification_spec.rb +2 -1
- data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
- data/spec/unit/resource/osx_profile_spec.rb +233 -0
- data/spec/unit/resource/powershell_script_spec.rb +11 -29
- data/spec/unit/resource/script_spec.rb +6 -1
- data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
- data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
- data/spec/unit/resource/windows_package_spec.rb +1 -0
- data/spec/unit/resource_reporter_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +25 -8
- data/spec/unit/role_spec.rb +30 -28
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/server_api_spec.rb +43 -16
- data/spec/unit/util/backup_spec.rb +1 -1
- data/spec/unit/util/diff_spec.rb +1 -15
- data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
- data/spec/unit/util/selinux_spec.rb +2 -1
- data/spec/unit/win32/security_spec.rb +4 -3
- data/tasks/rspec.rb +1 -1
- metadata +53 -40
- data/lib/chef/provider/osx_profile.rb +0 -255
- data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -86,7 +86,7 @@ class Chef
|
|
86
86
|
end
|
87
87
|
|
88
88
|
action :periodic do
|
89
|
-
return unless
|
89
|
+
return unless macos?
|
90
90
|
|
91
91
|
unless brew_up_to_date?
|
92
92
|
converge_by "update new lists of packages" do
|
@@ -96,7 +96,7 @@ class Chef
|
|
96
96
|
end
|
97
97
|
|
98
98
|
action :update do
|
99
|
-
return unless
|
99
|
+
return unless macos?
|
100
100
|
|
101
101
|
converge_by "force update new lists of packages" do
|
102
102
|
do_update
|
@@ -87,8 +87,7 @@ class Chef
|
|
87
87
|
def updated_ec2_config_xml
|
88
88
|
begin
|
89
89
|
require "rexml/document" unless defined?(REXML::Document)
|
90
|
-
|
91
|
-
config = REXML::Document.new(::File.read(config_file))
|
90
|
+
config = REXML::Document.new(::File.read(WINDOWS_EC2_CONFIG))
|
92
91
|
# find an element named State with a sibling element whose value is Ec2SetComputerName
|
93
92
|
REXML::XPath.each(config, "//Plugin/State[../Name/text() = 'Ec2SetComputerName']") do |element|
|
94
93
|
element.text = "Disabled"
|
@@ -223,35 +222,36 @@ class Chef
|
|
223
222
|
end
|
224
223
|
|
225
224
|
else # windows
|
225
|
+
WINDOWS_EC2_CONFIG = 'C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml'.freeze
|
226
|
+
|
226
227
|
raise "Windows hostnames cannot contain a period." if new_resource.hostname.match?(/\./)
|
227
228
|
|
228
229
|
# suppress EC2 config service from setting our hostname
|
229
|
-
if ::File.exist?(
|
230
|
+
if ::File.exist?(WINDOWS_EC2_CONFIG)
|
230
231
|
xml_contents = updated_ec2_config_xml
|
231
232
|
if xml_contents.empty?
|
232
233
|
Chef::Log.warn('Unable to properly parse and update C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml contents. Skipping file update.')
|
233
234
|
else
|
234
|
-
|
235
|
+
file WINDOWS_EC2_CONFIG do
|
235
236
|
content xml_contents
|
236
237
|
end
|
237
238
|
end
|
238
239
|
end
|
239
240
|
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
not_if { Socket.gethostbyname(Socket.gethostname).first == new_resource.hostname }
|
248
|
-
end
|
241
|
+
unless Socket.gethostbyname(Socket.gethostname).first == new_resource.hostname
|
242
|
+
converge_by "set hostname to #{new_resource.hostname}" do
|
243
|
+
powershell_out! <<~EOH
|
244
|
+
$sysInfo = Get-WmiObject -Class Win32_ComputerSystem
|
245
|
+
$sysInfo.Rename("#{new_resource.hostname}")
|
246
|
+
EOH
|
247
|
+
end
|
249
248
|
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
249
|
+
# reboot because $windows
|
250
|
+
reboot "setting hostname" do
|
251
|
+
reason "#{Chef::Dist::PRODUCT} updated system hostname"
|
252
|
+
only_if { new_resource.windows_reboot }
|
253
|
+
action :request_reboot
|
254
|
+
end
|
255
255
|
end
|
256
256
|
end
|
257
257
|
end
|
@@ -68,7 +68,7 @@ class Chef
|
|
68
68
|
# check. According to `man 5 launchd.plist`:
|
69
69
|
# StartCalendarInterval <dictionary of integers or array of dictionaries of integers>
|
70
70
|
# ... Missing arguments are considered to be wildcard.
|
71
|
-
# What the man page doesn't state, but what was observed (OSX 10.11.5,
|
71
|
+
# What the man page doesn't state, but what was observed (OSX 10.11.5, launchctl v3.4.0)
|
72
72
|
# Is that keys that are specified, but invalid, will also be treated as a wildcard
|
73
73
|
# this means that an entry like:
|
74
74
|
# { "Hour"=>0, "Weekday"=>"6-7"}
|
@@ -16,6 +16,8 @@
|
|
16
16
|
#
|
17
17
|
|
18
18
|
require_relative "../resource"
|
19
|
+
require_relative "../dist"
|
20
|
+
require "plist"
|
19
21
|
|
20
22
|
class Chef
|
21
23
|
class Resource
|
@@ -28,99 +30,210 @@ class Chef
|
|
28
30
|
|
29
31
|
description "Use the **macos_userdefaults** resource to manage the macOS user defaults system. The properties of this resource are passed to the defaults command, and the parameters follow the convention of that command. See the defaults(1) man page for details on how the tool works."
|
30
32
|
introduced "14.0"
|
33
|
+
examples <<~DOC
|
34
|
+
**Specify a global domain value**
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
macos_userdefaults 'Full keyboard access to all controls' do
|
38
|
+
key 'AppleKeyboardUIMode'
|
39
|
+
value 2
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
**Setting a value on a specific domain**
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
macos_userdefaults 'Enable macOS firewall' do
|
47
|
+
domain '/Library/Preferences/com.apple.alf'
|
48
|
+
key 'globalstate'
|
49
|
+
value 1
|
50
|
+
end
|
51
|
+
```
|
52
|
+
|
53
|
+
**Specifying the type of a key to skip automatic type detection**
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
macos_userdefaults 'Finder expanded save dialogs' do
|
57
|
+
key 'NSNavPanelExpandedStateForSaveMode'
|
58
|
+
value 'TRUE'
|
59
|
+
type 'bool'
|
60
|
+
end
|
61
|
+
```
|
62
|
+
DOC
|
31
63
|
|
32
64
|
property :domain, String,
|
33
65
|
description: "The domain that the user defaults belong to.",
|
34
|
-
|
66
|
+
default: "NSGlobalDomain",
|
67
|
+
default_description: "NSGlobalDomain: the global domain.",
|
68
|
+
desired_state: false
|
35
69
|
|
36
70
|
property :global, [TrueClass, FalseClass],
|
37
71
|
description: "Determines whether or not the domain is global.",
|
38
|
-
|
72
|
+
deprecated: true,
|
73
|
+
default: false,
|
74
|
+
desired_state: false
|
39
75
|
|
40
76
|
property :key, String,
|
41
|
-
description: "The preference key."
|
77
|
+
description: "The preference key.",
|
78
|
+
required: true
|
79
|
+
|
80
|
+
property :host, [String, Symbol],
|
81
|
+
description: "Set either :current or a hostname to set the user default at the host level.",
|
82
|
+
desired_state: false,
|
83
|
+
introduced: "16.3"
|
42
84
|
|
43
85
|
property :value, [Integer, Float, String, TrueClass, FalseClass, Hash, Array],
|
44
|
-
description: "The value of the key.",
|
45
|
-
required:
|
86
|
+
description: "The value of the key. Note: With the `type` property set to `bool`, `String` forms of Boolean true/false values that Apple accepts in the defaults command will be coerced: 0/1, 'TRUE'/'FALSE,' 'true'/false', 'YES'/'NO', or 'yes'/'no'.",
|
87
|
+
required: [:write],
|
88
|
+
coerce: proc { |v| v.is_a?(Hash) ? v.transform_keys(&:to_s) : v } # make sure keys are all strings for comparison
|
46
89
|
|
47
90
|
property :type, String,
|
48
91
|
description: "The value type of the preference key.",
|
49
|
-
|
92
|
+
equal_to: %w{bool string int float array dict},
|
93
|
+
desired_state: false
|
50
94
|
|
51
95
|
property :user, String,
|
52
|
-
description: "The system user that the default will be applied to."
|
96
|
+
description: "The system user that the default will be applied to.",
|
97
|
+
desired_state: false
|
53
98
|
|
54
99
|
property :sudo, [TrueClass, FalseClass],
|
55
|
-
description: "Set to true if the setting you wish to modify requires privileged access.",
|
100
|
+
description: "Set to true if the setting you wish to modify requires privileged access. This requires passwordless sudo for the '/usr/bin/defaults' command to be setup for the user running #{Chef::Dist::PRODUCT}.",
|
56
101
|
default: false,
|
57
102
|
desired_state: false
|
58
103
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
desired_state: false,
|
63
|
-
skip_docs: true
|
104
|
+
load_current_value do |desired|
|
105
|
+
Chef::Log.debug "#load_current_value: shelling out \"#{defaults_export_cmd(desired).join(" ")}\" to determine state"
|
106
|
+
state = shell_out(defaults_export_cmd(desired), user: desired.user)
|
64
107
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
108
|
+
if state.error? || state.stdout.empty?
|
109
|
+
Chef::Log.debug "#load_current_value: #{defaults_export_cmd(desired).join(" ")} returned stdout: #{state.stdout} and stderr: #{state.stderr}"
|
110
|
+
current_value_does_not_exist!
|
111
|
+
end
|
112
|
+
|
113
|
+
plist_data = ::Plist.parse_xml(state.stdout)
|
114
|
+
|
115
|
+
# handle the situation where the key doesn't exist in the domain
|
116
|
+
if plist_data.key?(desired.key)
|
117
|
+
key desired.key
|
118
|
+
else
|
119
|
+
current_value_does_not_exist!
|
120
|
+
end
|
71
121
|
|
72
|
-
|
122
|
+
value plist_data[desired.key]
|
73
123
|
end
|
74
124
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
125
|
+
#
|
126
|
+
# The defaults command to export a domain
|
127
|
+
#
|
128
|
+
# @return [Array] defaults command
|
129
|
+
#
|
130
|
+
def defaults_export_cmd(resource)
|
131
|
+
state_cmd = ["/usr/bin/defaults"]
|
132
|
+
|
133
|
+
if resource.host == "current"
|
134
|
+
state_cmd.concat(["-currentHost"])
|
135
|
+
elsif resource.host # they specified a non-nil value, which is a hostname
|
136
|
+
state_cmd.concat(["-host", resource.host])
|
137
|
+
end
|
138
|
+
|
139
|
+
state_cmd.concat(["export", resource.domain, "-"])
|
140
|
+
state_cmd
|
88
141
|
end
|
89
142
|
|
90
143
|
action :write do
|
91
|
-
description "Write the
|
92
|
-
|
93
|
-
unless current_resource.is_set
|
94
|
-
cmd = ["defaults write"]
|
95
|
-
cmd.unshift("sudo") if new_resource.sudo
|
96
|
-
|
97
|
-
cmd << if new_resource.global
|
98
|
-
"NSGlobalDomain"
|
99
|
-
else
|
100
|
-
"'#{new_resource.domain}'"
|
101
|
-
end
|
102
|
-
|
103
|
-
cmd << "'#{new_resource.key}'" if new_resource.key
|
104
|
-
value = new_resource.value
|
105
|
-
type = new_resource.type.empty? ? value_type(value) : new_resource.type
|
106
|
-
# creates a string of Key1 Value1 Key2 Value2...
|
107
|
-
value = value.map { |k, v| "\"#{k}\" \"#{v}\"" }.join(" ") if type == "dict"
|
108
|
-
if type == "array"
|
109
|
-
value = value.join("' '")
|
110
|
-
value = "'#{value}'"
|
111
|
-
end
|
112
|
-
cmd << "-#{type}" if type
|
113
|
-
cmd << value
|
144
|
+
description "Write the value to the specified domain/key."
|
114
145
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
146
|
+
converge_if_changed do
|
147
|
+
cmd = defaults_modify_cmd
|
148
|
+
Chef::Log.debug("Updating defaults value by shelling out: #{cmd.join(" ")}")
|
149
|
+
|
150
|
+
shell_out!(cmd, user: new_resource.user)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
action :delete do
|
155
|
+
description "Delete a key from a domain."
|
156
|
+
|
157
|
+
# if it's not there there's nothing to remove
|
158
|
+
return unless current_resource
|
159
|
+
|
160
|
+
converge_by("delete domain:#{new_resource.domain} key:#{new_resource.key}") do
|
161
|
+
|
162
|
+
cmd = defaults_modify_cmd
|
163
|
+
Chef::Log.debug("Removing defaults key by shelling out: #{cmd.join(" ")}")
|
164
|
+
|
165
|
+
shell_out!(cmd, user: new_resource.user)
|
120
166
|
end
|
121
167
|
end
|
122
168
|
|
123
169
|
action_class do
|
170
|
+
#
|
171
|
+
# The command used to write or delete delete values from domains
|
172
|
+
#
|
173
|
+
# @return [Array] Array representation of defaults command to run
|
174
|
+
#
|
175
|
+
def defaults_modify_cmd
|
176
|
+
cmd = ["/usr/bin/defaults"]
|
177
|
+
|
178
|
+
if new_resource.host == :current
|
179
|
+
cmd.concat(["-currentHost"])
|
180
|
+
elsif new_resource.host # they specified a non-nil value, which is a hostname
|
181
|
+
cmd.concat(["-host", new_resource.host])
|
182
|
+
end
|
183
|
+
|
184
|
+
cmd.concat([action.to_s, new_resource.domain, new_resource.key])
|
185
|
+
cmd.concat(processed_value) if action == :write
|
186
|
+
cmd.prepend("sudo") if new_resource.sudo
|
187
|
+
cmd
|
188
|
+
end
|
189
|
+
|
190
|
+
#
|
191
|
+
# convert the provided value into the format defaults expects
|
192
|
+
#
|
193
|
+
# @return [array] array of values starting with the type if applicable
|
194
|
+
#
|
195
|
+
def processed_value
|
196
|
+
type = new_resource.type || value_type(new_resource.value)
|
197
|
+
|
198
|
+
# when dict this creates an array of values ["Key1", "Value1", "Key2", "Value2" ...]
|
199
|
+
cmd_values = ["-#{type}"]
|
200
|
+
|
201
|
+
case type
|
202
|
+
when "dict"
|
203
|
+
cmd_values.concat(new_resource.value.flatten)
|
204
|
+
when "array"
|
205
|
+
cmd_values.concat(new_resource.value)
|
206
|
+
when "bool"
|
207
|
+
cmd_values.concat(bool_to_defaults_bool(new_resource.value))
|
208
|
+
else
|
209
|
+
cmd_values.concat([new_resource.value])
|
210
|
+
end
|
211
|
+
|
212
|
+
cmd_values
|
213
|
+
end
|
214
|
+
|
215
|
+
#
|
216
|
+
# defaults booleans on the CLI must be 'TRUE' or 'FALSE' so convert various inputs to that
|
217
|
+
#
|
218
|
+
# @param [String, Integer, Boolean] input <description>
|
219
|
+
#
|
220
|
+
# @return [String] TRUE or FALSE
|
221
|
+
#
|
222
|
+
def bool_to_defaults_bool(input)
|
223
|
+
return ["TRUE"] if [true, "TRUE", "1", "true", "YES", "yes"].include?(input)
|
224
|
+
return ["FALSE"] if [false, "FALSE", "0", "false", "NO", "no"].include?(input)
|
225
|
+
|
226
|
+
# make sure it's very clear bad input was given
|
227
|
+
raise ArgumentError, "#{input} cannot be converted to a boolean value for use with Apple's defaults command. Acceptable values are: 'TRUE', 'YES', 'true, 'yes', '0', true, 'FALSE', 'false', 'NO', 'no', '1', or false."
|
228
|
+
end
|
229
|
+
|
230
|
+
#
|
231
|
+
# convert ruby type to defaults type
|
232
|
+
#
|
233
|
+
# @param [Integer, Float, String, TrueClass, FalseClass, Hash, Array] value The value being set
|
234
|
+
#
|
235
|
+
# @return [string, nil] the type value used by defaults or nil if not applicable
|
236
|
+
#
|
124
237
|
def value_type(value)
|
125
238
|
case value
|
126
239
|
when true, false
|
@@ -133,6 +246,8 @@ class Chef
|
|
133
246
|
"dict"
|
134
247
|
when Array
|
135
248
|
"array"
|
249
|
+
when String
|
250
|
+
"string"
|
136
251
|
end
|
137
252
|
end
|
138
253
|
end
|
@@ -23,6 +23,8 @@ class Chef
|
|
23
23
|
require_relative "../mixin/openssl_helper"
|
24
24
|
include Chef::Mixin::OpenSSLHelper
|
25
25
|
|
26
|
+
unified_mode true
|
27
|
+
|
26
28
|
provides(:openssl_dhparam) { true }
|
27
29
|
|
28
30
|
description "Use the **openssl_dhparam** resource to generate dhparam.pem files. If a valid dhparam.pem file is found at the specified location, no new file will be created. If a file is found at the specified location but it is not a valid dhparam file, it will be overwritten."
|
@@ -24,6 +24,8 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
+
unified_mode true
|
28
|
+
|
27
29
|
provides :openssl_ec_private_key
|
28
30
|
|
29
31
|
description "Use the **openssl_ec_private_key** resource to generate an elliptic curve (EC) private key file. If a valid EC key file can be opened at the specified location, no new file will be created. If the EC key file cannot be opened, either because it does not exist or because the password to the EC key file does not match the password in the recipe, then it will be overwritten."
|
@@ -24,6 +24,8 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
+
unified_mode true
|
28
|
+
|
27
29
|
provides :openssl_ec_public_key
|
28
30
|
|
29
31
|
description "Use the **openssl_ec_public_key** resource to generate elliptic curve (EC) public key files from a given EC private key."
|
@@ -24,6 +24,8 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
+
unified_mode true
|
28
|
+
|
27
29
|
provides :openssl_x509_certificate
|
28
30
|
provides(:openssl_x509) { true } # legacy cookbook name.
|
29
31
|
|
@@ -161,7 +163,7 @@ class Chef
|
|
161
163
|
content cert.to_pem
|
162
164
|
end
|
163
165
|
|
164
|
-
if !new_resource.renew_before_expiry.nil? &&
|
166
|
+
if !new_resource.renew_before_expiry.nil? && cert_need_renewal?(new_resource.path, new_resource.renew_before_expiry)
|
165
167
|
file new_resource.path do
|
166
168
|
action :create
|
167
169
|
owner new_resource.owner unless new_resource.owner.nil?
|
@@ -173,7 +175,7 @@ class Chef
|
|
173
175
|
end
|
174
176
|
|
175
177
|
if new_resource.csr_file.nil?
|
176
|
-
file
|
178
|
+
file key_file do
|
177
179
|
action :create_if_missing
|
178
180
|
owner new_resource.owner unless new_resource.owner.nil?
|
179
181
|
group new_resource.group unless new_resource.group.nil?
|
@@ -185,54 +187,53 @@ class Chef
|
|
185
187
|
end
|
186
188
|
|
187
189
|
action_class do
|
188
|
-
def
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
190
|
+
def key_file
|
191
|
+
@key_file ||=
|
192
|
+
if new_resource.key_file
|
193
|
+
new_resource.key_file
|
194
|
+
else
|
195
|
+
path, file = ::File.split(new_resource.path)
|
196
|
+
filename = ::File.basename(file, ::File.extname(file))
|
197
|
+
path + "/" + filename + ".key"
|
198
|
+
end
|
195
199
|
end
|
196
200
|
|
197
201
|
def key
|
198
|
-
@key ||= if priv_key_file_valid?(
|
199
|
-
OpenSSL::PKey.read ::File.read(
|
202
|
+
@key ||= if priv_key_file_valid?(key_file, new_resource.key_pass)
|
203
|
+
OpenSSL::PKey.read ::File.read(key_file), new_resource.key_pass
|
200
204
|
elsif new_resource.key_type == "rsa"
|
201
205
|
gen_rsa_priv_key(new_resource.key_length)
|
202
206
|
else
|
203
207
|
gen_ec_priv_key(new_resource.key_curve)
|
204
208
|
end
|
205
|
-
@key
|
206
209
|
end
|
207
210
|
|
208
211
|
def request
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
request
|
212
|
+
if new_resource.csr_file.nil?
|
213
|
+
gen_x509_request(subject, key)
|
214
|
+
else
|
215
|
+
OpenSSL::X509::Request.new ::File.read(new_resource.csr_file)
|
216
|
+
end
|
215
217
|
end
|
216
218
|
|
217
219
|
def subject
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
220
|
+
OpenSSL::X509::Name.new.tap do |csr_subject|
|
221
|
+
csr_subject.add_entry("C", new_resource.country) unless new_resource.country.nil?
|
222
|
+
csr_subject.add_entry("ST", new_resource.state) unless new_resource.state.nil?
|
223
|
+
csr_subject.add_entry("L", new_resource.city) unless new_resource.city.nil?
|
224
|
+
csr_subject.add_entry("O", new_resource.org) unless new_resource.org.nil?
|
225
|
+
csr_subject.add_entry("OU", new_resource.org_unit) unless new_resource.org_unit.nil?
|
226
|
+
csr_subject.add_entry("CN", new_resource.common_name)
|
227
|
+
csr_subject.add_entry("emailAddress", new_resource.email) unless new_resource.email.nil?
|
228
|
+
end
|
227
229
|
end
|
228
230
|
|
229
231
|
def ca_private_key
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
ca_private_key
|
232
|
+
if new_resource.csr_file.nil?
|
233
|
+
key
|
234
|
+
else
|
235
|
+
OpenSSL::PKey.read ::File.read(new_resource.ca_key_file), new_resource.ca_key_pass
|
236
|
+
end
|
236
237
|
end
|
237
238
|
|
238
239
|
def ca_info
|
@@ -258,8 +259,7 @@ class Chef
|
|
258
259
|
end
|
259
260
|
|
260
261
|
def cert
|
261
|
-
|
262
|
-
cert
|
262
|
+
gen_x509_cert(request, extensions, ca_info, ca_private_key)
|
263
263
|
end
|
264
264
|
end
|
265
265
|
end
|