chef 15.17.4-universal-mingw32 → 16.0.257-universal-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +14 -20
- data/README.md +6 -6
- data/Rakefile +18 -23
- data/chef-universal-mingw32.gemspec +4 -4
- data/chef.gemspec +10 -26
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/action_collection.rb +16 -5
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +33 -54
- data/lib/chef/application/apply.rb +20 -3
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/exit_code.rb +2 -2
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
- 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/chef_server/rest_list_entry.rb +6 -2
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +0 -1
- 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 +5 -5
- 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/path_utils.rb +3 -3
- data/lib/chef/client.rb +16 -14
- data/lib/chef/config.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +45 -22
- data/lib/chef/cookbook_version.rb +40 -5
- data/lib/chef/data_bag.rb +2 -2
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/deprecated.rb +1 -9
- data/lib/chef/dist.rb +8 -0
- data/lib/chef/dsl/chef_vault.rb +84 -0
- data/lib/chef/dsl/declare_resource.rb +7 -5
- data/lib/chef/dsl/platform_introspection.rb +2 -3
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/environment.rb +2 -2
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +0 -3
- data/lib/chef/formatters/doc.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/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -2
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/knife.rb +1 -3
- data/lib/chef/knife/acl_add.rb +57 -0
- data/lib/chef/knife/acl_base.rb +183 -0
- data/lib/chef/knife/acl_bulk_add.rb +78 -0
- data/lib/chef/knife/acl_bulk_remove.rb +83 -0
- data/lib/chef/knife/acl_remove.rb +62 -0
- data/lib/chef/knife/acl_show.rb +56 -0
- data/lib/chef/knife/bootstrap.rb +93 -97
- 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 +20 -20
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +13 -15
- data/lib/chef/knife/bootstrap/train_connector.rb +0 -1
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +2 -3
- data/lib/chef/knife/core/node_presenter.rb +2 -2
- data/lib/chef/knife/core/status_presenter.rb +5 -5
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +17 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +45 -58
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- data/lib/chef/knife/environment_compare.rb +1 -1
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/group_add.rb +55 -0
- data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
- data/lib/chef/knife/group_destroy.rb +53 -0
- data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
- data/lib/chef/knife/group_remove.rb +56 -0
- data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -50
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +1 -2
- data/lib/chef/knife/supermarket_list.rb +1 -2
- data/lib/chef/knife/supermarket_search.rb +1 -2
- data/lib/chef/knife/supermarket_share.rb +1 -2
- data/lib/chef/knife/supermarket_show.rb +1 -2
- data/lib/chef/knife/supermarket_unshare.rb +1 -2
- data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
- data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
- data/lib/chef/knife/user_invite_list.rb +34 -0
- data/lib/chef/knife/user_invite_recind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/create_path.rb +8 -8
- data/lib/chef/mixin/openssl_helper.rb +3 -26
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +13 -1
- data/lib/chef/mixin/shell_out.rb +0 -4
- data/lib/chef/mixin/template.rb +0 -1
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
- data/lib/chef/node/mixin/immutablize_array.rb +4 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/node_map.rb +7 -36
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +22 -4
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +2 -2
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -8
- data/lib/chef/provider/file.rb +5 -5
- data/lib/chef/provider/git.rb +84 -27
- data/lib/chef/provider/group.rb +4 -4
- data/lib/chef/provider/http_request.rb +6 -6
- data/lib/chef/provider/ifconfig.rb +4 -4
- data/lib/chef/provider/launchd.rb +36 -51
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/mount/solaris.rb +1 -0
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +3 -4
- data/lib/chef/provider/package/chocolatey.rb +1 -3
- data/lib/chef/provider/package/dnf.rb +66 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +84 -30
- data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
- data/lib/chef/provider/package/dnf/version.rb +5 -1
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -3
- data/lib/chef/provider/package/homebrew.rb +106 -42
- data/lib/chef/provider/package/msu.rb +3 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/powershell.rb +2 -6
- data/lib/chef/provider/package/rubygems.rb +29 -2
- data/lib/chef/provider/package/snap.rb +27 -96
- data/lib/chef/provider/package/windows.rb +3 -2
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +0 -8
- data/lib/chef/provider/package/yum/yum_helper.py +0 -4
- data/lib/chef/provider/package/zypper.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +4 -10
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +3 -3
- data/lib/chef/provider/remote_file/ftp.rb +3 -2
- data/lib/chef/provider/remote_file/local_file.rb +2 -1
- data/lib/chef/provider/remote_file/sftp.rb +3 -2
- data/lib/chef/provider/route.rb +5 -3
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +2 -2
- data/lib/chef/provider/service.rb +8 -8
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/arch.rb +2 -2
- data/lib/chef/provider/service/debian.rb +31 -29
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +7 -12
- data/lib/chef/provider/service/openbsd.rb +1 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +3 -3
- data/lib/chef/provider/service/systemd.rb +12 -12
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +5 -11
- data/lib/chef/provider/subversion.rb +25 -5
- data/lib/chef/provider/systemd_unit.rb +26 -25
- data/lib/chef/provider/user.rb +6 -6
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/mac.rb +10 -9
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
- data/lib/chef/provider/windows_env.rb +3 -3
- data/lib/chef/provider/windows_script.rb +2 -2
- data/lib/chef/provider/windows_task.rb +7 -9
- data/lib/chef/provider/yum_repository.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +11 -31
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +41 -56
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +149 -0
- data/lib/chef/resource/apt_package.rb +2 -1
- data/lib/chef/resource/apt_preference.rb +69 -2
- data/lib/chef/resource/apt_repository.rb +337 -5
- data/lib/chef/resource/apt_update.rb +52 -1
- data/lib/chef/resource/archive_file.rb +9 -29
- data/lib/chef/resource/bash.rb +2 -0
- data/lib/chef/resource/bff_package.rb +9 -1
- data/lib/chef/resource/breakpoint.rb +0 -1
- data/lib/chef/resource/build_essential.rb +42 -48
- data/lib/chef/resource/cab_package.rb +8 -1
- data/lib/chef/resource/chef_client_cron.rb +225 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +198 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +177 -0
- data/lib/chef/resource/chef_gem.rb +9 -16
- data/lib/chef/resource/chef_handler.rb +2 -1
- data/lib/chef/resource/chef_sleep.rb +0 -1
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +3 -1
- data/lib/chef/resource/chocolatey_feature.rb +2 -1
- data/lib/chef/resource/chocolatey_package.rb +2 -1
- data/lib/chef/resource/chocolatey_source.rb +2 -1
- data/lib/chef/resource/cookbook_file.rb +1 -1
- data/lib/chef/resource/cron.rb +22 -68
- data/lib/chef/resource/cron_access.rb +8 -15
- data/lib/chef/resource/cron_d.rb +9 -75
- data/lib/chef/resource/csh.rb +2 -0
- data/lib/chef/resource/directory.rb +2 -2
- data/lib/chef/resource/dmg_package.rb +4 -4
- data/lib/chef/resource/dnf_package.rb +2 -3
- data/lib/chef/resource/dpkg_package.rb +2 -1
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +13 -12
- data/lib/chef/resource/file.rb +3 -1
- data/lib/chef/resource/freebsd_package.rb +2 -1
- data/lib/chef/resource/gem_package.rb +14 -6
- data/lib/chef/resource/group.rb +4 -1
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +5 -4
- data/lib/chef/resource/homebrew_package.rb +4 -2
- data/lib/chef/resource/homebrew_tap.rb +2 -1
- data/lib/chef/resource/hostname.rb +41 -36
- data/lib/chef/resource/http_request.rb +0 -1
- data/lib/chef/resource/ifconfig.rb +1 -1
- data/lib/chef/resource/ips_package.rb +10 -2
- data/lib/chef/resource/kernel_module.rb +29 -29
- data/lib/chef/resource/ksh.rb +2 -0
- data/lib/chef/resource/launchd.rb +6 -6
- data/lib/chef/resource/link.rb +1 -23
- data/lib/chef/resource/locale.rb +58 -24
- data/lib/chef/resource/log.rb +12 -1
- data/lib/chef/resource/lwrp_base.rb +1 -8
- data/lib/chef/resource/macos_userdefaults.rb +9 -6
- data/lib/chef/resource/macosx_service.rb +2 -1
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +62 -2
- data/lib/chef/resource/mount.rb +3 -0
- data/lib/chef/resource/msu_package.rb +13 -1
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +19 -3
- data/lib/chef/resource/ohai_hint.rb +3 -12
- data/lib/chef/resource/openbsd_package.rb +9 -1
- data/lib/chef/resource/openssl_dhparam.rb +10 -1
- data/lib/chef/resource/openssl_ec_private_key.rb +23 -1
- data/lib/chef/resource/openssl_ec_public_key.rb +21 -1
- data/lib/chef/resource/openssl_rsa_private_key.rb +20 -1
- data/lib/chef/resource/openssl_rsa_public_key.rb +22 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +37 -1
- data/lib/chef/resource/openssl_x509_crl.rb +12 -1
- data/lib/chef/resource/openssl_x509_request.rb +37 -1
- data/lib/chef/resource/osx_profile.rb +3 -2
- data/lib/chef/resource/package.rb +2 -1
- data/lib/chef/resource/pacman_package.rb +2 -1
- data/lib/chef/resource/paludis_package.rb +12 -3
- data/lib/chef/resource/perl.rb +2 -0
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +13 -3
- data/lib/chef/resource/powershell_package.rb +1 -3
- data/lib/chef/resource/powershell_package_source.rb +3 -1
- data/lib/chef/resource/powershell_script.rb +7 -17
- data/lib/chef/resource/python.rb +2 -0
- data/lib/chef/resource/reboot.rb +0 -1
- data/lib/chef/resource/registry_key.rb +1 -2
- data/lib/chef/resource/remote_directory.rb +2 -0
- data/lib/chef/resource/remote_file.rb +2 -0
- data/lib/chef/resource/rhsm_errata.rb +0 -1
- data/lib/chef/resource/rhsm_errata_level.rb +0 -1
- data/lib/chef/resource/rhsm_register.rb +2 -1
- data/lib/chef/resource/rhsm_repo.rb +3 -1
- data/lib/chef/resource/rhsm_subscription.rb +4 -1
- data/lib/chef/resource/route.rb +5 -1
- data/lib/chef/resource/rpm_package.rb +9 -2
- data/lib/chef/resource/ruby.rb +2 -0
- data/lib/chef/resource/ruby_block.rb +1 -1
- data/lib/chef/resource/scm/_scm.rb +48 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +8 -5
- data/lib/chef/resource/script.rb +6 -3
- data/lib/chef/resource/service.rb +6 -7
- data/lib/chef/resource/smartos_package.rb +9 -1
- data/lib/chef/resource/snap_package.rb +3 -1
- data/lib/chef/resource/solaris_package.rb +9 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +9 -9
- 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 -2
- data/lib/chef/resource/support/ulimit.erb +41 -0
- data/lib/chef/resource/swap_file.rb +5 -3
- data/lib/chef/resource/sysctl.rb +2 -2
- data/lib/chef/resource/systemd_unit.rb +4 -2
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +7 -18
- data/lib/chef/resource/user.rb +1 -3
- data/lib/chef/resource/user/aix_user.rb +0 -2
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +0 -2
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user/pw_user.rb +0 -2
- data/lib/chef/resource/user/solaris_user.rb +0 -2
- data/lib/chef/resource/user/windows_user.rb +0 -2
- data/lib/chef/resource/user_ulimit.rb +114 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +19 -6
- data/lib/chef/resource/windows_auto_run.rb +0 -1
- data/lib/chef/resource/windows_certificate.rb +1 -1
- data/lib/chef/resource/windows_dfs_folder.rb +0 -1
- data/lib/chef/resource/windows_dfs_namespace.rb +0 -1
- data/lib/chef/resource/windows_dfs_server.rb +0 -1
- data/lib/chef/resource/windows_dns_record.rb +0 -1
- data/lib/chef/resource/windows_dns_zone.rb +0 -1
- data/lib/chef/resource/windows_env.rb +2 -3
- data/lib/chef/resource/windows_feature.rb +2 -2
- data/lib/chef/resource/windows_feature_dism.rb +9 -22
- data/lib/chef/resource/windows_feature_powershell.rb +17 -82
- data/lib/chef/resource/windows_firewall_rule.rb +119 -10
- data/lib/chef/resource/windows_font.rb +1 -3
- data/lib/chef/resource/windows_package.rb +13 -4
- data/lib/chef/resource/windows_pagefile.rb +0 -1
- data/lib/chef/resource/windows_path.rb +0 -1
- data/lib/chef/resource/windows_printer.rb +0 -1
- data/lib/chef/resource/windows_printer_port.rb +0 -1
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +90 -0
- data/lib/chef/resource/windows_service.rb +45 -31
- data/lib/chef/resource/windows_share.rb +3 -7
- data/lib/chef/resource/windows_shortcut.rb +0 -1
- data/lib/chef/resource/windows_task.rb +14 -15
- data/lib/chef/resource/windows_uac.rb +0 -1
- data/lib/chef/resource/windows_user_privilege.rb +157 -0
- data/lib/chef/resource/windows_workgroup.rb +0 -1
- data/lib/chef/resource/yum_package.rb +3 -1
- data/lib/chef/resource/yum_repository.rb +2 -1
- data/lib/chef/resource/zypper_package.rb +3 -2
- data/lib/chef/resource/zypper_repository.rb +2 -1
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +6 -6
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/role.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/shell.rb +23 -32
- data/lib/chef/shell/shell_session.rb +0 -2
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/configuration_generator.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
- data/lib/chef/util/powershell/cmdlet.rb +1 -1
- data/lib/chef/version.rb +2 -2
- data/lib/chef/version_string.rb +1 -1
- data/lib/chef/win32/api/file.rb +18 -18
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +3 -11
- data/lib/chef/win32/process.rb +2 -2
- data/lib/chef/win32/security.rb +40 -2
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +27 -23
- data/spec/functional/resource/aix_service_spec.rb +1 -0
- data/spec/functional/resource/aixinit_service_spec.rb +8 -7
- data/spec/functional/resource/apt_package_spec.rb +1 -0
- data/spec/functional/resource/bff_spec.rb +2 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +11 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +6 -5
- data/spec/functional/resource/link_spec.rb +17 -17
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/rpm_spec.rb +2 -2
- data/spec/functional/resource/user/dscl_spec.rb +2 -2
- data/spec/functional/resource/user/mac_user_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +8 -8
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -2
- data/spec/functional/shell_spec.rb +6 -6
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +0 -6
- data/spec/functional/win32/security_spec.rb +22 -0
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/client/client_spec.rb +123 -2
- data/spec/integration/knife/cookbook_show_spec.rb +28 -26
- data/spec/integration/knife/data_bag_show_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +30 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/accumulator_spec.rb +1 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -5
- data/spec/integration/recipes/lwrp_spec.rb +1 -1
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +50 -21
- data/spec/integration/recipes/notifying_block_spec.rb +9 -6
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +46 -144
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -3
- data/spec/integration/recipes/resource_load_spec.rb +133 -13
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/scripts/ssl-serve.rb +1 -1
- data/spec/spec_helper.rb +11 -14
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
- data/spec/support/platform_helpers.rb +44 -19
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/recipe_dsl_helper.rb +83 -0
- 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 +3 -3
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +5 -18
- data/spec/support/shared/integration/knife_support.rb +14 -8
- data/spec/unit/application/apply_spec.rb +3 -0
- data/spec/unit/application/client_spec.rb +5 -1
- data/spec/unit/application_spec.rb +1 -9
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +4 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +3 -4
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/data_collector_spec.rb +38 -17
- data/spec/unit/dsl/platform_introspection_spec.rb +0 -1
- data/spec/unit/environment_spec.rb +7 -7
- data/spec/unit/event_dispatch/dispatcher_spec.rb +0 -3
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
- data/spec/unit/knife/bootstrap_spec.rb +36 -54
- data/spec/unit/knife/cookbook_download_spec.rb +4 -4
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +6 -5
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +8 -68
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- 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/knife/ssh_spec.rb +10 -113
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife/supermarket_share_spec.rb +3 -5
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/lwrp_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/securable_spec.rb +1 -0
- data/spec/unit/mixin/user_context_spec.rb +9 -1
- data/spec/unit/node/attribute_spec.rb +2 -2
- data/spec/unit/node_spec.rb +24 -0
- data/spec/unit/platform/query_helpers_spec.rb +0 -143
- data/spec/unit/property/state_spec.rb +12 -7
- data/spec/unit/property/validation_spec.rb +25 -1
- data/spec/unit/property_spec.rb +18 -15
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +9 -11
- data/spec/unit/provider/apt_update_spec.rb +12 -11
- data/spec/unit/provider/cookbook_file_spec.rb +4 -4
- data/spec/unit/provider/cron_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +4 -15
- data/spec/unit/provider/file_spec.rb +4 -4
- data/spec/unit/provider/git_spec.rb +44 -4
- data/spec/unit/provider/link_spec.rb +0 -1
- data/spec/unit/provider/log_spec.rb +3 -3
- data/spec/unit/provider/mdadm_spec.rb +3 -3
- data/spec/unit/provider/osx_profile_spec.rb +2 -2
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +2 -2
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/msu_spec.rb +3 -3
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/powershell_spec.rb +88 -96
- data/spec/unit/provider/package/rubygems_spec.rb +221 -31
- data/spec/unit/provider/package/snap_spec.rb +1 -1
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- data/spec/unit/provider/package/windows_spec.rb +53 -30
- data/spec/unit/provider/powershell_script_spec.rb +21 -61
- data/spec/unit/provider/remote_file_spec.rb +3 -4
- data/spec/unit/provider/service/arch_service_spec.rb +2 -3
- data/spec/unit/provider/service/debian_service_spec.rb +35 -14
- data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider/service/windows_spec.rb +6 -2
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/systemd_unit_spec.rb +24 -28
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +25 -75
- data/spec/unit/provider_resolver_spec.rb +11 -11
- data/spec/unit/provider_spec.rb +0 -1
- data/spec/unit/recipe_spec.rb +68 -0
- data/spec/unit/resource/alternatives_spec.rb +120 -0
- data/spec/unit/resource/apt_preference_spec.rb +0 -18
- data/spec/unit/resource/apt_repository_spec.rb +0 -18
- data/spec/unit/resource/apt_update_spec.rb +0 -18
- data/spec/unit/resource/archive_file_spec.rb +2 -11
- data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
- data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
- data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
- data/spec/unit/resource/cron_d_spec.rb +6 -48
- data/spec/unit/resource/cron_spec.rb +4 -10
- data/spec/unit/resource/gem_package_spec.rb +3 -3
- data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
- data/spec/unit/resource/link_spec.rb +0 -4
- data/spec/unit/resource/locale_spec.rb +0 -34
- data/spec/unit/resource/ohai_spec.rb +56 -2
- data/spec/unit/resource/plist_spec.rb +130 -0
- data/spec/unit/resource/powershell_script_spec.rb +0 -5
- data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
- data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
- data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
- data/spec/unit/resource/service_spec.rb +4 -0
- data/spec/unit/resource/user_spec.rb +2 -2
- data/spec/unit/resource/user_ulimit_spec.rb +53 -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_feature_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +6 -47
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +4 -1
- data/spec/unit/resource/windows_service_spec.rb +9 -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_reporter_spec.rb +1 -5
- data/spec/unit/resource_spec.rb +11 -4
- data/spec/unit/role_spec.rb +11 -11
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
- data/spec/unit/run_context_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +0 -9
- data/spec/unit/win32/security_spec.rb +3 -4
- data/tasks/rspec.rb +1 -1
- metadata +116 -87
- data/lib/chef/dsl/core.rb +0 -52
- data/lib/chef/knife/cookbook_site_share.rb +0 -41
- data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
- data/lib/chef/provider/apt_preference.rb +0 -93
- data/lib/chef/provider/apt_repository.rb +0 -358
- data/lib/chef/provider/apt_update.rb +0 -79
- data/lib/chef/provider/log.rb +0 -43
- data/lib/chef/provider/mdadm.rb +0 -85
- data/lib/chef/provider/ohai.rb +0 -45
- data/lib/chef/resource/git.rb +0 -37
- data/spec/functional/resource/windows_font_spec.rb +0 -49
- data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -0,0 +1,114 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
# Copyright:: 2012, Brightcove, Inc
|
4
|
+
#
|
5
|
+
# License:: Apache License, Version 2.0
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
require_relative "../resource"
|
21
|
+
|
22
|
+
class Chef
|
23
|
+
class Resource
|
24
|
+
class UserUlimit < Chef::Resource
|
25
|
+
unified_mode true
|
26
|
+
|
27
|
+
provides :user_ulimit
|
28
|
+
|
29
|
+
introduced "16.0"
|
30
|
+
description "Use the user_ulimit resource to create individual ulimit files that are installed into the `/etc/security/limits.d/` directory."
|
31
|
+
examples <<~DOC
|
32
|
+
set filehandle limit for the tomcat user
|
33
|
+
```ruby
|
34
|
+
user_ulimit 'tomcat' do
|
35
|
+
filehandle_limit 8192
|
36
|
+
end
|
37
|
+
```
|
38
|
+
|
39
|
+
specify a username that differs from the name given to the resource block
|
40
|
+
```ruby
|
41
|
+
user_ulimit 'Bump filehandle limits for tomcat user' do
|
42
|
+
username 'tomcat'
|
43
|
+
filehandle_limit 8192
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
specify a non-default filename
|
48
|
+
set filehandle limit for the tomcat user
|
49
|
+
```ruby
|
50
|
+
user_ulimit 'tomcat' do
|
51
|
+
filehandle_limit 8192
|
52
|
+
filename 'tomcat_filehandle_limits.conf'
|
53
|
+
end
|
54
|
+
```
|
55
|
+
DOC
|
56
|
+
|
57
|
+
property :username, String, name_property: true
|
58
|
+
property :filehandle_limit, [String, Integer]
|
59
|
+
property :filehandle_soft_limit, [String, Integer]
|
60
|
+
property :filehandle_hard_limit, [String, Integer]
|
61
|
+
property :process_limit, [String, Integer]
|
62
|
+
property :process_soft_limit, [String, Integer]
|
63
|
+
property :process_hard_limit, [String, Integer]
|
64
|
+
property :memory_limit, [String, Integer]
|
65
|
+
property :core_limit, [String, Integer]
|
66
|
+
property :core_soft_limit, [String, Integer]
|
67
|
+
property :core_hard_limit, [String, Integer]
|
68
|
+
property :stack_limit, [String, Integer]
|
69
|
+
property :stack_soft_limit, [String, Integer]
|
70
|
+
property :stack_hard_limit, [String, Integer]
|
71
|
+
property :rtprio_limit, [String, Integer]
|
72
|
+
property :rtprio_soft_limit, [String, Integer]
|
73
|
+
property :rtprio_hard_limit, [String, Integer]
|
74
|
+
property :virt_limit, [String, Integer]
|
75
|
+
property :filename, String,
|
76
|
+
coerce: proc { |m| m.end_with?(".conf") ? m : m + ".conf" },
|
77
|
+
default: lazy { |r| r.username == "*" ? "00_all_limits.conf" : "#{r.username}_limits.conf" }
|
78
|
+
|
79
|
+
action :create do
|
80
|
+
template "/etc/security/limits.d/#{new_resource.filename}" do
|
81
|
+
source ::File.expand_path("../support/ulimit.erb", __FILE__)
|
82
|
+
local true
|
83
|
+
mode "0644"
|
84
|
+
variables(
|
85
|
+
ulimit_user: new_resource.username,
|
86
|
+
filehandle_limit: new_resource.filehandle_limit,
|
87
|
+
filehandle_soft_limit: new_resource.filehandle_soft_limit,
|
88
|
+
filehandle_hard_limit: new_resource.filehandle_hard_limit,
|
89
|
+
process_limit: new_resource.process_limit,
|
90
|
+
process_soft_limit: new_resource.process_soft_limit,
|
91
|
+
process_hard_limit: new_resource.process_hard_limit,
|
92
|
+
memory_limit: new_resource.memory_limit,
|
93
|
+
core_limit: new_resource.core_limit,
|
94
|
+
core_soft_limit: new_resource.core_soft_limit,
|
95
|
+
core_hard_limit: new_resource.core_hard_limit,
|
96
|
+
stack_limit: new_resource.stack_limit,
|
97
|
+
stack_soft_limit: new_resource.stack_soft_limit,
|
98
|
+
stack_hard_limit: new_resource.stack_hard_limit,
|
99
|
+
rtprio_limit: new_resource.rtprio_limit,
|
100
|
+
rtprio_soft_limit: new_resource.rtprio_soft_limit,
|
101
|
+
rtprio_hard_limit: new_resource.rtprio_hard_limit,
|
102
|
+
virt_limit: new_resource.virt_limit
|
103
|
+
)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
action :delete do
|
108
|
+
file "/etc/security/limits.d/#{new_resource.filename}" do
|
109
|
+
action :delete
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -16,17 +16,13 @@
|
|
16
16
|
#
|
17
17
|
|
18
18
|
require_relative "../resource"
|
19
|
-
require_relative "../mixin/powershell_out"
|
20
19
|
require_relative "../dist"
|
21
20
|
|
22
21
|
class Chef
|
23
22
|
class Resource
|
24
23
|
class WindowsAdJoin < Chef::Resource
|
25
|
-
resource_name :windows_ad_join
|
26
24
|
provides :windows_ad_join
|
27
25
|
|
28
|
-
include Chef::Mixin::PowershellOut
|
29
|
-
|
30
26
|
description "Use the windows_ad_join resource to join a Windows Active Directory domain."
|
31
27
|
introduced "14.0"
|
32
28
|
|
@@ -70,7 +66,7 @@ class Chef
|
|
70
66
|
|
71
67
|
unless on_desired_domain?
|
72
68
|
cmd = "$pswd = ConvertTo-SecureString \'#{new_resource.domain_password}\' -AsPlainText -Force;"
|
73
|
-
cmd << "$credential = New-Object System.Management.Automation.PSCredential (\"#{
|
69
|
+
cmd << "$credential = New-Object System.Management.Automation.PSCredential (\"#{sanitize_usename}\",$pswd);"
|
74
70
|
cmd << "Add-Computer -DomainName #{new_resource.domain_name} -Credential $credential"
|
75
71
|
cmd << " -OUPath \"#{new_resource.ou_path}\"" if new_resource.ou_path
|
76
72
|
cmd << " -NewName \"#{new_resource.new_hostname}\"" if new_resource.new_hostname
|
@@ -102,7 +98,7 @@ class Chef
|
|
102
98
|
if joined_to_domain?
|
103
99
|
cmd = ""
|
104
100
|
cmd << "$pswd = ConvertTo-SecureString \'#{new_resource.domain_password}\' -AsPlainText -Force;"
|
105
|
-
cmd << "$credential = New-Object System.Management.Automation.PSCredential (\"#{
|
101
|
+
cmd << "$credential = New-Object System.Management.Automation.PSCredential (\"#{sanitize_usename}\",$pswd);"
|
106
102
|
cmd << "Remove-Computer"
|
107
103
|
cmd << " -UnjoinDomainCredential $credential"
|
108
104
|
cmd << " -NewName \"#{new_resource.new_hostname}\"" if new_resource.new_hostname
|
@@ -169,6 +165,23 @@ class Chef
|
|
169
165
|
node_domain == new_resource.domain_name.downcase
|
170
166
|
end
|
171
167
|
|
168
|
+
#
|
169
|
+
# @return [String] the correct user and domain to use.
|
170
|
+
# if the domain_user property contains an @ symbol followed by any number of non white space characters
|
171
|
+
# then we assume it is a user from another domain than the one specified in the resource domain_name property.
|
172
|
+
# if this is the case we do not append the domain_name property to the domain_user property
|
173
|
+
# the domain_user and domain_name form the UPN (userPrincipalName)
|
174
|
+
# The specification for the UPN format is RFC 822
|
175
|
+
# links: https://docs.microsoft.com/en-us/windows/win32/ad/naming-properties#userprincipalname https://tools.ietf.org/html/rfc822
|
176
|
+
# regex: https://rubular.com/r/isAWojpTMKzlnp
|
177
|
+
def sanitize_usename
|
178
|
+
if new_resource.domain_user =~ /@/
|
179
|
+
new_resource.domain_user
|
180
|
+
else
|
181
|
+
"#{new_resource.domain_user}@#{new_resource.domain_name}"
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
172
185
|
# This resource historically took `:immediate` and `:delayed` as arguments to the reboot property but then
|
173
186
|
# tried to shove that straight to the `reboot` resource which objected strenuously
|
174
187
|
def clarify_reboot(reboot_action)
|
@@ -21,7 +21,6 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsAutorun < Chef::Resource
|
24
|
-
resource_name :windows_auto_run
|
25
24
|
provides(:windows_auto_run) { true }
|
26
25
|
|
27
26
|
description "Use the windows_auto_run resource to set applications to run at login."
|
@@ -26,7 +26,7 @@ require_relative "../dist"
|
|
26
26
|
class Chef
|
27
27
|
class Resource
|
28
28
|
class WindowsCertificate < Chef::Resource
|
29
|
-
|
29
|
+
provides :windows_certificate
|
30
30
|
|
31
31
|
description "Use the windows_certificate resource to install a certificate into the Windows certificate store from a file. The resource grants read-only access to the private key for designated accounts. Due to current limitations in WinRM, installing certificates remotely may not work if the operation requires a user profile. Operations on the local machine store should still work."
|
32
32
|
introduced "14.7"
|
@@ -21,7 +21,6 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsDfsFolder < Chef::Resource
|
24
|
-
resource_name :windows_dfs_folder
|
25
24
|
provides :windows_dfs_folder
|
26
25
|
|
27
26
|
description "The windows_dfs_folder resources creates a folder within dfs as many levels deep as required."
|
@@ -21,7 +21,6 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsDnsRecord < Chef::Resource
|
24
|
-
resource_name :windows_dns_record
|
25
24
|
provides :windows_dns_record
|
26
25
|
|
27
26
|
description "The windows_dns_record resource creates a DNS record for the given domain."
|
@@ -21,7 +21,6 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsDnsZone < Chef::Resource
|
24
|
-
resource_name :windows_dns_zone
|
25
24
|
provides :windows_dns_zone
|
26
25
|
|
27
26
|
description "The windows_dns_zone resource creates an Active Directory Integrated DNS Zone on the local server."
|
@@ -22,7 +22,6 @@ require_relative "../resource"
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
24
24
|
class WindowsEnv < Chef::Resource
|
25
|
-
resource_name :windows_env
|
26
25
|
provides :windows_env
|
27
26
|
provides :env # backwards compat with the pre-Chef 14 resource name
|
28
27
|
|
@@ -33,11 +32,11 @@ class Chef
|
|
33
32
|
|
34
33
|
property :key_name, String,
|
35
34
|
description: "An optional property to set the name of the key that is to be created, deleted, or modified if it differs from the resource block's name.",
|
36
|
-
|
35
|
+
name_property: true
|
37
36
|
|
38
37
|
property :value, String,
|
39
38
|
description: "The value of the environmental variable to set.",
|
40
|
-
required:
|
39
|
+
required: %i{create modify}
|
41
40
|
|
42
41
|
property :delim, [ String, nil, false ],
|
43
42
|
description: "The delimiter that is used to separate multiple values for a single key.",
|
@@ -21,7 +21,6 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsFeature < Chef::Resource
|
24
|
-
resource_name :windows_feature
|
25
24
|
provides(:windows_feature) { true }
|
26
25
|
|
27
26
|
description "Use the windows_feature resource to add, remove or entirely delete Windows features and roles. This resource calls the 'windows_feature_dism' or 'windows_feature_powershell' resources depending on the specified installation method, and defaults to DISM, which is available on both Workstation and Server editions of Windows."
|
@@ -49,7 +48,8 @@ class Chef
|
|
49
48
|
|
50
49
|
property :timeout, Integer,
|
51
50
|
description: "Specifies a timeout (in seconds) for the feature installation.",
|
52
|
-
default: 600
|
51
|
+
default: 600,
|
52
|
+
desired_state: false
|
53
53
|
|
54
54
|
action :install do
|
55
55
|
description "Install a Windows role/feature"
|
@@ -22,7 +22,6 @@ require_relative "../platform/query_helpers"
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
24
24
|
class WindowsFeatureDism < Chef::Resource
|
25
|
-
resource_name :windows_feature_dism
|
26
25
|
provides(:windows_feature_dism) { true }
|
27
26
|
|
28
27
|
description "Use the windows_feature_dism resource to add, remove, or entirely delete Windows features and roles using DISM."
|
@@ -42,14 +41,13 @@ class Chef
|
|
42
41
|
|
43
42
|
property :timeout, Integer,
|
44
43
|
description: "Specifies a timeout (in seconds) for the feature installation.",
|
45
|
-
default: 600
|
44
|
+
default: 600,
|
45
|
+
desired_state: false
|
46
46
|
|
47
|
-
# @return [Array] lowercase the array
|
47
|
+
# @return [Array] lowercase the array
|
48
48
|
def to_formatted_array(x)
|
49
49
|
x = x.split(/\s*,\s*/) if x.is_a?(String) # split multiple forms of a comma separated list
|
50
|
-
|
51
|
-
# feature installs on windows < 2012 are case sensitive so only downcase when on 2012+
|
52
|
-
older_than_win_2012_or_8? ? x : x.map(&:downcase)
|
50
|
+
x.map(&:downcase)
|
53
51
|
end
|
54
52
|
|
55
53
|
action :install do
|
@@ -98,8 +96,6 @@ class Chef
|
|
98
96
|
action :delete do
|
99
97
|
description "Remove a Windows role/feature from the image using DISM"
|
100
98
|
|
101
|
-
raise_if_delete_unsupported
|
102
|
-
|
103
99
|
reload_cached_dism_data unless node["dism_features_cache"]
|
104
100
|
|
105
101
|
fail_if_unavailable # fail if the features don't exist
|
@@ -193,27 +189,18 @@ class Chef
|
|
193
189
|
logger.trace("The cache contains\n#{node["dism_features_cache"]}")
|
194
190
|
end
|
195
191
|
|
196
|
-
# parse the feature string and add the values to the appropriate array
|
197
|
-
#
|
198
|
-
# strips trailing whitespace characters then split on n number of spaces
|
199
|
-
# + | + n number of spaces
|
192
|
+
# parse the feature string and add the values to the appropriate array in the strips
|
193
|
+
# trailing whitespace characters then split on n number of spaces + | + n number of spaces
|
200
194
|
# @return [void]
|
201
195
|
def add_to_feature_mash(feature_type, feature_string)
|
202
196
|
feature_details = feature_string.strip.split(/\s+[|]\s+/).first
|
203
197
|
|
204
|
-
# dism
|
205
|
-
#
|
206
|
-
|
207
|
-
feature_details.downcase! unless older_than_win_2012_or_8?
|
198
|
+
# dism isn't case sensitive so it's best to compare lowercase lists so the
|
199
|
+
# user input doesn't need to be case sensitive
|
200
|
+
feature_details.downcase!
|
208
201
|
node.override["dism_features_cache"][feature_type] << feature_details
|
209
202
|
end
|
210
203
|
|
211
|
-
# Fail unless we're on windows 8+ / 2012+ where deleting a feature is supported
|
212
|
-
# @return [void]
|
213
|
-
def raise_if_delete_unsupported
|
214
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self} :delete action not supported on Windows releases before Windows 8/2012. Cannot continue!" if older_than_win_2012_or_8?
|
215
|
-
end
|
216
|
-
|
217
204
|
def required_parent_feature?(error_message)
|
218
205
|
error_message.include?("Error: 50") && error_message.include?("required parent feature")
|
219
206
|
end
|
@@ -16,7 +16,6 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require_relative "../mixin/powershell_out"
|
20
19
|
require_relative "../json_compat"
|
21
20
|
require_relative "../resource"
|
22
21
|
require_relative "../platform/query_helpers"
|
@@ -24,7 +23,6 @@ require_relative "../platform/query_helpers"
|
|
24
23
|
class Chef
|
25
24
|
class Resource
|
26
25
|
class WindowsFeaturePowershell < Chef::Resource
|
27
|
-
resource_name :windows_feature_powershell
|
28
26
|
provides(:windows_feature_powershell) { true }
|
29
27
|
|
30
28
|
description "Use the windows_feature_powershell resource to add, remove, or entirely delete Windows features and roles using PowerShell. This resource offers significant speed benefits over the windows_feature_dism resource, but requires installation of the Remote Server Administration Tools on non-server releases of Windows."
|
@@ -44,26 +42,23 @@ class Chef
|
|
44
42
|
|
45
43
|
property :timeout, Integer,
|
46
44
|
description: "Specifies a timeout (in seconds) for the feature installation.",
|
47
|
-
default: 600
|
45
|
+
default: 600,
|
46
|
+
desired_state: false
|
48
47
|
|
49
48
|
property :management_tools, [TrueClass, FalseClass],
|
50
49
|
description: "Install all applicable management tools for the roles, role services, or features.",
|
51
50
|
default: false
|
52
51
|
|
53
|
-
# Converts strings of features into an Array. Array objects are lowercased
|
52
|
+
# Converts strings of features into an Array. Array objects are lowercased
|
54
53
|
# @return [Array] array of features
|
55
54
|
def to_formatted_array(x)
|
56
55
|
x = x.split(/\s*,\s*/) if x.is_a?(String) # split multiple forms of a comma separated list
|
57
56
|
|
58
|
-
#
|
59
|
-
|
57
|
+
# features aren't case sensitive so let's compare in lowercase
|
58
|
+
x.map(&:downcase)
|
60
59
|
end
|
61
60
|
|
62
|
-
include Chef::Mixin::PowershellOut
|
63
|
-
|
64
61
|
action :install do
|
65
|
-
raise_on_old_powershell
|
66
|
-
|
67
62
|
reload_cached_powershell_data unless node["powershell_features_cache"]
|
68
63
|
fail_if_unavailable # fail if the features don't exist
|
69
64
|
fail_if_removed # fail if the features are in removed state
|
@@ -71,14 +66,10 @@ class Chef
|
|
71
66
|
Chef::Log.debug("Windows features needing installation: #{features_to_install.empty? ? "none" : features_to_install.join(",")}")
|
72
67
|
unless features_to_install.empty?
|
73
68
|
converge_by("install Windows feature#{"s" if features_to_install.count > 1} #{features_to_install.join(",")}") do
|
74
|
-
install_command = "
|
75
|
-
install_command << " -IncludeAllSubFeature"
|
76
|
-
|
77
|
-
|
78
|
-
else
|
79
|
-
install_command << " -Source \"#{new_resource.source}\"" if new_resource.source
|
80
|
-
install_command << " -IncludeManagementTools" if new_resource.management_tools
|
81
|
-
end
|
69
|
+
install_command = "Install-WindowsFeature #{features_to_install.join(",")}"
|
70
|
+
install_command << " -IncludeAllSubFeature" if new_resource.all
|
71
|
+
install_command << " -Source \"#{new_resource.source}\"" if new_resource.source
|
72
|
+
install_command << " -IncludeManagementTools" if new_resource.management_tools
|
82
73
|
|
83
74
|
cmd = powershell_out!(install_command, timeout: new_resource.timeout)
|
84
75
|
Chef::Log.info(cmd.stdout)
|
@@ -89,15 +80,13 @@ class Chef
|
|
89
80
|
end
|
90
81
|
|
91
82
|
action :remove do
|
92
|
-
raise_on_old_powershell
|
93
|
-
|
94
83
|
reload_cached_powershell_data unless node["powershell_features_cache"]
|
95
84
|
|
96
85
|
Chef::Log.debug("Windows features needing removal: #{features_to_remove.empty? ? "none" : features_to_remove.join(",")}")
|
97
86
|
|
98
87
|
unless features_to_remove.empty?
|
99
88
|
converge_by("remove Windows feature#{"s" if features_to_remove.count > 1} #{features_to_remove.join(",")}") do
|
100
|
-
cmd = powershell_out!("
|
89
|
+
cmd = powershell_out!("Uninstall-WindowsFeature #{features_to_remove.join(",")}", timeout: new_resource.timeout)
|
101
90
|
Chef::Log.info(cmd.stdout)
|
102
91
|
|
103
92
|
reload_cached_powershell_data # Reload cached powershell feature state
|
@@ -106,9 +95,6 @@ class Chef
|
|
106
95
|
end
|
107
96
|
|
108
97
|
action :delete do
|
109
|
-
raise_on_old_powershell
|
110
|
-
raise_if_delete_unsupported
|
111
|
-
|
112
98
|
reload_cached_powershell_data unless node["powershell_features_cache"]
|
113
99
|
|
114
100
|
fail_if_unavailable # fail if the features don't exist
|
@@ -126,49 +112,10 @@ class Chef
|
|
126
112
|
end
|
127
113
|
|
128
114
|
action_class do
|
129
|
-
# shellout to determine the actively installed version of powershell
|
130
|
-
# we have this same data in ohai, but it doesn't get updated if powershell is installed mid run
|
131
|
-
# @return [Integer] the powershell version or 0 for nothing
|
132
|
-
def powershell_version
|
133
|
-
cmd = powershell_out("$PSVersionTable.psversion.major")
|
134
|
-
return 1 if cmd.stdout.empty? # PowerShell 1.0 doesn't have a $PSVersionTable
|
135
|
-
|
136
|
-
Regexp.last_match(1).to_i if cmd.stdout =~ /^(\d+)/
|
137
|
-
rescue Errno::ENOENT
|
138
|
-
0 # zero as in nothing is installed
|
139
|
-
end
|
140
|
-
|
141
|
-
# raise if we're running powershell less than 3.0 since we need convertto-json
|
142
|
-
# check the powershell version via ohai data and if we're < 3.0 also shellout to make sure as
|
143
|
-
# a newer version could be installed post ohai run. Yes we're double checking. It's fine.
|
144
|
-
# @todo this can go away when we fully remove support for Windows 2008 R2
|
145
|
-
# @raise [RuntimeError] Raise if powershell is < 3.0
|
146
|
-
def raise_on_old_powershell
|
147
|
-
# be super defensive about the powershell lang plugin not being there
|
148
|
-
return if node["languages"] && node["languages"]["powershell"] && node["languages"]["powershell"]["version"].to_i >= 3
|
149
|
-
raise "The windows_feature_powershell resource requires PowerShell 3.0 or later. Please install PowerShell 3.0+ before running this resource." if powershell_version < 3
|
150
|
-
end
|
151
|
-
|
152
|
-
# The appropriate cmdlet to install a windows feature based on windows release
|
153
|
-
# @return [String]
|
154
|
-
def install_feature_cmdlet
|
155
|
-
older_than_win_2012_or_8? ? "Add-WindowsFeature" : "Install-WindowsFeature"
|
156
|
-
end
|
157
|
-
|
158
|
-
# The appropriate cmdlet to remove a windows feature based on windows release
|
159
|
-
# @return [String]
|
160
|
-
def remove_feature_cmdlet
|
161
|
-
older_than_win_2012_or_8? ? "Remove-WindowsFeature" : "Uninstall-WindowsFeature"
|
162
|
-
end
|
163
|
-
|
164
115
|
# @return [Array] features the user has requested to install which need installation
|
165
116
|
def features_to_install
|
166
|
-
# the intersection of the features to install & disabled
|
167
|
-
@
|
168
|
-
features = node["powershell_features_cache"]["disabled"]
|
169
|
-
features |= node["powershell_features_cache"]["removed"] if new_resource.source
|
170
|
-
new_resource.feature_name & features
|
171
|
-
end
|
117
|
+
# the intersection of the features to install & disabled features are what needs installing
|
118
|
+
@install ||= new_resource.feature_name & node["powershell_features_cache"]["disabled"]
|
172
119
|
end
|
173
120
|
|
174
121
|
# @return [Array] features the user has requested to remove which need removing
|
@@ -228,13 +175,8 @@ class Chef
|
|
228
175
|
|
229
176
|
# fetch the list of available feature names and state in JSON and parse the JSON
|
230
177
|
def parsed_feature_list
|
231
|
-
# Grab raw feature information from
|
232
|
-
|
233
|
-
raw_list_of_features = if older_than_win_2012_or_8? # make the older format look like the new format, warts and all
|
234
|
-
powershell_out!('Get-WindowsFeature | Select-Object -Property Name, @{Name="InstallState"; Expression = {If ($_.Installed) { 1 } Else { 0 }}} | ConvertTo-Json -Compress', timeout: new_resource.timeout).stdout
|
235
|
-
else
|
236
|
-
powershell_out!("Get-WindowsFeature | Select-Object -Property Name,InstallState | ConvertTo-Json -Compress", timeout: new_resource.timeout).stdout
|
237
|
-
end
|
178
|
+
# Grab raw feature information from WindowsFeature
|
179
|
+
raw_list_of_features = powershell_out!("Get-WindowsFeature | Select-Object -Property Name,InstallState | ConvertTo-Json -Compress", timeout: new_resource.timeout).stdout
|
238
180
|
|
239
181
|
Chef::JSONCompat.from_json(raw_list_of_features)
|
240
182
|
end
|
@@ -242,26 +184,19 @@ class Chef
|
|
242
184
|
# add the features values to the appropriate array
|
243
185
|
# @return [void]
|
244
186
|
def add_to_feature_mash(feature_type, feature_details)
|
245
|
-
# add the lowercase feature name to the mash
|
246
|
-
node.override["powershell_features_cache"][feature_type] <<
|
187
|
+
# add the lowercase feature name to the mash so we can compare it lowercase later
|
188
|
+
node.override["powershell_features_cache"][feature_type] << feature_details.downcase
|
247
189
|
end
|
248
190
|
|
249
191
|
# Fail if any of the packages are in a removed state
|
250
192
|
# @return [void]
|
251
193
|
def fail_if_removed
|
252
194
|
return if new_resource.source # if someone provides a source then all is well
|
195
|
+
return if registry_key_exists?('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing') && registry_value_exists?('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing', name: "LocalSourcePath") # if source is defined in the registry, still fine
|
253
196
|
|
254
|
-
if node["platform_version"].to_f > 6.2 # 2012R2 or later
|
255
|
-
return if registry_key_exists?('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing') && registry_value_exists?('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing', name: "LocalSourcePath") # if source is defined in the registry, still fine
|
256
|
-
end
|
257
197
|
removed = new_resource.feature_name & node["powershell_features_cache"]["removed"]
|
258
198
|
raise "The Windows feature#{"s" if removed.count > 1} #{removed.join(",")} #{removed.count > 1 ? "are" : "is"} removed from the host and cannot be installed." unless removed.empty?
|
259
199
|
end
|
260
|
-
|
261
|
-
# Fail unless we're on windows 8+ / 2012+ where deleting a feature is supported
|
262
|
-
def raise_if_delete_unsupported
|
263
|
-
raise Chef::Exceptions::UnsupportedAction, "#{self} :delete action not supported on Windows releases before Windows 8/2012. Cannot continue!" if older_than_win_2012_or_8?
|
264
|
-
end
|
265
200
|
end
|
266
201
|
end
|
267
202
|
end
|