chef 16.4.38 → 16.7.61
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +5 -12
- data/Rakefile +22 -15
- data/bin/knife +1 -1
- data/chef-universal-mingw32.gemspec +1 -1
- data/chef.gemspec +2 -1
- data/lib/chef/application.rb +19 -17
- data/lib/chef/application/apply.rb +12 -7
- data/lib/chef/application/base.rb +26 -23
- data/lib/chef/application/client.rb +16 -5
- data/lib/chef/application/exit_code.rb +13 -4
- data/lib/chef/application/knife.rb +22 -11
- data/lib/chef/application/solo.rb +2 -1
- data/lib/chef/application/windows_service.rb +14 -14
- data/lib/chef/application/windows_service_manager.rb +6 -6
- data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/knife.rb +2 -2
- data/lib/chef/chef_fs/parallelizer.rb +0 -1
- data/lib/chef/client.rb +13 -43
- data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +2 -5
- data/lib/chef/data_collector.rb +7 -6
- data/lib/chef/data_collector/config_validation.rb +22 -13
- data/lib/chef/data_collector/run_end_message.rb +2 -2
- data/lib/chef/data_collector/run_start_message.rb +1 -1
- data/lib/chef/deprecated.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +2 -2
- data/lib/chef/digester.rb +2 -2
- data/lib/chef/dsl/chef_vault.rb +1 -1
- data/lib/chef/dsl/data_query.rb +2 -2
- data/lib/chef/dsl/platform_introspection.rb +1 -1
- data/lib/chef/encrypted_data_bag_item.rb +3 -4
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
- data/lib/chef/environment.rb +3 -3
- data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
- data/lib/chef/exceptions.rb +5 -5
- data/lib/chef/file_access_control/windows.rb +6 -5
- data/lib/chef/file_content_management/tempfile.rb +1 -1
- data/lib/chef/formatters/doc.rb +7 -6
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +6 -6
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
- data/lib/chef/formatters/indentable_output_stream.rb +2 -2
- data/lib/chef/formatters/minimal.rb +5 -4
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +28 -39
- data/lib/chef/http.rb +6 -14
- data/lib/chef/http/auth_credentials.rb +5 -1
- data/lib/chef/http/authenticator.rb +1 -1
- data/lib/chef/http/basic_client.rb +4 -2
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +7 -5
- data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
- data/lib/chef/http/ssl_policies.rb +1 -1
- data/lib/chef/json_compat.rb +3 -8
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +18 -15
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +9 -9
- data/lib/chef/knife/client_create.rb +3 -3
- data/lib/chef/knife/config_get.rb +8 -97
- data/lib/chef/knife/config_get_profile.rb +9 -9
- data/lib/chef/knife/config_list.rb +139 -0
- data/lib/chef/knife/config_list_profiles.rb +8 -98
- data/lib/chef/knife/config_show.rb +127 -0
- data/lib/chef/knife/config_use.rb +61 -0
- data/lib/chef/knife/config_use_profile.rb +9 -24
- data/lib/chef/knife/configure.rb +4 -2
- data/lib/chef/knife/core/bootstrap_context.rb +2 -2
- data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -15
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/node_policy_set.rb +2 -2
- data/lib/chef/knife/node_run_list_add.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/node_run_list_set.rb +1 -1
- data/lib/chef/knife/node_show.rb +2 -2
- data/lib/chef/knife/role_env_run_list_add.rb +1 -1
- data/lib/chef/knife/role_env_run_list_set.rb +1 -1
- data/lib/chef/knife/role_run_list_add.rb +1 -1
- data/lib/chef/knife/role_run_list_set.rb +1 -1
- data/lib/chef/knife/search.rb +0 -1
- data/lib/chef/knife/serve.rb +3 -3
- data/lib/chef/knife/ssh.rb +18 -3
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/status.rb +2 -2
- data/lib/chef/knife/tag_create.rb +1 -1
- data/lib/chef/knife/tag_delete.rb +1 -1
- data/lib/chef/knife/user_create.rb +2 -2
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/local_mode.rb +2 -2
- data/lib/chef/log/syslog.rb +2 -2
- data/lib/chef/log/winevt.rb +2 -2
- data/lib/chef/mixin/convert_to_class_name.rb +0 -56
- data/lib/chef/mixin/deep_merge.rb +0 -12
- data/lib/chef/mixin/openssl_helper.rb +2 -5
- data/lib/chef/mixin/powershell_exec.rb +22 -10
- data/lib/chef/mixin/powershell_out.rb +12 -5
- data/lib/chef/mixin/properties.rb +2 -0
- data/lib/chef/mixin/template.rb +3 -3
- data/lib/chef/mixin/unformatter.rb +1 -1
- data/lib/chef/mixin/uris.rb +4 -2
- data/lib/chef/mixin/versioned_api.rb +1 -2
- data/lib/chef/node/attribute_collections.rb +2 -6
- data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
- data/lib/chef/node_map.rb +4 -4
- data/lib/chef/policy_builder/dynamic.rb +2 -0
- data/lib/chef/policy_builder/policyfile.rb +2 -2
- data/lib/chef/powershell.rb +8 -4
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider.rb +1 -5
- data/lib/chef/provider/cron.rb +2 -13
- data/lib/chef/provider/file.rb +2 -2
- data/lib/chef/provider/group.rb +14 -6
- data/lib/chef/provider/group/windows.rb +12 -1
- data/lib/chef/provider/ifconfig.rb +9 -9
- data/lib/chef/provider/ifconfig/debian.rb +38 -22
- data/lib/chef/provider/ifconfig/redhat.rb +54 -18
- data/lib/chef/provider/launchd.rb +3 -13
- data/lib/chef/provider/link.rb +0 -9
- data/lib/chef/provider/mount.rb +18 -1
- data/lib/chef/provider/mount/linux.rb +67 -0
- data/lib/chef/provider/mount/mount.rb +41 -43
- data/lib/chef/provider/package.rb +3 -0
- data/lib/chef/provider/package/apt.rb +1 -1
- data/lib/chef/provider/package/chocolatey.rb +6 -6
- data/lib/chef/provider/package/dpkg.rb +3 -12
- data/lib/chef/provider/package/freebsd/base.rb +3 -2
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
- data/lib/chef/provider/package/homebrew.rb +1 -1
- data/lib/chef/provider/package/ips.rb +1 -1
- data/lib/chef/provider/package/powershell.rb +2 -3
- data/lib/chef/provider/package/rubygems.rb +22 -19
- data/lib/chef/provider/package/snap.rb +1 -4
- data/lib/chef/provider/package/solaris.rb +0 -2
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
- data/lib/chef/provider/package/yum/rpm_utils.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +99 -72
- data/lib/chef/provider/powershell_script.rb +12 -1
- data/lib/chef/provider/registry_key.rb +4 -3
- data/lib/chef/provider/remote_file/content.rb +3 -0
- data/lib/chef/provider/remote_file/ftp.rb +6 -4
- data/lib/chef/provider/remote_file/sftp.rb +6 -4
- data/lib/chef/provider/route.rb +4 -8
- data/lib/chef/provider/service/debian.rb +2 -1
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/template_finder.rb +2 -10
- data/lib/chef/provider/user.rb +17 -9
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +5 -5
- data/lib/chef/provider/user/mac.rb +15 -7
- data/lib/chef/provider/user/solaris.rb +1 -1
- data/lib/chef/provider/user/windows.rb +10 -3
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/provider_resolver.rb +1 -1
- data/lib/chef/providers.rb +1 -3
- data/lib/chef/pwsh.rb +71 -0
- data/lib/chef/recipe.rb +2 -2
- data/lib/chef/resource.rb +2 -2
- data/lib/chef/resource/apt_repository.rb +6 -5
- data/lib/chef/resource/bash.rb +119 -1
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +22 -0
- data/lib/chef/resource/breakpoint.rb +59 -2
- data/lib/chef/resource/build_essential.rb +5 -8
- data/lib/chef/resource/cab_package.rb +29 -0
- data/lib/chef/resource/chef_client_config.rb +313 -0
- data/lib/chef/resource/chef_client_cron.rb +35 -28
- data/lib/chef/resource/chef_client_launchd.rb +194 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +24 -21
- data/lib/chef/resource/chef_client_systemd_timer.rb +27 -20
- data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
- data/lib/chef/resource/chef_gem.rb +10 -10
- data/lib/chef/resource/chef_handler.rb +149 -4
- data/lib/chef/resource/chef_sleep.rb +3 -3
- data/lib/chef/resource/chef_vault_secret.rb +1 -1
- data/lib/chef/resource/cookbook_file.rb +2 -2
- data/lib/chef/resource/cron/_cron_shared.rb +1 -0
- data/lib/chef/resource/cron/cron_d.rb +2 -3
- data/lib/chef/resource/csh.rb +2 -2
- data/lib/chef/resource/dnf_package.rb +2 -2
- data/lib/chef/resource/dsc_resource.rb +0 -1
- data/lib/chef/resource/dsc_script.rb +2 -2
- data/lib/chef/resource/execute.rb +10 -8
- data/lib/chef/resource/file.rb +4 -4
- data/lib/chef/resource/gem_package.rb +5 -5
- data/lib/chef/resource/homebrew_package.rb +3 -3
- data/lib/chef/resource/homebrew_update.rb +9 -6
- data/lib/chef/resource/hostname.rb +4 -4
- data/lib/chef/resource/ifconfig.rb +52 -5
- data/lib/chef/resource/kernel_module.rb +1 -1
- data/lib/chef/resource/ksh.rb +3 -3
- data/lib/chef/resource/launchd.rb +17 -16
- data/lib/chef/resource/locale.rb +2 -2
- data/lib/chef/resource/lwrp_base.rb +3 -5
- data/lib/chef/resource/macos_userdefaults.rb +3 -3
- data/lib/chef/resource/mount.rb +8 -2
- data/lib/chef/resource/notify_group.rb +0 -1
- data/lib/chef/resource/ohai.rb +46 -3
- data/lib/chef/resource/ohai_hint.rb +33 -0
- data/lib/chef/resource/openssl_dhparam.rb +27 -5
- data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
- data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
- data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
- data/lib/chef/resource/openssl_x509_crl.rb +19 -10
- data/lib/chef/resource/openssl_x509_request.rb +14 -16
- data/lib/chef/resource/osx_profile.rb +77 -13
- data/lib/chef/resource/perl.rb +2 -2
- data/lib/chef/resource/plist.rb +3 -7
- data/lib/chef/resource/powershell_package_source.rb +24 -23
- data/lib/chef/resource/powershell_script.rb +14 -11
- data/lib/chef/resource/python.rb +2 -2
- data/lib/chef/resource/reboot.rb +2 -2
- data/lib/chef/resource/registry_key.rb +93 -2
- data/lib/chef/resource/remote_file.rb +3 -3
- data/lib/chef/resource/rhsm_register.rb +22 -10
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/ruby.rb +2 -2
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/scm/_scm.rb +2 -1
- data/lib/chef/resource/scm/git.rb +82 -1
- data/lib/chef/resource/scm/subversion.rb +14 -2
- data/lib/chef/resource/script.rb +2 -2
- data/lib/chef/resource/service.rb +3 -3
- data/lib/chef/resource/solaris_package.rb +0 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
- data/lib/chef/resource/sudo.rb +1 -1
- data/lib/chef/resource/support/client.erb +64 -0
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -1
- data/lib/chef/resource/support/ulimit.erb +1 -1
- data/lib/chef/resource/sysctl.rb +1 -5
- data/lib/chef/resource/systemd_unit.rb +44 -3
- data/lib/chef/resource/template.rb +2 -2
- data/lib/chef/resource/timezone.rb +112 -73
- data/lib/chef/resource/windows_ad_join.rb +19 -12
- data/lib/chef/resource/windows_audit_policy.rb +26 -24
- data/lib/chef/resource/windows_certificate.rb +12 -10
- data/lib/chef/resource/windows_dfs_server.rb +7 -4
- data/lib/chef/resource/windows_env.rb +173 -0
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_firewall_profile.rb +28 -31
- data/lib/chef/resource/windows_firewall_rule.rb +9 -11
- data/lib/chef/resource/windows_font.rb +1 -1
- data/lib/chef/resource/windows_package.rb +29 -5
- data/lib/chef/resource/windows_path.rb +38 -0
- data/lib/chef/resource/windows_printer.rb +5 -3
- data/lib/chef/resource/windows_printer_port.rb +6 -4
- data/lib/chef/resource/windows_security_policy.rb +5 -5
- data/lib/chef/resource/windows_service.rb +108 -0
- data/lib/chef/resource/windows_share.rb +18 -18
- data/lib/chef/resource/windows_task.rb +629 -28
- data/lib/chef/resource/windows_user_privilege.rb +53 -54
- data/lib/chef/resource/windows_workgroup.rb +9 -7
- data/lib/chef/resource/yum_package.rb +2 -2
- data/lib/chef/resource/yum_repository.rb +1 -1
- data/lib/chef/resource_collection/resource_set.rb +1 -5
- data/lib/chef/resource_inspector.rb +77 -75
- data/lib/chef/resource_reporter.rb +0 -2
- data/lib/chef/resources.rb +4 -1
- data/lib/chef/run_context.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/run_lock.rb +3 -3
- data/lib/chef/search/query.rb +6 -5
- data/lib/chef/server_api.rb +0 -4
- data/lib/chef/shell.rb +31 -26
- data/lib/chef/shell/ext.rb +12 -12
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/train_transport.rb +5 -104
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +3 -3
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -3
- data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
- data/lib/chef/util/powershell/cmdlet.rb +6 -10
- data/lib/chef/util/powershell/ps_credential.rb +18 -14
- data/lib/chef/util/threaded_job_queue.rb +0 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/crypto.rb +1 -1
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/registry.rb +1 -2
- data/lib/chef/win32/security/sid.rb +1 -1
- data/lib/chef/win32/unicode.rb +1 -1
- data/spec/data/shef-config.rb +1 -1
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
- data/spec/functional/mixin/powershell_out_spec.rb +11 -3
- data/spec/functional/resource/aix_service_spec.rb +2 -2
- data/spec/functional/resource/aixinit_service_spec.rb +1 -1
- data/spec/functional/resource/apt_package_spec.rb +4 -6
- data/spec/functional/resource/chocolatey_package_spec.rb +3 -3
- data/spec/functional/resource/cron_spec.rb +3 -3
- data/spec/functional/resource/dsc_script_spec.rb +3 -3
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/mount_spec.rb +10 -2
- data/spec/functional/resource/powershell_package_source_spec.rb +107 -0
- data/spec/functional/resource/powershell_script_spec.rb +57 -14
- 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_certificate_spec.rb +10 -6
- data/spec/functional/resource/windows_firewall_rule_spec.rb +93 -0
- data/spec/functional/resource/windows_package_spec.rb +36 -10
- data/spec/functional/resource/windows_share_spec.rb +103 -0
- data/spec/functional/resource/windows_task_spec.rb +15 -16
- data/spec/functional/resource/zypper_package_spec.rb +11 -0
- data/spec/functional/version_spec.rb +3 -3
- data/spec/integration/client/client_spec.rb +4 -4
- data/spec/integration/client/exit_code_spec.rb +3 -2
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/client_key_create_spec.rb +1 -1
- data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
- data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
- data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
- data/spec/integration/knife/node_create_spec.rb +1 -1
- data/spec/integration/knife/node_environment_set_spec.rb +1 -1
- data/spec/integration/knife/node_run_list_add_spec.rb +4 -4
- data/spec/integration/knife/node_run_list_remove_spec.rb +1 -1
- data/spec/integration/knife/node_run_list_set_spec.rb +1 -1
- data/spec/integration/knife/node_show_spec.rb +1 -1
- data/spec/integration/ohai/ohai_spec.rb +61 -0
- data/spec/integration/recipes/notifies_spec.rb +1 -1
- data/spec/integration/recipes/provider_choice.rb +2 -2
- data/spec/integration/recipes/remote_directory.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +5 -5
- data/spec/spec_helper.rb +8 -6
- data/spec/stress/win32/file_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/lib/chef/resource/cat.rb +1 -1
- data/spec/support/lib/chef/resource/one_two_three_four.rb +1 -1
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/mock/platform.rb +24 -16
- data/spec/support/platform_helpers.rb +27 -38
- data/spec/support/shared/functional/securable_resource.rb +108 -27
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/unit/application_dot_d.rb +5 -3
- data/spec/support/shared/unit/knife_shared.rb +1 -1
- data/spec/support/shared/unit/script_resource.rb +4 -4
- data/spec/support/shared/unit/windows_script_resource.rb +1 -1
- data/spec/tiny_server.rb +0 -1
- data/spec/unit/application/client_spec.rb +2 -2
- data/spec/unit/application/exit_code_spec.rb +10 -0
- data/spec/unit/application_spec.rb +4 -6
- data/spec/unit/chef_fs/config_spec.rb +1 -1
- data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
- data/spec/unit/chef_fs/path_util_spec.rb +1 -1
- data/spec/unit/client_spec.rb +16 -0
- data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
- data/spec/unit/cookbook_spec.rb +2 -2
- data/spec/unit/data_collector/config_validation_spec.rb +208 -0
- data/spec/unit/data_collector_spec.rb +0 -117
- data/spec/unit/dsl/declare_resource_spec.rb +1 -1
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +11 -11
- data/spec/unit/knife/bootstrap_spec.rb +6 -6
- data/spec/unit/knife/client_create_spec.rb +2 -2
- data/spec/unit/knife/configure_client_spec.rb +5 -5
- data/spec/unit/knife/configure_spec.rb +3 -3
- data/spec/unit/knife/cookbook_delete_spec.rb +2 -2
- data/spec/unit/knife/cookbook_download_spec.rb +2 -2
- data/spec/unit/knife/cookbook_list_spec.rb +2 -2
- data/spec/unit/knife/cookbook_metadata_spec.rb +3 -3
- data/spec/unit/knife/core/ui_spec.rb +1 -0
- data/spec/unit/knife/environment_compare_spec.rb +3 -3
- data/spec/unit/knife/ssh_spec.rb +2 -2
- data/spec/unit/knife/supermarket_download_spec.rb +8 -8
- data/spec/unit/knife/supermarket_list_spec.rb +3 -3
- data/spec/unit/knife/supermarket_search_spec.rb +1 -1
- data/spec/unit/knife/tag_create_spec.rb +1 -1
- data/spec/unit/knife/tag_delete_spec.rb +1 -1
- data/spec/unit/knife/user_create_spec.rb +1 -1
- data/spec/unit/lwrp_spec.rb +3 -3
- data/spec/unit/mixin/deep_merge_spec.rb +15 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
- data/spec/unit/mixin/powershell_exec_spec.rb +39 -2
- data/spec/unit/mixin/powershell_out_spec.rb +14 -0
- data/spec/unit/mixin/securable_spec.rb +2 -2
- data/spec/unit/mixin/which.rb +1 -1
- data/spec/unit/node/immutable_collections_spec.rb +2 -2
- data/spec/unit/provider/group/windows_spec.rb +6 -0
- data/spec/unit/provider/group_spec.rb +1 -1
- data/spec/unit/provider/mount/linux_spec.rb +107 -0
- data/spec/unit/provider/mount/mount_spec.rb +21 -10
- data/spec/unit/provider/mount/solaris_spec.rb +1 -1
- data/spec/unit/provider/mount_spec.rb +31 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +2 -3
- data/spec/unit/provider/package/powershell_spec.rb +88 -96
- data/spec/unit/provider/package/rubygems_spec.rb +4 -1
- data/spec/unit/provider/package/zypper_spec.rb +0 -25
- data/spec/unit/provider/package_spec.rb +2 -2
- data/spec/unit/provider/powershell_script_spec.rb +11 -0
- data/spec/unit/provider/route_spec.rb +0 -2
- data/spec/unit/provider/subversion_spec.rb +0 -3
- data/spec/unit/provider/user_spec.rb +7 -1
- data/spec/unit/provider/windows_env_spec.rb +18 -34
- data/spec/unit/provider/windows_path_spec.rb +6 -11
- data/spec/unit/provider/windows_task_spec.rb +7 -6
- data/spec/unit/recipe_spec.rb +1 -1
- data/spec/unit/resource/breakpoint_spec.rb +1 -1
- data/spec/unit/resource/build_essential_spec.rb +0 -12
- data/spec/unit/resource/chef_client_config_spec.rb +137 -0
- data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
- data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
- data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
- data/spec/unit/resource/ifconfig_spec.rb +2 -10
- data/spec/unit/resource/launchd_spec.rb +8 -0
- data/spec/unit/resource/mount_spec.rb +18 -5
- data/spec/unit/resource/osx_profile_spec.rb +67 -1
- data/spec/unit/resource/powershell_package_source_spec.rb +20 -20
- data/spec/unit/resource/powershell_script_spec.rb +4 -74
- data/spec/unit/resource/rhsm_register_spec.rb +56 -18
- data/spec/unit/resource/service_spec.rb +2 -2
- data/spec/unit/resource/solaris_package_spec.rb +8 -10
- data/spec/unit/resource/timezone_spec.rb +63 -0
- data/spec/unit/resource/windows_uac_spec.rb +1 -1
- data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
- data/spec/unit/resource_inspector_spec.rb +3 -3
- data/spec/unit/run_lock_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +1 -2
- data/spec/unit/shell/shell_ext_spec.rb +46 -3
- data/spec/unit/shell/shell_session_spec.rb +35 -64
- data/spec/unit/shell_spec.rb +18 -21
- data/spec/unit/train_transport_spec.rb +14 -13
- data/spec/unit/util/selinux_spec.rb +2 -0
- data/tasks/rspec.rb +1 -3
- metadata +49 -27
- data/lib/chef/dist.rb +0 -68
- data/lib/chef/monkey_patches/net_http.rb +0 -22
- data/lib/chef/provider/windows_env.rb +0 -210
- data/lib/chef/provider/windows_path.rb +0 -61
- data/lib/chef/provider/windows_task.rb +0 -632
- data/spec/integration/knife/config_get_profile_spec.rb +0 -114
- data/spec/support/mock/constant.rb +0 -52
- data/spec/unit/monkey_patches/uri_spec.rb +0 -34
- data/spec/unit/provider_resolver_spec.rb +0 -885
- data/spec/unit/resource/data/InstallHistory_with_CLT.plist +0 -92
- data/spec/unit/resource/data/InstallHistory_without_CLT.plist +0 -38
@@ -31,15 +31,24 @@ class Chef
|
|
31
31
|
description "Use the **openssl_x509_crl** resource to generate PEM-formatted x509 certificate revocation list (CRL) files."
|
32
32
|
introduced "14.4"
|
33
33
|
examples <<~DOC
|
34
|
-
|
34
|
+
**Create a certificate revocation file**
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
36
|
+
```ruby
|
37
|
+
openssl_x509_crl '/etc/ssl_test/my_ca.crl' do
|
38
|
+
ca_cert_file '/etc/ssl_test/my_ca.crt'
|
39
|
+
ca_key_file '/etc/ssl_test/my_ca.key'
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
**Create a certificate revocation file for a particular serial**
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
openssl_x509_crl '/etc/ssl_test/my_ca.crl' do
|
47
|
+
ca_cert_file '/etc/ssl_test/my_ca.crt'
|
48
|
+
ca_key_file '/etc/ssl_test/my_ca.key'
|
49
|
+
serial_to_revoke C7BCB6602A2E4251EF4E2827A228CB52BC0CEA2F
|
50
|
+
end
|
51
|
+
```
|
43
52
|
DOC
|
44
53
|
|
45
54
|
property :path, String,
|
@@ -62,11 +71,11 @@ class Chef
|
|
62
71
|
default: 1
|
63
72
|
|
64
73
|
property :ca_cert_file, String,
|
65
|
-
description: "The path to the CA X509 Certificate on the filesystem. If the ca_cert_file property is specified, the ca_key_file property must also be specified, the CRL will be signed with them.",
|
74
|
+
description: "The path to the CA X509 Certificate on the filesystem. If the `ca_cert_file` property is specified, the `ca_key_file` property must also be specified, the CRL will be signed with them.",
|
66
75
|
required: true
|
67
76
|
|
68
77
|
property :ca_key_file, String,
|
69
|
-
description: "The path to the CA private key on the filesystem. If the ca_key_file property is specified, the ca_cert_file property must also be specified, the CRL will be signed with them.",
|
78
|
+
description: "The path to the CA private key on the filesystem. If the `ca_key_file` property is specified, the `ca_cert_file` property must also be specified, the CRL will be signed with them.",
|
70
79
|
required: true
|
71
80
|
|
72
81
|
property :ca_key_pass, String,
|
@@ -31,7 +31,7 @@ class Chef
|
|
31
31
|
description "Use the **openssl_x509_request** resource to generate PEM-formatted x509 certificates requests. If no existing key is specified, the resource will automatically generate a passwordless key with the certificate."
|
32
32
|
introduced "14.4"
|
33
33
|
examples <<~DOC
|
34
|
-
Generate new
|
34
|
+
**Generate new EC key and CSR file**
|
35
35
|
|
36
36
|
```ruby
|
37
37
|
openssl_x509_request '/etc/ssl_files/my_ec_request.csr' do
|
@@ -42,7 +42,7 @@ class Chef
|
|
42
42
|
end
|
43
43
|
```
|
44
44
|
|
45
|
-
Generate a new
|
45
|
+
**Generate a new CSR file from an existing EC key**
|
46
46
|
|
47
47
|
```ruby
|
48
48
|
openssl_x509_request '/etc/ssl_files/my_ec_request2.csr' do
|
@@ -54,7 +54,7 @@ class Chef
|
|
54
54
|
end
|
55
55
|
```
|
56
56
|
|
57
|
-
Generate new
|
57
|
+
**Generate new RSA key and CSR file**
|
58
58
|
|
59
59
|
```ruby
|
60
60
|
openssl_x509_request '/etc/ssl_files/my_rsa_request.csr' do
|
@@ -80,46 +80,44 @@ class Chef
|
|
80
80
|
description: "The permission mode applied to all files created by the resource."
|
81
81
|
|
82
82
|
property :country, String,
|
83
|
-
description: "Value for the C certificate field."
|
83
|
+
description: "Value for the `C` certificate field."
|
84
84
|
|
85
85
|
property :state, String,
|
86
|
-
description: "Value for the ST certificate field."
|
86
|
+
description: "Value for the `ST` certificate field."
|
87
87
|
|
88
88
|
property :city, String,
|
89
|
-
description: "Value for the L certificate field."
|
89
|
+
description: "Value for the `L` certificate field."
|
90
90
|
|
91
91
|
property :org, String,
|
92
|
-
description: "Value for the O certificate field."
|
92
|
+
description: "Value for the `O` certificate field."
|
93
93
|
|
94
94
|
property :org_unit, String,
|
95
|
-
description: "Value for the OU certificate field."
|
95
|
+
description: "Value for the `OU` certificate field."
|
96
96
|
|
97
97
|
property :common_name, String,
|
98
98
|
required: true,
|
99
|
-
description: "Value for the CN certificate field."
|
99
|
+
description: "Value for the `CN` certificate field."
|
100
100
|
|
101
101
|
property :email, String,
|
102
|
-
description: "Value for the email certificate field."
|
102
|
+
description: "Value for the `email` certificate field."
|
103
103
|
|
104
104
|
property :key_file, String,
|
105
|
-
description: "The path to a certificate key file on the filesystem. If the key_file property is specified, the resource will attempt to source a key from this location. If no key file is found, the resource will generate a new key file at this location. If the key_file property is not specified, the resource will generate a key file in the same directory as the generated certificate, with the same name as the generated certificate."
|
105
|
+
description: "The path to a certificate key file on the filesystem. If the `key_file` property is specified, the resource will attempt to source a key from this location. If no key file is found, the resource will generate a new key file at this location. If the `key_file` property is not specified, the resource will generate a key file in the same directory as the generated certificate, with the same name as the generated certificate."
|
106
106
|
|
107
107
|
property :key_pass, String,
|
108
108
|
description: "The passphrase for an existing key's passphrase."
|
109
109
|
|
110
110
|
property :key_type, String,
|
111
111
|
equal_to: %w{rsa ec}, default: "ec",
|
112
|
-
description: "The desired type of the generated key
|
112
|
+
description: "The desired type of the generated key."
|
113
113
|
|
114
114
|
property :key_length, Integer,
|
115
115
|
equal_to: [1024, 2048, 4096, 8192], default: 2048,
|
116
|
-
description: "The desired bit length of the generated key (if key_type is equal to
|
116
|
+
description: "The desired bit length of the generated key (if key_type is equal to `rsa`)."
|
117
117
|
|
118
118
|
property :key_curve, String,
|
119
119
|
equal_to: %w{secp384r1 secp521r1 prime256v1}, default: "prime256v1",
|
120
|
-
description: "The desired curve of the generated key (if key_type is equal to
|
121
|
-
|
122
|
-
default_action :create
|
120
|
+
description: "The desired curve of the generated key (if key_type is equal to `ec`). Run `openssl ecparam -list_curves` to see available options."
|
123
121
|
|
124
122
|
action :create do
|
125
123
|
description "Generate a certificate request."
|
@@ -19,8 +19,8 @@
|
|
19
19
|
require_relative "../resource"
|
20
20
|
require_relative "../log"
|
21
21
|
require_relative "../resource/file"
|
22
|
-
|
23
|
-
|
22
|
+
autoload :UUIDTools, "uuidtools"
|
23
|
+
autoload :Plist, "plist"
|
24
24
|
|
25
25
|
class Chef
|
26
26
|
class Resource
|
@@ -30,8 +30,72 @@ class Chef
|
|
30
30
|
provides :osx_profile
|
31
31
|
provides :osx_config_profile
|
32
32
|
|
33
|
-
description "Use the **osx_profile** resource to manage configuration profiles (
|
33
|
+
description "Use the **osx_profile** resource to manage configuration profiles (`.mobileconfig` files) on the macOS platform. The **osx_profile** resource installs profiles by using the uuidgen library to generate a unique `ProfileUUID`, and then using the `profiles` command to install the profile on the system."
|
34
34
|
introduced "12.7"
|
35
|
+
examples <<~DOC
|
36
|
+
**Install a profile from a cookbook file**
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
osx_profile 'com.company.screensaver.mobileconfig'
|
40
|
+
```
|
41
|
+
|
42
|
+
**Install profile from a hash**
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
profile_hash = {
|
46
|
+
'PayloadIdentifier' => 'com.company.screensaver',
|
47
|
+
'PayloadRemovalDisallowed' => false,
|
48
|
+
'PayloadScope' => 'System',
|
49
|
+
'PayloadType' => 'Configuration',
|
50
|
+
'PayloadUUID' => '1781fbec-3325-565f-9022-8aa28135c3cc',
|
51
|
+
'PayloadOrganization' => 'Chef',
|
52
|
+
'PayloadVersion' => 1,
|
53
|
+
'PayloadDisplayName' => 'Screensaver Settings',
|
54
|
+
'PayloadContent'=> [
|
55
|
+
{
|
56
|
+
'PayloadType' => 'com.apple.ManagedClient.preferences',
|
57
|
+
'PayloadVersion' => 1,
|
58
|
+
'PayloadIdentifier' => 'com.company.screensaver',
|
59
|
+
'PayloadUUID' => '73fc30e0-1e57-0131-c32d-000c2944c108',
|
60
|
+
'PayloadEnabled' => true,
|
61
|
+
'PayloadDisplayName' => 'com.apple.screensaver',
|
62
|
+
'PayloadContent' => {
|
63
|
+
'com.apple.screensaver' => {
|
64
|
+
'Forced' => [
|
65
|
+
{
|
66
|
+
'mcx_preference_settings' => {
|
67
|
+
'idleTime' => 0,
|
68
|
+
}
|
69
|
+
}
|
70
|
+
]
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
74
|
+
]
|
75
|
+
}
|
76
|
+
|
77
|
+
osx_profile 'Install screensaver profile' do
|
78
|
+
profile profile_hash
|
79
|
+
end
|
80
|
+
```
|
81
|
+
|
82
|
+
**Remove profile using identifier in resource name**
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
osx_profile 'com.company.screensaver' do
|
86
|
+
action :remove
|
87
|
+
end
|
88
|
+
```
|
89
|
+
|
90
|
+
**Remove profile by identifier and user friendly resource name**
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
osx_profile 'Remove screensaver profile' do
|
94
|
+
identifier 'com.company.screensaver'
|
95
|
+
action :remove
|
96
|
+
end
|
97
|
+
```
|
98
|
+
DOC
|
35
99
|
|
36
100
|
property :profile_name, String,
|
37
101
|
description: "Use to specify the name of the profile, if different from the name of the resource block.",
|
@@ -41,7 +105,7 @@ class Chef
|
|
41
105
|
description: "Use to specify a profile. This may be the name of a profile contained in a cookbook or a Hash that contains the contents of the profile."
|
42
106
|
|
43
107
|
property :identifier, String,
|
44
|
-
description: "Use to specify the identifier for the profile, such as com.company.screensaver
|
108
|
+
description: "Use to specify the identifier for the profile, such as `com.company.screensaver`."
|
45
109
|
|
46
110
|
# this is not a property it is necessary for the tempfile this resource uses to work (FIXME: this is terrible)
|
47
111
|
#
|
@@ -80,10 +144,6 @@ class Chef
|
|
80
144
|
end
|
81
145
|
|
82
146
|
def check_resource_semantics!
|
83
|
-
if mac? && node["platform_version"] =~ ">= 11.0"
|
84
|
-
raise "The osx_profile resource is not available on macOS Big Sur or above due to Apple's removal of support for CLI profile installation"
|
85
|
-
end
|
86
|
-
|
87
147
|
if action == :remove
|
88
148
|
if new_profile_identifier
|
89
149
|
if invalid_profile_name?(new_profile_identifier)
|
@@ -97,6 +157,11 @@ class Chef
|
|
97
157
|
end
|
98
158
|
|
99
159
|
if action == :install
|
160
|
+
# we only do this check for the install action so that profiles can still be removed on macOS 11+
|
161
|
+
if mac? && node["platform_version"] =~ ">= 11.0"
|
162
|
+
raise "The osx_profile resource is not available on macOS Big Sur or above due to Apple's removal of support for CLI profile installation"
|
163
|
+
end
|
164
|
+
|
100
165
|
if new_profile_hash.is_a?(Hash) && !new_profile_hash.include?("PayloadIdentifier")
|
101
166
|
raise "The specified profile does not seem to be valid"
|
102
167
|
end
|
@@ -243,19 +308,18 @@ class Chef
|
|
243
308
|
#
|
244
309
|
|
245
310
|
def get_installed_profiles(update = nil)
|
311
|
+
logger.trace("Saving profile data to node.run_state")
|
246
312
|
if update
|
247
313
|
node.run_state[:config_profiles] = query_installed_profiles
|
248
314
|
else
|
249
315
|
node.run_state[:config_profiles] ||= query_installed_profiles
|
250
316
|
end
|
251
|
-
logger.trace("Saved profiles to run_state")
|
252
317
|
end
|
253
318
|
|
254
319
|
def query_installed_profiles
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
end
|
320
|
+
logger.trace("Running /usr/bin/profiles -P -o stdout-xml to determine profile state")
|
321
|
+
so = shell_out( "/usr/bin/profiles", "-P", "-o", "stdout-xml" )
|
322
|
+
::Plist.parse_xml(so.stdout)
|
259
323
|
end
|
260
324
|
|
261
325
|
def profile_installed?
|
data/lib/chef/resource/perl.rb
CHANGED
@@ -32,9 +32,9 @@ class Chef
|
|
32
32
|
|
33
33
|
description "Use the **perl** resource to execute scripts using the Perl interpreter."\
|
34
34
|
" This resource may also use any of the actions and properties that are"\
|
35
|
-
" available to the execute resource. Commands that are executed with this"\
|
35
|
+
" available to the **execute** resource. Commands that are executed with this"\
|
36
36
|
" resource are (by their nature) not idempotent, as they are typically"\
|
37
|
-
" unique to the environment in which they are run. Use not_if and only_if"\
|
37
|
+
" unique to the environment in which they are run. Use `not_if` and `only_if`"\
|
38
38
|
" to guard this resource for idempotence."
|
39
39
|
end
|
40
40
|
end
|
data/lib/chef/resource/plist.rb
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
require_relative "../resource"
|
19
|
-
|
19
|
+
autoload :Plist, "plist"
|
20
20
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
@@ -151,9 +151,7 @@ class Chef
|
|
151
151
|
value.to_i
|
152
152
|
when "float"
|
153
153
|
value.to_f
|
154
|
-
when "string"
|
155
|
-
value
|
156
|
-
when "dictionary"
|
154
|
+
when "string", "dictionary"
|
157
155
|
value
|
158
156
|
when nil
|
159
157
|
""
|
@@ -168,9 +166,7 @@ class Chef
|
|
168
166
|
"array"
|
169
167
|
when Integer
|
170
168
|
"integer"
|
171
|
-
when FalseClass
|
172
|
-
"bool"
|
173
|
-
when TrueClass
|
169
|
+
when FalseClass, TrueClass
|
174
170
|
"bool"
|
175
171
|
when Hash
|
176
172
|
"dict"
|
@@ -16,7 +16,6 @@
|
|
16
16
|
#
|
17
17
|
|
18
18
|
require_relative "../resource"
|
19
|
-
require_relative "../json_compat"
|
20
19
|
|
21
20
|
class Chef
|
22
21
|
class Resource
|
@@ -33,7 +32,7 @@ class Chef
|
|
33
32
|
name_property: true
|
34
33
|
|
35
34
|
property :url, String,
|
36
|
-
description: "The
|
35
|
+
description: "The URL to the package source.",
|
37
36
|
required: [:register]
|
38
37
|
|
39
38
|
property :trusted, [TrueClass, FalseClass],
|
@@ -43,25 +42,25 @@ class Chef
|
|
43
42
|
property :provider_name, String,
|
44
43
|
equal_to: %w{ Programs msi NuGet msu PowerShellGet psl chocolatey },
|
45
44
|
validation_message: "The following providers are supported: 'Programs', 'msi', 'NuGet', 'msu', 'PowerShellGet', 'psl' or 'chocolatey'",
|
46
|
-
description: "The package management provider for the source.
|
45
|
+
description: "The package management provider for the source.",
|
47
46
|
default: "NuGet"
|
48
47
|
|
49
48
|
property :publish_location, String,
|
50
|
-
description: "The
|
49
|
+
description: "The URL where modules will be published to for this source. Only valid if the provider is `PowerShellGet`."
|
51
50
|
|
52
51
|
property :script_source_location, String,
|
53
|
-
description: "The
|
52
|
+
description: "The URL where scripts are located for this source. Only valid if the provider is `PowerShellGet`."
|
54
53
|
|
55
54
|
property :script_publish_location, String,
|
56
|
-
description: "The location where scripts will be published to for this source. Only valid if the provider is
|
55
|
+
description: "The location where scripts will be published to for this source. Only valid if the provider is `PowerShellGet`."
|
57
56
|
|
58
57
|
load_current_value do
|
59
58
|
cmd = load_resource_state_script(source_name)
|
60
|
-
repo =
|
61
|
-
if repo.
|
59
|
+
repo = powershell_exec!(cmd)
|
60
|
+
if repo.result.empty?
|
62
61
|
current_value_does_not_exist!
|
63
62
|
else
|
64
|
-
status =
|
63
|
+
status = repo.result
|
65
64
|
end
|
66
65
|
url status["url"]
|
67
66
|
trusted status["trusted"]
|
@@ -78,28 +77,28 @@ class Chef
|
|
78
77
|
if package_source_exists?
|
79
78
|
converge_if_changed :url, :trusted, :publish_location, :script_source_location, :script_publish_location do
|
80
79
|
update_cmd = build_ps_repository_command("Set", new_resource)
|
81
|
-
res =
|
82
|
-
raise "Failed to update #{new_resource.source_name}: #{res.
|
80
|
+
res = powershell_exec(update_cmd)
|
81
|
+
raise "Failed to update #{new_resource.source_name}: #{res.errors}" if res.error?
|
83
82
|
end
|
84
83
|
else
|
85
84
|
converge_by("register source: #{new_resource.source_name}") do
|
86
85
|
register_cmd = build_ps_repository_command("Register", new_resource)
|
87
|
-
res =
|
88
|
-
raise "Failed to register #{new_resource.source_name}: #{res.
|
86
|
+
res = powershell_exec(register_cmd)
|
87
|
+
raise "Failed to register #{new_resource.source_name}: #{res.errors}" if res.error?
|
89
88
|
end
|
90
89
|
end
|
91
90
|
else
|
92
91
|
if package_source_exists?
|
93
92
|
converge_if_changed :url, :trusted, :provider_name do
|
94
93
|
update_cmd = build_package_source_command("Set", new_resource)
|
95
|
-
res =
|
96
|
-
raise "Failed to update #{new_resource.source_name}: #{res.
|
94
|
+
res = powershell_exec(update_cmd)
|
95
|
+
raise "Failed to update #{new_resource.source_name}: #{res.errors}" if res.error?
|
97
96
|
end
|
98
97
|
else
|
99
98
|
converge_by("register source: #{new_resource.source_name}") do
|
100
99
|
register_cmd = build_package_source_command("Register", new_resource)
|
101
|
-
res =
|
102
|
-
raise "Failed to register #{new_resource.source_name}: #{res.
|
100
|
+
res = powershell_exec(register_cmd)
|
101
|
+
raise "Failed to register #{new_resource.source_name}: #{res.errors}" if res.error?
|
103
102
|
end
|
104
103
|
end
|
105
104
|
end
|
@@ -110,16 +109,16 @@ class Chef
|
|
110
109
|
if package_source_exists?
|
111
110
|
unregister_cmd = "Get-PackageSource -Name '#{new_resource.source_name}' | Unregister-PackageSource"
|
112
111
|
converge_by("unregister source: #{new_resource.source_name}") do
|
113
|
-
res =
|
114
|
-
raise "Failed to unregister #{new_resource.source_name}: #{res.
|
112
|
+
res = powershell_exec(unregister_cmd)
|
113
|
+
raise "Failed to unregister #{new_resource.source_name}: #{res.errors}" if res.error?
|
115
114
|
end
|
116
115
|
end
|
117
116
|
end
|
118
117
|
|
119
118
|
action_class do
|
120
119
|
def package_source_exists?
|
121
|
-
cmd =
|
122
|
-
cmd.
|
120
|
+
cmd = powershell_exec!("(Get-PackageSource -Name '#{new_resource.source_name}' -ErrorAction SilentlyContinue).Name")
|
121
|
+
!cmd.result.empty? && cmd.result.to_s.downcase.strip == new_resource.source_name.downcase
|
123
122
|
end
|
124
123
|
|
125
124
|
def psrepository_cmdlet_appropriate?
|
@@ -133,6 +132,7 @@ class Chef
|
|
133
132
|
cmd << " -PublishLocation '#{new_resource.publish_location}'" if new_resource.publish_location
|
134
133
|
cmd << " -ScriptSourceLocation '#{new_resource.script_source_location}'" if new_resource.script_source_location
|
135
134
|
cmd << " -ScriptPublishLocation '#{new_resource.script_publish_location}'" if new_resource.script_publish_location
|
135
|
+
cmd << " | Out-Null"
|
136
136
|
cmd
|
137
137
|
end
|
138
138
|
|
@@ -141,6 +141,7 @@ class Chef
|
|
141
141
|
cmd << " -Location '#{new_resource.url}'" if new_resource.url
|
142
142
|
cmd << " -Trusted:#{new_resource.trusted ? "$true" : "$false"}"
|
143
143
|
cmd << " -ProviderName '#{new_resource.provider_name}'" if new_resource.provider_name
|
144
|
+
cmd << " | Out-Null"
|
144
145
|
cmd
|
145
146
|
end
|
146
147
|
end
|
@@ -157,11 +158,11 @@ class Chef
|
|
157
158
|
if ((Get-PackageSource -Name '#{name}').ProviderName -eq 'PowerShellGet') {
|
158
159
|
(Get-PSRepository -Name '#{name}') | Select @{n='source_name';e={$_.Name}}, @{n='url';e={$_.SourceLocation}},
|
159
160
|
@{n='trusted';e={$_.Trusted}}, @{n='provider_name';e={$_.PackageManagementProvider}}, @{n='publish_location';e={$_.PublishLocation}},
|
160
|
-
@{n='script_source_location';e={$_.ScriptSourceLocation}}, @{n='script_publish_location';e={$_.ScriptPublishLocation}}
|
161
|
+
@{n='script_source_location';e={$_.ScriptSourceLocation}}, @{n='script_publish_location';e={$_.ScriptPublishLocation}}
|
161
162
|
}
|
162
163
|
else {
|
163
164
|
(Get-PackageSource -Name '#{name}') | Select @{n='source_name';e={$_.Name}}, @{n='url';e={$_.Location}},
|
164
|
-
@{n='provider_name';e={$_.ProviderName}}, @{n='trusted';e={$_.IsTrusted}}
|
165
|
+
@{n='provider_name';e={$_.ProviderName}}, @{n='trusted';e={$_.IsTrusted}}
|
165
166
|
}
|
166
167
|
}
|
167
168
|
EOH
|
@@ -22,11 +22,24 @@ class Chef
|
|
22
22
|
class PowershellScript < Chef::Resource::WindowsScript
|
23
23
|
unified_mode true
|
24
24
|
|
25
|
+
set_guard_inherited_attributes(:interpreter)
|
26
|
+
|
25
27
|
provides :powershell_script, os: "windows"
|
26
28
|
|
29
|
+
description <<~DESC
|
30
|
+
Use the **powershell_script** resource to execute a script using the Windows PowerShell interpreter, much like how the script and script-based resources **bash**, **csh**, **perl**, **python**, and **ruby** are used. The **powershell_script** resource is specific to the Microsoft Windows platform, but may use both the the Windows PowerShell interpreter or the PowerShell Core (pwsh) interpreter as of Chef Infra Client 16.6 and later.
|
31
|
+
|
32
|
+
The **powershell_script** resource creates and executes a temporary file rather than running the command inline. Commands that are executed with this resource are (by their nature) not idempotent, as they are typically unique to the environment in which they are run. Use `not_if` and `only_if` conditionals to guard this resource for idempotence.
|
33
|
+
DESC
|
34
|
+
|
27
35
|
property :flags, String,
|
28
36
|
description: "A string that is passed to the Windows PowerShell command"
|
29
37
|
|
38
|
+
property :interpreter, String,
|
39
|
+
default: "powershell",
|
40
|
+
equal_to: %w{powershell pwsh},
|
41
|
+
description: "The interpreter type, `powershell` or `pwsh` (PowerShell Core)"
|
42
|
+
|
30
43
|
property :convert_boolean_return, [true, false],
|
31
44
|
default: false,
|
32
45
|
description: <<~DESC
|
@@ -51,18 +64,8 @@ class Chef
|
|
51
64
|
```
|
52
65
|
DESC
|
53
66
|
|
54
|
-
description "Use the **powershell_script** resource to execute a script using the Windows PowerShell"\
|
55
|
-
" interpreter, much like how the script and script-based resources—bash, csh, perl, python,"\
|
56
|
-
" and ruby—are used. The powershell_script is specific to the Microsoft Windows platform"\
|
57
|
-
" and the Windows PowerShell interpreter.\n\n The powershell_script resource creates and"\
|
58
|
-
" executes a temporary file (similar to how the script resource behaves), rather than running"\
|
59
|
-
" the command inline. Commands that are executed with this resource are (by their nature) not"\
|
60
|
-
" idempotent, as they are typically unique to the environment in which they are run. Use not_if"\
|
61
|
-
" and only_if to guard this resource for idempotence."
|
62
|
-
|
63
67
|
def initialize(*args)
|
64
68
|
super
|
65
|
-
@interpreter = "powershell.exe"
|
66
69
|
@default_guard_interpreter = resource_name
|
67
70
|
end
|
68
71
|
|
@@ -73,7 +76,7 @@ class Chef
|
|
73
76
|
# default for this resource, this method can be removed since
|
74
77
|
# guard context and recipe resource context will have the
|
75
78
|
# same behavior.
|
76
|
-
def self.get_default_attributes
|
79
|
+
def self.get_default_attributes
|
77
80
|
{ convert_boolean_return: true }
|
78
81
|
end
|
79
82
|
end
|