chef 15.11.3-universal-mingw32 → 16.1.16-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -7
- data/README.md +1 -1
- data/Rakefile +44 -16
- data/chef.gemspec +6 -4
- 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/application.rb +33 -54
- data/lib/chef/application/apply.rb +18 -1
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +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_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +38 -3
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/digester.rb +4 -4
- 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 +3 -2
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -1
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -4
- 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 +84 -90
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
- data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- 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 +44 -42
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- 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/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -31
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +2 -3
- 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_rescind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +16 -2
- data/lib/chef/mixin/shell_out.rb +1 -5
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- 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 +5 -31
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +24 -6
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +3 -9
- data/lib/chef/provider/file.rb +6 -6
- 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 +45 -64
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +5 -6
- 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 +85 -26
- 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/dpkg.rb +1 -1
- data/lib/chef/provider/package/freebsd/base.rb +2 -1
- data/lib/chef/provider/package/homebrew.rb +107 -43
- data/lib/chef/provider/package/macports.rb +0 -2
- data/lib/chef/provider/package/msu.rb +4 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/portage.rb +1 -0
- data/lib/chef/provider/package/powershell.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +30 -3
- data/lib/chef/provider/package/windows.rb +29 -53
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +1 -9
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +5 -11
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +5 -5
- 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 +1 -1
- data/lib/chef/provider/service/debian.rb +30 -28
- data/lib/chef/provider/service/macosx.rb +16 -10
- 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/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/mac.rb +20 -15
- 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 +10 -10
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +44 -57
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +210 -0
- data/lib/chef/resource/apt_package.rb +33 -3
- data/lib/chef/resource/apt_preference.rb +103 -7
- data/lib/chef/resource/apt_repository.rb +357 -18
- data/lib/chef/resource/apt_update.rb +58 -5
- data/lib/chef/resource/archive_file.rb +6 -5
- data/lib/chef/resource/bash.rb +3 -1
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +10 -2
- data/lib/chef/resource/breakpoint.rb +1 -2
- data/lib/chef/resource/build_essential.rb +49 -51
- data/lib/chef/resource/cab_package.rb +9 -2
- data/lib/chef/resource/chef_client_cron.rb +228 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
- data/lib/chef/resource/chef_gem.rb +15 -18
- data/lib/chef/resource/chef_handler.rb +5 -4
- data/lib/chef/resource/chef_sleep.rb +7 -5
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +8 -4
- data/lib/chef/resource/chocolatey_feature.rb +7 -4
- data/lib/chef/resource/chocolatey_package.rb +7 -4
- data/lib/chef/resource/chocolatey_source.rb +7 -4
- data/lib/chef/resource/cookbook_file.rb +4 -3
- data/lib/chef/resource/cron.rb +34 -80
- data/lib/chef/resource/cron_access.rb +10 -6
- data/lib/chef/resource/cron_d.rb +44 -95
- data/lib/chef/resource/csh.rb +3 -1
- data/lib/chef/resource/directory.rb +3 -3
- data/lib/chef/resource/dmg_package.rb +22 -19
- data/lib/chef/resource/dnf_package.rb +3 -4
- data/lib/chef/resource/dpkg_package.rb +3 -2
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +15 -14
- data/lib/chef/resource/file.rb +14 -9
- data/lib/chef/resource/freebsd_package.rb +3 -2
- data/lib/chef/resource/gem_package.rb +19 -11
- data/lib/chef/resource/group.rb +5 -2
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +3 -2
- data/lib/chef/resource/homebrew_package.rb +5 -3
- data/lib/chef/resource/homebrew_tap.rb +3 -2
- data/lib/chef/resource/hostname.rb +26 -20
- data/lib/chef/resource/http_request.rb +1 -2
- data/lib/chef/resource/ifconfig.rb +8 -8
- data/lib/chef/resource/ips_package.rb +11 -3
- data/lib/chef/resource/kernel_module.rb +30 -30
- data/lib/chef/resource/ksh.rb +3 -1
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/link.rb +5 -27
- data/lib/chef/resource/locale.rb +60 -26
- data/lib/chef/resource/log.rb +13 -2
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/macos_userdefaults.rb +18 -10
- data/lib/chef/resource/macosx_service.rb +3 -2
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +63 -3
- data/lib/chef/resource/mount.rb +4 -1
- data/lib/chef/resource/msu_package.rb +19 -2
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +20 -4
- data/lib/chef/resource/ohai_hint.rb +4 -13
- data/lib/chef/resource/openbsd_package.rb +10 -2
- data/lib/chef/resource/openssl_dhparam.rb +11 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
- data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
- data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
- data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
- data/lib/chef/resource/openssl_x509_crl.rb +13 -2
- data/lib/chef/resource/openssl_x509_request.rb +38 -2
- data/lib/chef/resource/osx_profile.rb +4 -3
- data/lib/chef/resource/package.rb +3 -2
- data/lib/chef/resource/pacman_package.rb +3 -2
- data/lib/chef/resource/paludis_package.rb +13 -4
- data/lib/chef/resource/perl.rb +3 -1
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +14 -4
- data/lib/chef/resource/powershell_package.rb +2 -4
- data/lib/chef/resource/powershell_package_source.rb +4 -2
- data/lib/chef/resource/powershell_script.rb +8 -18
- data/lib/chef/resource/python.rb +3 -1
- data/lib/chef/resource/reboot.rb +1 -2
- data/lib/chef/resource/registry_key.rb +2 -3
- data/lib/chef/resource/remote_directory.rb +3 -1
- data/lib/chef/resource/remote_file.rb +3 -2
- data/lib/chef/resource/rhsm_errata.rb +1 -4
- data/lib/chef/resource/rhsm_errata_level.rb +1 -2
- data/lib/chef/resource/rhsm_register.rb +3 -3
- data/lib/chef/resource/rhsm_repo.rb +4 -3
- data/lib/chef/resource/rhsm_subscription.rb +5 -4
- data/lib/chef/resource/route.rb +6 -2
- data/lib/chef/resource/rpm_package.rb +13 -3
- data/lib/chef/resource/ruby.rb +3 -1
- data/lib/chef/resource/ruby_block.rb +2 -5
- data/lib/chef/resource/scm/_scm.rb +49 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
- data/lib/chef/resource/script.rb +7 -4
- data/lib/chef/resource/service.rb +7 -8
- data/lib/chef/resource/smartos_package.rb +10 -2
- data/lib/chef/resource/snap_package.rb +4 -2
- data/lib/chef/resource/solaris_package.rb +10 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +11 -11
- 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 +7 -5
- data/lib/chef/resource/sysctl.rb +63 -4
- data/lib/chef/resource/systemd_unit.rb +6 -4
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +8 -19
- data/lib/chef/resource/user.rb +3 -5
- 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 +116 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +20 -7
- data/lib/chef/resource/windows_auto_run.rb +2 -3
- data/lib/chef/resource/windows_certificate.rb +3 -3
- data/lib/chef/resource/windows_dfs_folder.rb +1 -2
- data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
- data/lib/chef/resource/windows_dfs_server.rb +2 -3
- 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 +12 -4
- data/lib/chef/resource/windows_feature.rb +59 -4
- data/lib/chef/resource/windows_feature_dism.rb +24 -24
- data/lib/chef/resource/windows_feature_powershell.rb +44 -78
- data/lib/chef/resource/windows_firewall_rule.rb +121 -8
- data/lib/chef/resource/windows_font.rb +10 -2
- data/lib/chef/resource/windows_package.rb +76 -7
- data/lib/chef/resource/windows_pagefile.rb +31 -4
- data/lib/chef/resource/windows_path.rb +18 -2
- data/lib/chef/resource/windows_printer.rb +26 -7
- data/lib/chef/resource/windows_printer_port.rb +29 -2
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +119 -0
- data/lib/chef/resource/windows_service.rb +46 -32
- data/lib/chef/resource/windows_share.rb +22 -6
- data/lib/chef/resource/windows_shortcut.rb +13 -3
- data/lib/chef/resource/windows_task.rb +129 -16
- data/lib/chef/resource/windows_uac.rb +20 -2
- data/lib/chef/resource/windows_user_privilege.rb +199 -0
- data/lib/chef/resource/windows_workgroup.rb +19 -4
- data/lib/chef/resource/yum_package.rb +91 -7
- data/lib/chef/resource/yum_repository.rb +30 -12
- data/lib/chef/resource/zypper_package.rb +32 -5
- data/lib/chef/resource/zypper_repository.rb +19 -6
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +3 -2
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/scan_access_control.rb +1 -1
- data/lib/chef/shell.rb +22 -0
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -2
- data/lib/chef/win32/api/error.rb +3 -1
- data/lib/chef/win32/api/file.rb +1 -1
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +1 -9
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/security.rb +40 -2
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +23 -19
- data/spec/functional/resource/cron_spec.rb +10 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/msu_package_spec.rb +5 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +4 -4
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -1
- data/spec/functional/shell_spec.rb +1 -1
- 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/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 +34 -6
- data/spec/integration/knife/redirection_spec.rb +2 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +49 -20
- data/spec/integration/recipes/notifying_block_spec.rb +8 -5
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
- data/spec/integration/recipes/resource_load_spec.rb +133 -12
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/spec_helper.rb +18 -3
- 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 +2 -20
- data/spec/support/recipe_dsl_helper.rb +83 -0
- data/spec/support/shared/functional/http.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +3 -16
- data/spec/support/shared/integration/knife_support.rb +9 -6
- data/spec/support/shared/unit/mock_shellout.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application/apply_spec.rb +3 -0
- data/spec/unit/application/client_spec.rb +5 -1
- data/spec/unit/application_spec.rb +1 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_collector_spec.rb +39 -18
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/json_compat_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 +20 -38
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- data/spec/unit/knife/ssh_spec.rb +8 -111
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/shell_out_spec.rb +25 -31
- data/spec/unit/node/attribute_spec.rb +3 -3
- 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 +12 -9
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +34 -36
- 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 +41 -1
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- 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/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +3 -2
- data/spec/unit/provider/package/rubygems_spec.rb +211 -26
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- 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/debian_service_spec.rb +34 -13
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +17 -17
- data/spec/unit/provider_resolver_spec.rb +4 -4
- 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/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/msu_package_spec.rb +4 -0
- 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_feature_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +14 -0
- data/spec/unit/resource/windows_service_spec.rb +9 -0
- data/spec/unit/resource_reporter_spec.rb +2 -6
- data/spec/unit/resource_spec.rb +10 -3
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/win32/registry_spec.rb +1 -1
- data/tasks/rspec.rb +6 -14
- metadata +92 -37
- 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/unit/provider/ohai_spec.rb +0 -84
@@ -36,46 +36,57 @@ class Chef
|
|
36
36
|
provides(:windows_service) { true }
|
37
37
|
provides :service, os: "windows"
|
38
38
|
|
39
|
-
description "Use the windows_service resource to create, delete, or manage a service on the Microsoft Windows platform."
|
39
|
+
description "Use the **windows_service** resource to create, delete, or manage a service on the Microsoft Windows platform."
|
40
40
|
introduced "12.0"
|
41
41
|
|
42
42
|
allowed_actions :configure_startup, :create, :delete, :configure
|
43
43
|
|
44
|
-
|
45
|
-
|
44
|
+
property :timeout, Integer,
|
45
|
+
description: "The amount of time (in seconds) to wait before timing out.",
|
46
|
+
default: 60,
|
47
|
+
desired_state: false
|
48
|
+
|
46
49
|
property :display_name, String, regex: /^.{1,256}$/,
|
47
|
-
|
48
|
-
|
50
|
+
description: "The display name to be used by user interface programs to identify the service. This string has a maximum length of 256 characters.",
|
51
|
+
validation_message: "The display_name can only be a maximum of 256 characters!",
|
52
|
+
introduced: "14.0"
|
49
53
|
|
50
54
|
# https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L19-L29
|
51
|
-
property :desired_access, Integer,
|
55
|
+
property :desired_access, Integer,
|
56
|
+
default: SERVICE_ALL_ACCESS,
|
57
|
+
introduced: "14.0"
|
52
58
|
|
53
59
|
# https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L31-L41
|
54
|
-
property :service_type, Integer, default: SERVICE_WIN32_OWN_PROCESS
|
60
|
+
property :service_type, Integer, default: SERVICE_WIN32_OWN_PROCESS,
|
61
|
+
introduced: "14.0"
|
55
62
|
|
56
63
|
# Valid options:
|
57
64
|
# - :automatic
|
58
65
|
# - :manual
|
59
66
|
# - :disabled
|
60
67
|
# Reference: https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L49-L54
|
61
|
-
property :startup_type, [Symbol],
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
68
|
+
property :startup_type, [Symbol],
|
69
|
+
equal_to: %i{automatic manual disabled},
|
70
|
+
default: :automatic,
|
71
|
+
description: "Use to specify the startup type of the service.",
|
72
|
+
coerce: proc { |x|
|
73
|
+
if x.is_a?(Integer)
|
74
|
+
ALLOWED_START_TYPES.invert.fetch(x) do
|
75
|
+
Chef::Log.warn("Unsupported startup_type #{x}, falling back to :automatic")
|
76
|
+
:automatic
|
77
|
+
end
|
78
|
+
elsif x.is_a?(String)
|
79
|
+
x.to_sym
|
80
|
+
else
|
81
|
+
x
|
66
82
|
end
|
67
|
-
|
68
|
-
|
69
|
-
else
|
70
|
-
x
|
71
|
-
end
|
72
|
-
}
|
73
|
-
|
74
|
-
# This only applies if startup_type is :automatic
|
83
|
+
}
|
84
|
+
|
75
85
|
# 1 == delayed start is enabled
|
76
86
|
# 0 == NO delayed start
|
77
87
|
property :delayed_start, [TrueClass, FalseClass],
|
78
88
|
introduced: "14.0",
|
89
|
+
description: "Set the startup type to delayed start. This only applies if `startup_type` is `:automatic`",
|
79
90
|
default: false, coerce: proc { |x|
|
80
91
|
if x.is_a?(Integer)
|
81
92
|
x == 0 ? false : true
|
@@ -85,31 +96,34 @@ class Chef
|
|
85
96
|
}
|
86
97
|
|
87
98
|
# https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L43-L47
|
88
|
-
property :error_control, Integer,
|
99
|
+
property :error_control, Integer,
|
100
|
+
default: SERVICE_ERROR_NORMAL,
|
101
|
+
introduced: "14.0"
|
89
102
|
|
90
103
|
property :binary_path_name, String,
|
91
104
|
introduced: "14.0",
|
92
|
-
description: "The fully qualified path to the service binary file. The path can also include arguments for an auto-start service. This is required for
|
105
|
+
description: "The fully qualified path to the service binary file. The path can also include arguments for an auto-start service. This is required for `:create` and `:configure` actions"
|
93
106
|
|
94
107
|
property :load_order_group, String,
|
95
108
|
introduced: "14.0",
|
96
|
-
description: "The
|
97
|
-
|
98
|
-
# A pointer to a double null-terminated array of null-separated names of
|
99
|
-
# services or load ordering groups that the system must start before this
|
100
|
-
# service. Specify nil or an empty string if the service has no
|
101
|
-
# dependencies. Dependency on a group means that this service can run if
|
102
|
-
# at least one member of the group is running after an attempt to start
|
103
|
-
# all members of the group.
|
109
|
+
description: "The name of the service's load ordering group(s)."
|
110
|
+
|
104
111
|
property :dependencies, [String, Array],
|
112
|
+
description: "A pointer to a double null-terminated array of null-separated names of services or load ordering groups that the system must start before this service. Specify `nil` or an empty string if the service has no dependencies. Dependency on a group means that this service can run if at least one member of the group is running after an attempt to start all members of the group.",
|
105
113
|
introduced: "14.0"
|
106
114
|
|
107
115
|
property :description, String,
|
108
116
|
description: "Description of the service.",
|
109
117
|
introduced: "14.0"
|
110
118
|
|
111
|
-
property :run_as_user, String,
|
112
|
-
|
119
|
+
property :run_as_user, String,
|
120
|
+
description: "The user under which a Microsoft Windows service runs.",
|
121
|
+
default: "localsystem",
|
122
|
+
coerce: proc { |x| x.downcase }
|
123
|
+
|
124
|
+
property :run_as_password, String,
|
125
|
+
description: "The password for the user specified by `run_as_user`.",
|
126
|
+
default: ""
|
113
127
|
end
|
114
128
|
end
|
115
129
|
end
|
@@ -26,10 +26,30 @@ require_relative "../util/path_helper"
|
|
26
26
|
class Chef
|
27
27
|
class Resource
|
28
28
|
class WindowsShare < Chef::Resource
|
29
|
-
|
29
|
+
provides :windows_share
|
30
30
|
|
31
|
-
description "Use the windows_share resource to create, modify and remove Windows shares."
|
31
|
+
description "Use the **windows_share** resource to create, modify and remove Windows shares."
|
32
32
|
introduced "14.7"
|
33
|
+
examples <<~DOC
|
34
|
+
**Create a share**:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
windows_share 'foo' do
|
38
|
+
action :create
|
39
|
+
path 'C:\\foo'
|
40
|
+
full_users ['DOMAIN_A\\some_user', 'DOMAIN_B\\some_other_user']
|
41
|
+
read_users ['DOMAIN_C\\Domain users']
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
**Delete a share**:
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
windows_share 'foo' do
|
49
|
+
action :delete
|
50
|
+
end
|
51
|
+
```
|
52
|
+
DOC
|
33
53
|
|
34
54
|
# Specifies a name for the SMB share. The name may be composed of any valid file name characters, but must be less than 80 characters long. The names pipe and mailslot are reserved for use by the computer.
|
35
55
|
property :share_name, String,
|
@@ -145,10 +165,6 @@ class Chef
|
|
145
165
|
read_users r_users
|
146
166
|
end
|
147
167
|
|
148
|
-
def after_created
|
149
|
-
raise "The windows_share resource relies on PowerShell cmdlets not present in Windows releases prior to 8/2012. Cannot continue!" if node["platform_version"].to_f < 6.3
|
150
|
-
end
|
151
|
-
|
152
168
|
# given the string output of Get-SmbShareAccess parse out
|
153
169
|
# arrays of full access users, change users, and read only users
|
154
170
|
def parse_permissions(results_string)
|
@@ -21,11 +21,21 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsShortcut < Chef::Resource
|
24
|
-
resource_name :windows_shortcut
|
25
24
|
provides(:windows_shortcut) { true }
|
26
25
|
|
27
|
-
description "Use the windows_shortcut resource to create shortcut files on Windows."
|
26
|
+
description "Use the **windows_shortcut** resource to create shortcut files on Windows."
|
28
27
|
introduced "14.0"
|
28
|
+
examples <<~DOC
|
29
|
+
**Create a shortcut with a description**:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
windows_shortcut 'C:\\shortcut_dir.lnk' do
|
33
|
+
target 'C:\\original_dir'
|
34
|
+
description 'Make a shortcut to C:\\original_dir'
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
DOC
|
29
39
|
|
30
40
|
property :shortcut_name, String,
|
31
41
|
description: "An optional property to set the shortcut name if it differs from the resource block's name.",
|
@@ -44,7 +54,7 @@ class Chef
|
|
44
54
|
description: "Working directory to use when the target is executed."
|
45
55
|
|
46
56
|
property :iconlocation, String,
|
47
|
-
description: "Icon to use for the shortcut. Accepts the format of
|
57
|
+
description: "Icon to use for the shortcut. Accepts the format of `path, index`, where index is the icon file to use. See Microsoft's [documentation](https://msdn.microsoft.com/en-us/library/3s9bx7at.aspx) for details"
|
48
58
|
|
49
59
|
load_current_value do |desired|
|
50
60
|
require "win32ole" if RUBY_PLATFORM =~ /mswin|mingw32|windows/
|
@@ -22,17 +22,129 @@ require_relative "../win32/security" if Chef::Platform.windows?
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
24
24
|
class WindowsTask < Chef::Resource
|
25
|
-
resource_name :windows_task
|
26
25
|
provides(:windows_task) { true }
|
27
26
|
|
28
|
-
description "Use the windows_task resource to create, delete or run a Windows scheduled task.
|
27
|
+
description "Use the **windows_task** resource to create, delete or run a Windows scheduled task."
|
29
28
|
introduced "13.0"
|
29
|
+
examples <<~DOC
|
30
|
+
**Create a scheduled task to run every 15 minutes as the Administrator user**:
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
windows_task 'chef-client' do
|
34
|
+
user 'Administrator'
|
35
|
+
password 'password'
|
36
|
+
command 'chef-client'
|
37
|
+
run_level :highest
|
38
|
+
frequency :minute
|
39
|
+
frequency_modifier 15
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
**Create a scheduled task to run every 2 days**:
|
44
|
+
|
45
|
+
``` ruby
|
46
|
+
windows_task 'chef-client' do
|
47
|
+
command 'chef-client'
|
48
|
+
run_level :highest
|
49
|
+
frequency :daily
|
50
|
+
frequency_modifier 2
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
**Create a scheduled task to run on specific days of the week**:
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
windows_task 'chef-client' do
|
58
|
+
command 'chef-client'
|
59
|
+
run_level :highest
|
60
|
+
frequency :weekly
|
61
|
+
day 'Mon, Thu'
|
62
|
+
end
|
63
|
+
```
|
64
|
+
|
65
|
+
**Create a scheduled task to run only once**:
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
windows_task 'chef-client' do
|
69
|
+
command 'chef-client'
|
70
|
+
run_level :highest
|
71
|
+
frequency :once
|
72
|
+
start_time "16:10"
|
73
|
+
end
|
74
|
+
```
|
75
|
+
|
76
|
+
**Create a scheduled task to run on current day every 3 weeks and delay upto 1 min**:
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
windows_task 'chef-client' do
|
80
|
+
command 'chef-client'
|
81
|
+
run_level :highest
|
82
|
+
frequency :weekly
|
83
|
+
frequency_modifier 3
|
84
|
+
random_delay '60'
|
85
|
+
end
|
86
|
+
```
|
87
|
+
|
88
|
+
**Create a scheduled task to run weekly starting on Dec 28th 2018**:
|
89
|
+
|
90
|
+
```ruby
|
91
|
+
windows_task 'chef-client 8' do
|
92
|
+
command 'chef-client'
|
93
|
+
run_level :highest
|
94
|
+
frequency :weekly
|
95
|
+
start_day '12/28/2018'
|
96
|
+
end
|
97
|
+
```
|
98
|
+
|
99
|
+
**Create a scheduled task to run every Monday, Friday every 2 weeks**:
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
windows_task 'chef-client' do
|
103
|
+
command 'chef-client'
|
104
|
+
run_level :highest
|
105
|
+
frequency :weekly
|
106
|
+
frequency_modifier 2
|
107
|
+
day 'Mon, Fri'
|
108
|
+
end
|
109
|
+
```
|
110
|
+
|
111
|
+
**Create a scheduled task to run when computer is idle with idle duration 20 min**:
|
112
|
+
```ruby
|
113
|
+
windows_task 'chef-client' do
|
114
|
+
command 'chef-client'
|
115
|
+
run_level :highest
|
116
|
+
frequency :on_idle
|
117
|
+
idle_time 20
|
118
|
+
end
|
119
|
+
```
|
120
|
+
|
121
|
+
**Delete a task named "old task"**:
|
122
|
+
```ruby
|
123
|
+
windows_task 'old task' do
|
124
|
+
action :delete
|
125
|
+
end
|
126
|
+
```
|
127
|
+
|
128
|
+
**Enable a task named "chef-client"**:
|
129
|
+
```ruby
|
130
|
+
windows_task 'chef-client' do
|
131
|
+
action :enable
|
132
|
+
end
|
133
|
+
```
|
134
|
+
|
135
|
+
**Disable a task named "ProgramDataUpdater" with TaskPath "\\Microsoft\\Windows\\Application Experience\\ProgramDataUpdater"**
|
136
|
+
```ruby
|
137
|
+
windows_task '\\Microsoft\\Windows\\Application Experience\\ProgramDataUpdater' do
|
138
|
+
action :disable
|
139
|
+
end
|
140
|
+
```
|
141
|
+
DOC
|
30
142
|
|
31
143
|
allowed_actions :create, :delete, :run, :end, :enable, :disable, :change
|
32
144
|
default_action :create
|
33
145
|
|
34
146
|
property :task_name, String, regex: [%r{\A[^/\:\*\?\<\>\|]+\z}],
|
35
|
-
description: "An optional property to set the task name if it differs from the resource block's name. Example:
|
147
|
+
description: "An optional property to set the task name if it differs from the resource block's name. Example: `Task Name` or `/Task Name`",
|
36
148
|
name_property: true
|
37
149
|
|
38
150
|
property :command, String,
|
@@ -47,10 +159,10 @@ class Chef
|
|
47
159
|
default_description: "The localized SYSTEM user for the node."
|
48
160
|
|
49
161
|
property :password, String,
|
50
|
-
description: "The user
|
162
|
+
description: "The user's password. The user property must be set if using this property."
|
51
163
|
|
52
164
|
property :run_level, Symbol, equal_to: %i{highest limited},
|
53
|
-
description: "Run with
|
165
|
+
description: "Run with `:limited` or `:highest` privileges.",
|
54
166
|
default: :limited
|
55
167
|
|
56
168
|
property :force, [TrueClass, FalseClass],
|
@@ -87,17 +199,18 @@ class Chef
|
|
87
199
|
description: "The day(s) on which the task runs."
|
88
200
|
|
89
201
|
property :months, String,
|
90
|
-
description: "The Months of the year on which the task runs, such as:
|
202
|
+
description: "The Months of the year on which the task runs, such as: `JAN, FEB` or `*`. Multiple months should be comma delimited. e.g. `Jan, Feb, Mar, Dec`."
|
91
203
|
|
92
204
|
property :idle_time, Integer,
|
93
|
-
description: "For
|
205
|
+
description: "For `:on_idle` frequency, the time (in minutes) without user activity that must pass to trigger the task, from `1` - `999`."
|
94
206
|
|
95
207
|
property :random_delay, [String, Integer],
|
96
208
|
description: "Delays the task up to a given time (in seconds)."
|
97
209
|
|
98
210
|
property :execution_time_limit, [String, Integer],
|
99
|
-
description: "The maximum time
|
100
|
-
default: "PT72H"
|
211
|
+
description: "The maximum time the task will run. This field accepts either seconds or an ISO8601 duration value.",
|
212
|
+
default: "PT72H",
|
213
|
+
default_description: "PT72H (72 hours in ISO8601 duration format)"
|
101
214
|
|
102
215
|
property :minutes_duration, [String, Integer],
|
103
216
|
description: ""
|
@@ -122,7 +235,7 @@ class Chef
|
|
122
235
|
description: "The task description."
|
123
236
|
|
124
237
|
property :start_when_available, [TrueClass, FalseClass],
|
125
|
-
introduced: "15
|
238
|
+
introduced: "14.15", default: false,
|
126
239
|
description: "To start the task at any time after its scheduled time has passed."
|
127
240
|
|
128
241
|
attr_accessor :exists, :task, :command_arguments
|
@@ -161,7 +274,7 @@ class Chef
|
|
161
274
|
|
162
275
|
## Resource is not idempotent when day, start_day is not provided with frequency :weekly
|
163
276
|
## we set start_day when not given by user as current date based on which we set the day property for current current date day is monday ..
|
164
|
-
## we set the monday as the day so at next run when new_resource.day is nil and current_resource day is monday due to which
|
277
|
+
## we set the monday as the day so at next run when new_resource.day is nil and current_resource day is monday due to which update gets called
|
165
278
|
def idempotency_warning_for_frequency_weekly(day, start_day)
|
166
279
|
if start_day.nil? && day.nil?
|
167
280
|
logger.warn "To maintain idempotency for frequency :weekly provide start_day, start_time and day."
|
@@ -182,19 +295,19 @@ class Chef
|
|
182
295
|
end
|
183
296
|
|
184
297
|
def validate_frequency_monthly(frequency_modifier, months, day)
|
185
|
-
# validates the frequency :monthly and raises error if frequency_modifier is first, second,
|
298
|
+
# validates the frequency :monthly and raises error if frequency_modifier is first, second, third etc and day is not provided
|
186
299
|
if (frequency_modifier != 1) && (frequency_modifier_includes_days_of_weeks?(frequency_modifier)) && !(day)
|
187
|
-
raise ArgumentError, "Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be
|
300
|
+
raise ArgumentError, "Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be separated by comma."
|
188
301
|
end
|
189
302
|
|
190
|
-
#
|
191
|
-
# Not checking value 1 here for
|
303
|
+
# frequency_modifier 2-12 is used to set every (n) months, so using :months property with frequency_modifier is not valid since they both used to set months.
|
304
|
+
# Not checking value 1 here for frequency_modifier since we are setting that as default value it won't break anything since preference is given to months property
|
192
305
|
if (frequency_modifier.to_i.between?(2, 12)) && !(months.nil?)
|
193
306
|
raise ArgumentError, "For frequency :monthly either use property months or frequency_modifier to set months."
|
194
307
|
end
|
195
308
|
end
|
196
309
|
|
197
|
-
# returns true if
|
310
|
+
# returns true if frequency_modifier has values First, second, third, fourth, last, lastday
|
198
311
|
def frequency_modifier_includes_days_of_weeks?(frequency_modifier)
|
199
312
|
frequency_modifier = frequency_modifier.to_s.split(",")
|
200
313
|
frequency_modifier.map! { |value| value.strip.upcase }
|
@@ -20,11 +20,29 @@ require_relative "../resource"
|
|
20
20
|
class Chef
|
21
21
|
class Resource
|
22
22
|
class WindowsUac < Chef::Resource
|
23
|
-
resource_name :windows_uac
|
24
23
|
provides :windows_uac
|
25
24
|
|
26
|
-
description 'The windows_uac resource configures UAC on Windows hosts by setting registry keys at
|
25
|
+
description 'The *windows_uac* resource configures UAC on Windows hosts by setting registry keys at `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System`'
|
27
26
|
introduced "15.0"
|
27
|
+
examples <<~DOC
|
28
|
+
**Disable UAC prompts for the admin**:
|
29
|
+
|
30
|
+
``` ruby
|
31
|
+
windows_uac 'Disable UAC prompts for the admin' do
|
32
|
+
enable_uac true
|
33
|
+
prompt_on_secure_desktop false
|
34
|
+
consent_behavior_admins :no_prompt
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
**Disable UAC entirely**:
|
39
|
+
|
40
|
+
``` ruby
|
41
|
+
windows_uac 'Disable UAC entirely' do
|
42
|
+
enable_uac false
|
43
|
+
end
|
44
|
+
```
|
45
|
+
DOC
|
28
46
|
|
29
47
|
# https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-virtualize-file-and-registry-write-failures-to-per-user-locations
|
30
48
|
property :enable_uac, [TrueClass, FalseClass],
|
@@ -0,0 +1,199 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Jared Kauppila (<jared@kauppi.la>)
|
3
|
+
# Author:: Vasundhara Jagdale(<vasundhara.jagdale@chef.io>)
|
4
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
5
|
+
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require_relative "../resource"
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
class Resource
|
23
|
+
class WindowsUserPrivilege < Chef::Resource
|
24
|
+
privilege_opts = %w{SeTrustedCredManAccessPrivilege
|
25
|
+
SeNetworkLogonRight
|
26
|
+
SeTcbPrivilege
|
27
|
+
SeMachineAccountPrivilege
|
28
|
+
SeIncreaseQuotaPrivilege
|
29
|
+
SeInteractiveLogonRight
|
30
|
+
SeRemoteInteractiveLogonRight
|
31
|
+
SeBackupPrivilege
|
32
|
+
SeChangeNotifyPrivilege
|
33
|
+
SeSystemtimePrivilege
|
34
|
+
SeTimeZonePrivilege
|
35
|
+
SeCreatePagefilePrivilege
|
36
|
+
SeCreateTokenPrivilege
|
37
|
+
SeCreateGlobalPrivilege
|
38
|
+
SeCreatePermanentPrivilege
|
39
|
+
SeCreateSymbolicLinkPrivilege
|
40
|
+
SeDebugPrivilege
|
41
|
+
SeDenyNetworkLogonRight
|
42
|
+
SeDenyBatchLogonRight
|
43
|
+
SeDenyServiceLogonRight
|
44
|
+
SeDenyInteractiveLogonRight
|
45
|
+
SeDenyRemoteInteractiveLogonRight
|
46
|
+
SeEnableDelegationPrivilege
|
47
|
+
SeRemoteShutdownPrivilege
|
48
|
+
SeAuditPrivilege
|
49
|
+
SeImpersonatePrivilege
|
50
|
+
SeIncreaseWorkingSetPrivilege
|
51
|
+
SeIncreaseBasePriorityPrivilege
|
52
|
+
SeLoadDriverPrivilege
|
53
|
+
SeLockMemoryPrivilege
|
54
|
+
SeBatchLogonRight
|
55
|
+
SeServiceLogonRight
|
56
|
+
SeSecurityPrivilege
|
57
|
+
SeRelabelPrivilege
|
58
|
+
SeSystemEnvironmentPrivilege
|
59
|
+
SeManageVolumePrivilege
|
60
|
+
SeProfileSingleProcessPrivilege
|
61
|
+
SeSystemProfilePrivilege
|
62
|
+
SeUndockPrivilege
|
63
|
+
SeAssignPrimaryTokenPrivilege
|
64
|
+
SeRestorePrivilege
|
65
|
+
SeShutdownPrivilege
|
66
|
+
SeSyncAgentPrivilege
|
67
|
+
SeTakeOwnershipPrivilege
|
68
|
+
}
|
69
|
+
|
70
|
+
provides :windows_user_privilege
|
71
|
+
description "The windows_user_privilege resource allows to add and set principal (User/Group) to the specified privilege. \n Ref: https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/user-rights-assignment"
|
72
|
+
|
73
|
+
introduced "16.0"
|
74
|
+
|
75
|
+
examples <<~DOC
|
76
|
+
**Set the SeNetworkLogonRight Privilege for the Builtin Administrators Group and Authenticated Users**:
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
windows_user_privilege 'Network Logon Rights' do
|
80
|
+
privilege 'SeNetworkLogonRight'
|
81
|
+
users ['BUILTIN\Administrators', 'NT AUTHORITY\Authenticated Users']
|
82
|
+
action :set
|
83
|
+
end
|
84
|
+
```
|
85
|
+
|
86
|
+
**Add the SeDenyRemoteInteractiveLogonRight Privilege to the Builtin Guests and Local Accounts User Groups**:
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
windows_user_privilege 'Remote interactive logon' do
|
90
|
+
privilege 'SeDenyRemoteInteractiveLogonRight'
|
91
|
+
users ['Builtin\Guests', 'NT AUTHORITY\Local Account']
|
92
|
+
action :add
|
93
|
+
end
|
94
|
+
```
|
95
|
+
|
96
|
+
**Provide only the Builtin Guests and Administrator Groups with the SeCreatePageFile Privilege**:
|
97
|
+
|
98
|
+
```ruby
|
99
|
+
windows_user_privilege 'Create Pagefile' do
|
100
|
+
privilege 'SeCreatePagefilePrivilege'
|
101
|
+
users ['BUILTIN\Guests', 'BUILTIN\Administrators']
|
102
|
+
action :set
|
103
|
+
end
|
104
|
+
```
|
105
|
+
|
106
|
+
**Remove the SeCreatePageFile Privilege from the Builtin Guests Group**:
|
107
|
+
|
108
|
+
```ruby
|
109
|
+
windows_user_privilege 'Create Pagefile' do
|
110
|
+
privilege 'SeCreatePagefilePrivilege'
|
111
|
+
users ['BUILTIN\Guests']
|
112
|
+
action :remove
|
113
|
+
end
|
114
|
+
```
|
115
|
+
DOC
|
116
|
+
|
117
|
+
property :principal, String,
|
118
|
+
description: "An optional property to add the user to the given privilege. Use only with add and remove action.",
|
119
|
+
name_property: true
|
120
|
+
|
121
|
+
property :users, Array,
|
122
|
+
description: "An optional property to set the privilege for given users. Use only with set action."
|
123
|
+
|
124
|
+
property :privilege, [Array, String],
|
125
|
+
description: "Privilege to set for users.",
|
126
|
+
required: true,
|
127
|
+
coerce: proc { |v| v.is_a?(String) ? Array[v] : v },
|
128
|
+
callbacks: {
|
129
|
+
"Option privilege must include any of the: #{privilege_opts}" => lambda { |v|
|
130
|
+
(privilege_opts & v).size == v.size
|
131
|
+
},
|
132
|
+
}
|
133
|
+
|
134
|
+
load_current_value do |new_resource|
|
135
|
+
unless new_resource.principal.nil?
|
136
|
+
privilege Chef::ReservedNames::Win32::Security.get_account_right(new_resource.principal) unless new_resource.action.include?(:set)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
action :add do
|
141
|
+
([*new_resource.privilege] - [*current_resource.privilege]).each do |user_right|
|
142
|
+
converge_by("adding user '#{new_resource.principal}' privilege #{user_right}") do
|
143
|
+
Chef::ReservedNames::Win32::Security.add_account_right(new_resource.principal, user_right)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
action :set do
|
149
|
+
if new_resource.users.nil? || new_resource.users.empty?
|
150
|
+
raise Chef::Exceptions::ValidationFailed, "Users are required property with set action."
|
151
|
+
end
|
152
|
+
|
153
|
+
users = []
|
154
|
+
|
155
|
+
# Getting users with its domain for comparison
|
156
|
+
new_resource.users.each do |user|
|
157
|
+
user = Chef::ReservedNames::Win32::Security.lookup_account_name(user)
|
158
|
+
users << user[1].account_name if user
|
159
|
+
end
|
160
|
+
|
161
|
+
new_resource.privilege.each do |privilege|
|
162
|
+
accounts = Chef::ReservedNames::Win32::Security.get_account_with_user_rights(privilege)
|
163
|
+
|
164
|
+
# comparing the existing accounts for privilege with users
|
165
|
+
unless users == accounts
|
166
|
+
# Removing only accounts which is not matching with users in new_resource
|
167
|
+
(accounts - users).each do |account|
|
168
|
+
converge_by("removing user '#{account}' from privilege #{privilege}") do
|
169
|
+
Chef::ReservedNames::Win32::Security.remove_account_right(account, privilege)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
# Adding only users which is not already exist
|
174
|
+
(users - accounts).each do |user|
|
175
|
+
converge_by("adding user '#{user}' to privilege #{privilege}") do
|
176
|
+
Chef::ReservedNames::Win32::Security.add_account_right(user, privilege)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
action :remove do
|
184
|
+
curr_res_privilege = current_resource.privilege
|
185
|
+
missing_res_privileges = (new_resource.privilege - curr_res_privilege)
|
186
|
+
|
187
|
+
if missing_res_privileges
|
188
|
+
Chef::Log.info("User \'#{new_resource.principal}\' for Privilege: #{missing_res_privileges.join(", ")} not found. Nothing to remove.")
|
189
|
+
end
|
190
|
+
|
191
|
+
(new_resource.privilege - missing_res_privileges).each do |user_right|
|
192
|
+
converge_by("removing user #{new_resource.principal} from privilege #{user_right}") do
|
193
|
+
Chef::ReservedNames::Win32::Security.remove_account_right(new_resource.principal, user_right)
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|