chef 16.18.30 → 17.10.163
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 +24 -33
- data/README.md +1 -1
- data/Rakefile +4 -4
- data/chef-universal-mingw32.gemspec +3 -3
- data/chef.gemspec +25 -30
- data/lib/chef/action_collection.rb +6 -26
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/application/base.rb +28 -3
- data/lib/chef/application/exit_code.rb +7 -21
- data/lib/chef/application.rb +3 -1
- data/lib/chef/applications.rb +0 -1
- data/lib/chef/chef_fs/command_line.rb +5 -2
- data/lib/chef/chef_fs/file_pattern.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system.rb +9 -10
- data/lib/chef/chef_fs/path_utils.rb +1 -1
- data/lib/chef/client.rb +10 -20
- data/lib/chef/compliance/default_attributes.rb +20 -7
- data/lib/chef/compliance/fetcher/automate.rb +0 -7
- data/lib/chef/compliance/input.rb +115 -0
- data/lib/chef/compliance/input_collection.rb +139 -0
- data/lib/chef/compliance/profile.rb +122 -0
- data/lib/chef/compliance/profile_collection.rb +109 -0
- data/lib/chef/compliance/reporter/automate.rb +18 -8
- data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
- data/lib/chef/compliance/reporter/cli.rb +77 -0
- data/lib/chef/compliance/reporter/compliance_enforcer.rb +5 -1
- data/lib/chef/compliance/reporter/json_file.rb +8 -1
- data/lib/chef/compliance/runner.rb +177 -37
- data/lib/chef/compliance/waiver.rb +115 -0
- data/lib/chef/compliance/waiver_collection.rb +143 -0
- data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +3 -5
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_loader.rb +2 -4
- data/lib/chef/cookbook_uploader.rb +1 -2
- data/lib/chef/cookbook_version.rb +1 -1
- data/lib/chef/data_bag_item.rb +11 -2
- data/lib/chef/data_collector.rb +0 -1
- data/lib/chef/delayed_evaluator.rb +4 -0
- data/lib/chef/deprecated.rb +6 -2
- data/lib/chef/dsl/chef_vault.rb +6 -6
- data/lib/chef/{knife/group_list.rb → dsl/compliance.rb} +11 -16
- data/lib/chef/dsl/declare_resource.rb +5 -10
- data/lib/chef/{knife/client_show.rb → dsl/reader_helpers.rb} +24 -21
- data/lib/chef/dsl/reboot_pending.rb +2 -3
- data/lib/chef/dsl/recipe.rb +4 -2
- data/lib/chef/{knife/data_bag_list.rb → dsl/render_helpers.rb} +19 -17
- data/lib/chef/dsl/secret.rb +170 -0
- data/lib/chef/dsl/toml.rb +116 -0
- data/lib/chef/dsl/universal.rb +7 -0
- data/lib/chef/dsl.rb +1 -0
- data/lib/chef/event_dispatch/base.rb +46 -3
- data/lib/chef/exceptions.rb +30 -0
- data/lib/chef/formatters/doc.rb +62 -14
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
- data/lib/chef/formatters/minimal.rb +6 -5
- data/lib/chef/group.rb +75 -0
- data/lib/chef/handler/slow_report.rb +66 -0
- data/lib/chef/handler.rb +46 -8
- data/lib/chef/http/basic_client.rb +15 -7
- data/lib/chef/http/ssl_policies.rb +3 -3
- data/lib/chef/http.rb +7 -3
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/mixin/get_source_from_package.rb +1 -1
- data/lib/chef/mixin/homebrew_user.rb +15 -5
- data/lib/chef/mixin/openssl_helper.rb +17 -13
- data/lib/chef/mixin/powershell_exec.rb +27 -7
- data/lib/chef/mixin/properties.rb +6 -0
- data/lib/chef/mixin/why_run.rb +8 -2
- data/lib/chef/node/attribute.rb +6 -4
- data/lib/chef/node/immutable_collections.rb +13 -0
- data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
- data/lib/chef/node.rb +1 -1
- data/lib/chef/org.rb +3 -2
- data/lib/chef/platform/query_helpers.rb +2 -2
- data/lib/chef/policy_builder/expand_node_object.rb +1 -2
- data/lib/chef/policy_builder/policyfile.rb +84 -46
- data/lib/chef/powershell.rb +8 -6
- data/lib/chef/property.rb +18 -0
- data/lib/chef/provider/cron.rb +7 -4
- data/lib/chef/provider/directory.rb +8 -8
- data/lib/chef/provider/execute.rb +3 -2
- data/lib/chef/provider/file.rb +5 -3
- data/lib/chef/provider/git.rb +6 -8
- data/lib/chef/provider/group/groupadd.rb +3 -3
- data/lib/chef/provider/group/groupmod.rb +3 -3
- data/lib/chef/provider/group/pw.rb +3 -3
- data/lib/chef/provider/ifconfig/debian.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +7 -7
- data/lib/chef/provider/launchd.rb +6 -6
- data/lib/chef/provider/link.rb +5 -5
- data/lib/chef/provider/lwrp_base.rb +1 -1
- data/lib/chef/provider/mount/aix.rb +3 -3
- data/lib/chef/provider/mount/linux.rb +16 -2
- data/lib/chef/provider/mount/mount.rb +6 -6
- data/lib/chef/provider/mount/windows.rb +1 -1
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/package/apt.rb +27 -1
- data/lib/chef/provider/package/chocolatey.rb +14 -1
- data/lib/chef/provider/package/deb.rb +3 -3
- data/lib/chef/provider/package/dnf/dnf_helper.py +12 -11
- data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
- data/lib/chef/provider/package/dnf.rb +1 -1
- data/lib/chef/provider/package/habitat.rb +168 -0
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/powershell.rb +13 -10
- data/lib/chef/provider/package/rubygems.rb +15 -21
- data/lib/chef/provider/package/windows.rb +2 -4
- data/lib/chef/provider/package/yum/python_helper.rb +109 -35
- data/lib/chef/provider/package/yum/yum_helper.py +42 -60
- data/lib/chef/provider/package/yum.rb +40 -16
- data/lib/chef/provider/package/zypper.rb +7 -0
- data/lib/chef/provider/package.rb +80 -49
- data/lib/chef/provider/registry_key.rb +4 -3
- data/lib/chef/provider/remote_file/http.rb +1 -1
- data/lib/chef/provider/route.rb +2 -2
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +15 -21
- data/lib/chef/provider/service/macosx.rb +4 -4
- data/lib/chef/provider/service/systemd.rb +43 -14
- data/lib/chef/provider/service/upstart.rb +2 -13
- data/lib/chef/provider/service/windows.rb +16 -16
- data/lib/chef/provider/service.rb +6 -6
- data/lib/chef/provider/subversion.rb +18 -20
- data/lib/chef/provider/support/yum_repo.erb +1 -1
- data/lib/chef/provider/support/zypper_repo.erb +4 -2
- data/lib/chef/provider/systemd_unit.rb +53 -26
- data/lib/chef/provider/template/content.rb +2 -6
- data/lib/chef/provider/template.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +1 -1
- data/lib/chef/provider/user/mac.rb +23 -26
- data/lib/chef/provider/user/pw.rb +1 -1
- data/lib/chef/provider/user/windows.rb +3 -3
- data/lib/chef/provider/user.rb +7 -3
- data/lib/chef/provider/windows_script.rb +1 -1
- data/lib/chef/provider/yum_repository.rb +27 -43
- data/lib/chef/provider/zypper_repository.rb +31 -35
- data/lib/chef/provider.rb +32 -4
- data/lib/chef/provider_resolver.rb +8 -2
- data/lib/chef/providers.rb +1 -2
- data/lib/chef/pwsh.rb +3 -2
- data/lib/chef/resource/alternatives.rb +6 -6
- data/lib/chef/resource/apt_package.rb +3 -3
- data/lib/chef/resource/apt_preference.rb +2 -2
- data/lib/chef/resource/apt_repository.rb +6 -6
- data/lib/chef/resource/apt_update.rb +5 -4
- data/lib/chef/resource/archive_file.rb +19 -17
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/build_essential.rb +2 -6
- data/lib/chef/resource/chef_client_config.rb +38 -6
- data/lib/chef/resource/chef_client_cron.rb +5 -5
- data/lib/chef/resource/chef_client_launchd.rb +7 -7
- data/lib/chef/resource/chef_client_scheduled_task.rb +61 -18
- data/lib/chef/resource/chef_client_systemd_timer.rb +6 -6
- data/lib/chef/resource/chef_client_trusted_certificate.rb +2 -2
- data/lib/chef/resource/chef_handler.rb +3 -7
- data/lib/chef/resource/chef_sleep.rb +1 -1
- data/lib/chef/resource/chef_vault_secret.rb +5 -10
- data/lib/chef/resource/chocolatey_config.rb +16 -20
- data/lib/chef/resource/chocolatey_feature.rb +3 -7
- data/lib/chef/resource/chocolatey_package.rb +3 -3
- data/lib/chef/resource/chocolatey_source.rb +28 -12
- data/lib/chef/resource/cron/_cron_shared.rb +2 -2
- data/lib/chef/resource/cron/cron.rb +75 -1
- data/lib/chef/resource/cron/cron_d.rb +5 -6
- data/lib/chef/resource/cron_access.rb +2 -4
- data/lib/chef/resource/directory.rb +1 -1
- data/lib/chef/resource/dmg_package.rb +6 -10
- data/lib/chef/resource/dnf_package.rb +4 -6
- data/lib/chef/resource/dpkg_package.rb +6 -1
- data/lib/chef/resource/dsc_resource.rb +1 -1
- data/lib/chef/resource/execute.rb +14 -12
- data/lib/chef/resource/file/verification/json.rb +50 -0
- data/lib/chef/resource/{user/dscl_user.rb → file/verification/yaml.rb} +26 -9
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/gem_package.rb +2 -1
- data/lib/chef/resource/group.rb +6 -6
- data/lib/chef/{knife/recipe_list.rb → resource/habitat/_habitat_shared.rb} +13 -17
- data/lib/chef/resource/habitat/habitat_package.rb +129 -0
- data/lib/chef/resource/habitat/habitat_sup.rb +329 -0
- data/lib/chef/resource/habitat/habitat_sup_systemd.rb +67 -0
- data/lib/chef/resource/habitat/habitat_sup_windows.rb +90 -0
- data/lib/chef/resource/habitat_config.rb +107 -0
- data/lib/chef/resource/habitat_install.rb +247 -0
- data/lib/chef/resource/habitat_service.rb +451 -0
- data/lib/chef/resource/habitat_user_toml.rb +92 -0
- data/lib/chef/resource/homebrew_cask.rb +10 -10
- data/lib/chef/resource/homebrew_package.rb +1 -1
- data/lib/chef/resource/homebrew_tap.rb +9 -16
- data/lib/chef/resource/homebrew_update.rb +2 -2
- data/lib/chef/resource/hostname.rb +68 -22
- data/lib/chef/resource/http_request.rb +1 -1
- data/lib/chef/resource/inspec_input.rb +127 -0
- data/lib/chef/resource/inspec_waiver.rb +184 -0
- data/lib/chef/resource/inspec_waiver_file_entry.rb +156 -0
- data/lib/chef/resource/kernel_module.rb +32 -18
- data/lib/chef/resource/launchd.rb +5 -8
- data/lib/chef/resource/locale.rb +7 -5
- data/lib/chef/resource/lwrp_base.rb +20 -1
- data/lib/chef/resource/macos_userdefaults.rb +54 -144
- data/lib/chef/resource/mdadm.rb +53 -7
- data/lib/chef/resource/mount.rb +2 -1
- data/lib/chef/resource/ohai_hint.rb +2 -6
- data/lib/chef/resource/openbsd_package.rb +17 -0
- data/lib/chef/resource/openssl_dhparam.rb +1 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +3 -5
- data/lib/chef/resource/openssl_ec_public_key.rb +1 -3
- data/lib/chef/resource/openssl_rsa_private_key.rb +2 -4
- data/lib/chef/resource/openssl_rsa_public_key.rb +1 -3
- data/lib/chef/resource/openssl_x509_certificate.rb +4 -7
- data/lib/chef/resource/openssl_x509_crl.rb +1 -3
- data/lib/chef/resource/openssl_x509_request.rb +1 -3
- data/lib/chef/resource/osx_profile.rb +3 -3
- data/lib/chef/resource/plist.rb +8 -8
- data/lib/chef/resource/powershell_package_source.rb +235 -73
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/reboot.rb +38 -9
- data/lib/chef/resource/registry_key.rb +36 -48
- data/lib/chef/resource/remote_directory.rb +2 -2
- data/lib/chef/resource/remote_file.rb +103 -7
- data/lib/chef/resource/rhsm_errata.rb +16 -3
- data/lib/chef/resource/rhsm_errata_level.rb +11 -6
- data/lib/chef/resource/rhsm_register.rb +42 -3
- data/lib/chef/resource/rhsm_repo.rb +17 -6
- data/lib/chef/resource/rhsm_subscription.rb +2 -6
- data/lib/chef/resource/ruby_block.rb +100 -0
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/scm/subversion.rb +1 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +4 -7
- data/lib/chef/resource/sudo.rb +8 -12
- data/lib/chef/resource/support/HabService.dll.config.erb +19 -0
- data/lib/chef/resource/support/client.erb +11 -1
- data/lib/chef/resource/support/sup.toml.erb +179 -0
- data/lib/chef/resource/swap_file.rb +2 -6
- data/lib/chef/resource/sysctl.rb +2 -6
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +3 -5
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user_ulimit.rb +2 -2
- data/lib/chef/resource/windows_ad_join.rb +2 -6
- data/lib/chef/resource/windows_audit_policy.rb +2 -2
- data/lib/chef/resource/windows_auto_run.rb +3 -6
- data/lib/chef/resource/windows_certificate.rb +235 -90
- data/lib/chef/resource/windows_defender.rb +163 -0
- data/lib/chef/resource/windows_defender_exclusion.rb +125 -0
- data/lib/chef/resource/windows_dfs_folder.rb +2 -6
- data/lib/chef/resource/windows_dfs_namespace.rb +4 -8
- data/lib/chef/resource/windows_dfs_server.rb +1 -3
- data/lib/chef/resource/windows_dns_record.rb +2 -6
- data/lib/chef/resource/windows_dns_zone.rb +2 -6
- data/lib/chef/resource/windows_env.rb +6 -5
- data/lib/chef/resource/windows_feature.rb +3 -9
- data/lib/chef/resource/windows_feature_dism.rb +3 -9
- data/lib/chef/resource/windows_feature_powershell.rb +11 -12
- data/lib/chef/resource/windows_firewall_profile.rb +4 -4
- data/lib/chef/resource/windows_firewall_rule.rb +20 -9
- data/lib/chef/resource/windows_font.rb +3 -5
- data/lib/chef/resource/windows_pagefile.rb +111 -69
- data/lib/chef/resource/windows_path.rb +4 -4
- data/lib/chef/resource/windows_printer.rb +80 -61
- data/lib/chef/resource/windows_printer_port.rb +49 -66
- data/lib/chef/resource/windows_security_policy.rb +10 -10
- data/lib/chef/resource/windows_share.rb +14 -21
- data/lib/chef/resource/windows_shortcut.rb +4 -6
- data/lib/chef/resource/windows_task.rb +44 -17
- data/lib/chef/resource/windows_uac.rb +3 -5
- data/lib/chef/resource/windows_update_settings.rb +259 -0
- data/lib/chef/resource/windows_workgroup.rb +3 -4
- data/lib/chef/resource/yum_package.rb +11 -15
- data/lib/chef/resource/zypper_package.rb +4 -4
- data/lib/chef/resource/zypper_repository.rb +28 -8
- data/lib/chef/resource.rb +24 -27
- data/lib/chef/resource_builder.rb +8 -2
- data/lib/chef/resource_inspector.rb +6 -2
- data/lib/chef/resource_reporter.rb +1 -2
- data/lib/chef/resources.rb +15 -2
- data/lib/chef/run_context/cookbook_compiler.rb +112 -28
- data/lib/chef/run_context.rb +47 -1
- data/lib/chef/run_lock.rb +2 -2
- data/lib/chef/runner.rb +1 -1
- data/lib/chef/secret_fetcher/akeyless_vault.rb +57 -0
- data/lib/chef/secret_fetcher/aws_secrets_manager.rb +65 -0
- data/lib/chef/secret_fetcher/azure_key_vault.rb +134 -0
- data/lib/chef/secret_fetcher/base.rb +76 -0
- data/lib/chef/secret_fetcher/example.rb +46 -0
- data/lib/chef/secret_fetcher/hashi_vault.rb +134 -0
- data/lib/chef/secret_fetcher.rb +60 -0
- data/lib/chef/user.rb +0 -1
- data/lib/chef/user_v1.rb +3 -4
- data/lib/chef/util/dsc/configuration_generator.rb +2 -1
- data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +1 -1
- data/lib/chef/win32/registry.rb +4 -2
- data/spec/data/archive_file/test_archive.tar.gz +0 -0
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
- data/spec/data/lwrp/resources/bar.rb +2 -0
- data/spec/data/lwrp/resources/buck_passer.rb +1 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
- data/spec/data/lwrp/resources/foo.rb +2 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
- data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
- data/spec/data/lwrp_override/resources/foo.rb +1 -0
- data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
- data/spec/data/rubygems.org/sexp_processor-info +49 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/trusted_certs/example.crt +29 -20
- data/spec/data/trusted_certs/example_no_cn.crt +30 -34
- data/spec/data/trusted_certs/opscode.pem +33 -54
- data/spec/functional/assets/yumrepo/repodata/01a3b-filelists.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/401dc-filelists.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/5dc1e-primary.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/6bf96-other.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/7c365-other.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/dabe2-primary.xml.gz +0 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +3 -3
- data/spec/functional/dsl/registry_helper_spec.rb +2 -2
- data/spec/functional/mixin/from_file_spec.rb +1 -1
- data/spec/functional/resource/aixinit_service_spec.rb +7 -7
- data/spec/functional/resource/apt_package_spec.rb +1 -1
- data/spec/functional/resource/archive_file_spec.rb +88 -0
- data/spec/functional/resource/chocolatey_package_spec.rb +41 -20
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/dnf_package_spec.rb +997 -645
- data/spec/functional/resource/dpkg_package_spec.rb +16 -0
- data/spec/functional/resource/dsc_script_spec.rb +5 -5
- data/spec/functional/resource/group_spec.rb +39 -19
- data/spec/functional/resource/link_spec.rb +1 -1
- data/spec/functional/resource/macos_userdefaults_spec.rb +139 -0
- data/spec/functional/resource/powershell_package_source_spec.rb +5 -6
- data/spec/functional/resource/registry_spec.rb +89 -89
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/template_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +122 -37
- data/spec/functional/resource/windows_env_spec.rb +2 -2
- data/spec/functional/resource/windows_font_spec.rb +1 -2
- data/spec/functional/resource/windows_hostname_spec.rb +91 -0
- data/spec/functional/resource/windows_pagefile_spec.rb +125 -0
- data/spec/functional/resource/yum_package_spec.rb +1197 -451
- data/spec/functional/resource/zypper_package_spec.rb +17 -0
- data/spec/functional/shell_spec.rb +1 -0
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +12 -9
- data/spec/integration/client/client_spec.rb +37 -23
- data/spec/integration/client/exit_code_spec.rb +1 -1
- data/spec/integration/client/fips_spec.rb +9 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/client/open_ssl_spec.rb +20 -0
- data/spec/integration/compliance/compliance_spec.rb +62 -1
- data/spec/integration/ohai/ohai_spec.rb +7 -6
- data/spec/integration/recipes/accumulator_spec.rb +13 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
- data/spec/integration/recipes/lwrp_spec.rb +3 -1
- data/spec/integration/recipes/notifies_spec.rb +15 -1
- data/spec/integration/recipes/notifying_block_spec.rb +2 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +10 -10
- data/spec/integration/recipes/resource_action_spec.rb +6 -6
- data/spec/integration/recipes/unified_mode_spec.rb +71 -1
- data/spec/integration/recipes/use_partial_spec.rb +4 -1
- data/spec/spec_helper.rb +20 -18
- data/spec/support/chef_helpers.rb +1 -17
- data/spec/support/lib/chef/resource/with_state.rb +0 -1
- data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
- data/spec/support/lib/chef/resource/zen_master.rb +0 -1
- data/spec/support/matchers/leak.rb +7 -9
- data/spec/support/platform_helpers.rb +14 -13
- data/spec/support/ruby_installer.rb +51 -0
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +2 -2
- data/spec/support/shared/functional/http.rb +9 -9
- data/spec/support/shared/integration/integration_helper.rb +0 -1
- data/spec/support/shared/unit/provider/file.rb +3 -9
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +1 -1
- data/spec/support/shared/unit/script_resource.rb +2 -2
- data/spec/unit/application/base_spec.rb +40 -0
- data/spec/unit/application/solo_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +1 -1
- data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
- data/spec/unit/chef_fs/file_system_spec.rb +1 -1
- data/spec/unit/client_spec.rb +0 -16
- data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
- data/spec/unit/compliance/input_spec.rb +104 -0
- data/spec/unit/compliance/profile_spec.rb +120 -0
- data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
- data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +21 -1
- data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +4 -3
- data/spec/unit/compliance/runner_spec.rb +137 -6
- data/spec/unit/compliance/waiver_spec.rb +104 -0
- data/spec/unit/data_bag_item_spec.rb +1 -6
- data/spec/unit/dsl/reboot_pending_spec.rb +3 -3
- data/spec/unit/dsl/registry_helper_spec.rb +7 -7
- data/spec/unit/dsl/render_helpers_spec.rb +102 -0
- data/spec/unit/dsl/secret_spec.rb +175 -0
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/formatters/doc_spec.rb +1 -1
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +1 -1
- data/spec/unit/handler_spec.rb +8 -2
- data/spec/unit/http/basic_client_spec.rb +30 -0
- data/spec/unit/http_spec.rb +8 -2
- data/spec/unit/lwrp_spec.rb +3 -3
- data/spec/unit/mixin/default_paths_spec.rb +1 -1
- data/spec/unit/mixin/homebrew_user_spec.rb +30 -7
- data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -3
- data/spec/unit/mixin/powershell_exec_spec.rb +9 -9
- data/spec/unit/mixin/powershell_out_spec.rb +2 -2
- data/spec/unit/mixin/securable_spec.rb +3 -3
- data/spec/unit/mixin/why_run_spec.rb +53 -0
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/node_spec.rb +78 -0
- data/spec/unit/org_group_spec.rb +45 -0
- data/spec/unit/platform/query_helpers_spec.rb +5 -5
- data/spec/unit/policy_builder/dynamic_spec.rb +0 -5
- data/spec/unit/policy_builder/policyfile_spec.rb +133 -55
- data/spec/unit/property_spec.rb +23 -22
- data/spec/unit/provider/apt_update_spec.rb +3 -1
- data/spec/unit/provider/cron_spec.rb +46 -1
- data/spec/unit/provider/dsc_script_spec.rb +8 -8
- data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
- data/spec/unit/provider/group/groupadd_spec.rb +1 -0
- data/spec/unit/provider/group/groupmod_spec.rb +2 -2
- data/spec/unit/provider/group/pw_spec.rb +2 -2
- data/spec/unit/provider/group/usermod_spec.rb +4 -4
- data/spec/unit/provider/group_spec.rb +1 -1
- data/spec/unit/provider/ifconfig/aix_spec.rb +14 -14
- data/spec/unit/provider/ifconfig/debian_spec.rb +1 -1
- data/spec/unit/provider/ifconfig/redhat_spec.rb +1 -1
- data/spec/unit/provider/ifconfig_spec.rb +5 -3
- data/spec/unit/provider/link_spec.rb +14 -8
- data/spec/unit/provider/mount/aix_spec.rb +1 -1
- data/spec/unit/provider/mount/linux_spec.rb +16 -3
- data/spec/unit/provider/package/apt_spec.rb +84 -18
- data/spec/unit/provider/package/bff_spec.rb +1 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +20 -3
- data/spec/unit/provider/package/deb_spec.rb +3 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
- data/spec/unit/provider/package/powershell_spec.rb +114 -114
- data/spec/unit/provider/package/rubygems_spec.rb +27 -36
- data/spec/unit/provider/package/solaris_spec.rb +1 -0
- data/spec/unit/provider/package/windows_spec.rb +1 -1
- data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
- data/spec/unit/provider/registry_key_spec.rb +4 -4
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +3 -3
- data/spec/unit/provider/remote_file/http_spec.rb +10 -0
- data/spec/unit/provider/service/arch_service_spec.rb +3 -2
- data/spec/unit/provider/service/debian_service_spec.rb +2 -0
- data/spec/unit/provider/service/gentoo_service_spec.rb +3 -2
- data/spec/unit/provider/service/macosx_spec.rb +3 -2
- data/spec/unit/provider/service/redhat_spec.rb +4 -1
- data/spec/unit/provider/service/simple_service_spec.rb +6 -4
- data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -32
- data/spec/unit/provider/service/windows_spec.rb +7 -7
- data/spec/unit/provider/subversion_spec.rb +6 -6
- data/spec/unit/provider/systemd_unit_spec.rb +79 -60
- data/spec/unit/provider/template_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +55 -0
- data/spec/unit/provider/user/solaris_spec.rb +1 -1
- data/spec/unit/provider/user_spec.rb +2 -0
- data/spec/unit/provider/windows_env_spec.rb +1 -1
- data/spec/unit/provider/zypper_repository_spec.rb +6 -13
- data/spec/unit/provider_spec.rb +23 -8
- data/spec/unit/resource/archive_file_spec.rb +400 -2
- data/spec/unit/resource/chef_client_config_spec.rb +8 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +69 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +1 -1
- data/spec/unit/resource/chocolatey_config_spec.rb +1 -1
- data/spec/unit/resource/chocolatey_feature_spec.rb +1 -1
- data/spec/unit/resource/chocolatey_source_spec.rb +1 -1
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/dpkg_package_spec.rb +12 -0
- data/spec/unit/resource/file/verification/json_spec.rb +72 -0
- data/spec/unit/resource/file/verification/yaml_spec.rb +67 -0
- data/spec/unit/resource/inspec_input_spec.rb +300 -0
- data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
- data/spec/unit/resource/inspec_waiver_spec.rb +312 -0
- data/spec/unit/resource/kernel_module_spec.rb +2 -1
- data/spec/unit/resource/macos_user_defaults_spec.rb +36 -96
- data/spec/unit/resource/powershell_package_source_spec.rb +63 -62
- data/spec/unit/resource/powershell_script_spec.rb +2 -2
- data/spec/unit/resource/registry_key_spec.rb +10 -10
- data/spec/unit/resource/rhsm_register_spec.rb +42 -0
- data/spec/unit/resource/windows_auto_run_spec.rb +1 -1
- data/spec/unit/resource/windows_defender_exclusion_spec.rb +62 -0
- data/spec/unit/resource/windows_defender_spec.rb +71 -0
- data/spec/unit/resource/windows_feature_powershell_spec.rb +1 -1
- data/spec/unit/resource/windows_firewall_rule_spec.rb +14 -9
- data/spec/unit/resource/windows_pagefile_spec.rb +4 -9
- data/spec/unit/resource/windows_task_spec.rb +4 -4
- data/spec/unit/resource/windows_update_settings_spec.rb +64 -0
- data/spec/unit/resource/zypper_repository_spec.rb +1 -1
- data/spec/unit/resource_reporter_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +56 -23
- data/spec/unit/run_context_spec.rb +16 -0
- data/spec/unit/secret_fetcher/akeyless_vault_spec.rb +37 -0
- data/spec/unit/secret_fetcher/aws_secrets_manager_spec.rb +70 -0
- data/spec/unit/secret_fetcher/azure_key_vault_spec.rb +149 -0
- data/spec/unit/secret_fetcher/hashi_vault_spec.rb +126 -0
- data/spec/unit/secret_fetcher_spec.rb +82 -0
- data/spec/unit/user_spec.rb +1 -1
- data/spec/unit/user_v1_spec.rb +6 -4
- data/spec/unit/util/backup_spec.rb +1 -1
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +2 -2
- data/spec/unit/win32/registry_spec.rb +3 -3
- data/tasks/rspec.rb +10 -6
- metadata +181 -532
- data/bin/knife +0 -24
- data/lib/chef/application/knife.rb +0 -234
- data/lib/chef/application/windows_service.rb +0 -338
- data/lib/chef/application/windows_service_manager.rb +0 -205
- data/lib/chef/chef_fs/knife.rb +0 -160
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
- data/lib/chef/chef_fs/parallelizer.rb +0 -102
- data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
- data/lib/chef/knife/acl_add.rb +0 -57
- data/lib/chef/knife/acl_base.rb +0 -183
- data/lib/chef/knife/acl_bulk_add.rb +0 -78
- data/lib/chef/knife/acl_bulk_remove.rb +0 -83
- data/lib/chef/knife/acl_remove.rb +0 -62
- data/lib/chef/knife/acl_show.rb +0 -56
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
- data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
- data/lib/chef/knife/bootstrap/templates/README.md +0 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
- data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
- data/lib/chef/knife/bootstrap.rb +0 -1192
- data/lib/chef/knife/client_bulk_delete.rb +0 -104
- data/lib/chef/knife/client_create.rb +0 -101
- data/lib/chef/knife/client_delete.rb +0 -62
- data/lib/chef/knife/client_edit.rb +0 -52
- data/lib/chef/knife/client_key_create.rb +0 -73
- data/lib/chef/knife/client_key_delete.rb +0 -80
- data/lib/chef/knife/client_key_edit.rb +0 -83
- data/lib/chef/knife/client_key_list.rb +0 -73
- data/lib/chef/knife/client_key_show.rb +0 -80
- data/lib/chef/knife/client_list.rb +0 -41
- data/lib/chef/knife/client_reregister.rb +0 -58
- data/lib/chef/knife/config_get.rb +0 -39
- data/lib/chef/knife/config_get_profile.rb +0 -37
- data/lib/chef/knife/config_list.rb +0 -139
- data/lib/chef/knife/config_list_profiles.rb +0 -37
- data/lib/chef/knife/config_show.rb +0 -127
- data/lib/chef/knife/config_use.rb +0 -61
- data/lib/chef/knife/config_use_profile.rb +0 -47
- data/lib/chef/knife/configure.rb +0 -150
- data/lib/chef/knife/configure_client.rb +0 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
- data/lib/chef/knife/cookbook_delete.rb +0 -151
- data/lib/chef/knife/cookbook_download.rb +0 -142
- data/lib/chef/knife/cookbook_list.rb +0 -47
- data/lib/chef/knife/cookbook_metadata.rb +0 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
- data/lib/chef/knife/cookbook_show.rb +0 -98
- data/lib/chef/knife/cookbook_upload.rb +0 -292
- data/lib/chef/knife/core/bootstrap_context.rb +0 -264
- data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
- data/lib/chef/knife/core/formatting_options.rb +0 -49
- data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
- data/lib/chef/knife/core/generic_presenter.rb +0 -232
- data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
- data/lib/chef/knife/core/node_editor.rb +0 -130
- data/lib/chef/knife/core/node_presenter.rb +0 -133
- data/lib/chef/knife/core/object_loader.rb +0 -115
- data/lib/chef/knife/core/status_presenter.rb +0 -147
- data/lib/chef/knife/core/subcommand_loader.rb +0 -203
- data/lib/chef/knife/core/text_formatter.rb +0 -85
- data/lib/chef/knife/core/ui.rb +0 -338
- data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
- data/lib/chef/knife/data_bag_create.rb +0 -81
- data/lib/chef/knife/data_bag_delete.rb +0 -49
- data/lib/chef/knife/data_bag_edit.rb +0 -74
- data/lib/chef/knife/data_bag_from_file.rb +0 -113
- data/lib/chef/knife/data_bag_secret_options.rb +0 -122
- data/lib/chef/knife/data_bag_show.rb +0 -69
- data/lib/chef/knife/delete.rb +0 -125
- data/lib/chef/knife/deps.rb +0 -156
- data/lib/chef/knife/diff.rb +0 -83
- data/lib/chef/knife/download.rb +0 -84
- data/lib/chef/knife/edit.rb +0 -88
- data/lib/chef/knife/environment_compare.rb +0 -128
- data/lib/chef/knife/environment_create.rb +0 -52
- data/lib/chef/knife/environment_delete.rb +0 -44
- data/lib/chef/knife/environment_edit.rb +0 -44
- data/lib/chef/knife/environment_from_file.rb +0 -84
- data/lib/chef/knife/environment_list.rb +0 -41
- data/lib/chef/knife/environment_show.rb +0 -47
- data/lib/chef/knife/exec.rb +0 -99
- data/lib/chef/knife/group_add.rb +0 -55
- data/lib/chef/knife/group_create.rb +0 -49
- data/lib/chef/knife/group_destroy.rb +0 -53
- data/lib/chef/knife/group_remove.rb +0 -56
- data/lib/chef/knife/group_show.rb +0 -49
- data/lib/chef/knife/key_create.rb +0 -112
- data/lib/chef/knife/key_create_base.rb +0 -50
- data/lib/chef/knife/key_delete.rb +0 -55
- data/lib/chef/knife/key_edit.rb +0 -118
- data/lib/chef/knife/key_edit_base.rb +0 -55
- data/lib/chef/knife/key_list.rb +0 -90
- data/lib/chef/knife/key_list_base.rb +0 -45
- data/lib/chef/knife/key_show.rb +0 -53
- data/lib/chef/knife/list.rb +0 -177
- data/lib/chef/knife/node_bulk_delete.rb +0 -75
- data/lib/chef/knife/node_create.rb +0 -47
- data/lib/chef/knife/node_delete.rb +0 -46
- data/lib/chef/knife/node_edit.rb +0 -70
- data/lib/chef/knife/node_environment_set.rb +0 -53
- data/lib/chef/knife/node_from_file.rb +0 -51
- data/lib/chef/knife/node_list.rb +0 -44
- data/lib/chef/knife/node_policy_set.rb +0 -79
- data/lib/chef/knife/node_run_list_add.rb +0 -104
- data/lib/chef/knife/node_run_list_remove.rb +0 -67
- data/lib/chef/knife/node_run_list_set.rb +0 -66
- data/lib/chef/knife/node_show.rb +0 -63
- data/lib/chef/knife/null.rb +0 -12
- data/lib/chef/knife/raw.rb +0 -123
- data/lib/chef/knife/rehash.rb +0 -50
- data/lib/chef/knife/role_bulk_delete.rb +0 -66
- data/lib/chef/knife/role_create.rb +0 -53
- data/lib/chef/knife/role_delete.rb +0 -46
- data/lib/chef/knife/role_edit.rb +0 -45
- data/lib/chef/knife/role_env_run_list_add.rb +0 -87
- data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_env_run_list_set.rb +0 -70
- data/lib/chef/knife/role_from_file.rb +0 -51
- data/lib/chef/knife/role_list.rb +0 -42
- data/lib/chef/knife/role_run_list_add.rb +0 -87
- data/lib/chef/knife/role_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_run_list_remove.rb +0 -56
- data/lib/chef/knife/role_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_run_list_set.rb +0 -69
- data/lib/chef/knife/role_show.rb +0 -48
- data/lib/chef/knife/search.rb +0 -194
- data/lib/chef/knife/serve.rb +0 -65
- data/lib/chef/knife/show.rb +0 -72
- data/lib/chef/knife/ssh.rb +0 -645
- data/lib/chef/knife/ssl_check.rb +0 -284
- data/lib/chef/knife/ssl_fetch.rb +0 -161
- data/lib/chef/knife/status.rb +0 -95
- data/lib/chef/knife/supermarket_download.rb +0 -121
- data/lib/chef/knife/supermarket_install.rb +0 -192
- data/lib/chef/knife/supermarket_list.rb +0 -76
- data/lib/chef/knife/supermarket_search.rb +0 -53
- data/lib/chef/knife/supermarket_share.rb +0 -166
- data/lib/chef/knife/supermarket_show.rb +0 -66
- data/lib/chef/knife/supermarket_unshare.rb +0 -61
- data/lib/chef/knife/tag_create.rb +0 -52
- data/lib/chef/knife/tag_delete.rb +0 -60
- data/lib/chef/knife/tag_list.rb +0 -47
- data/lib/chef/knife/upload.rb +0 -86
- data/lib/chef/knife/user_create.rb +0 -107
- data/lib/chef/knife/user_delete.rb +0 -44
- data/lib/chef/knife/user_dissociate.rb +0 -42
- data/lib/chef/knife/user_edit.rb +0 -52
- data/lib/chef/knife/user_invite_add.rb +0 -43
- data/lib/chef/knife/user_invite_list.rb +0 -34
- data/lib/chef/knife/user_invite_rescind.rb +0 -63
- data/lib/chef/knife/user_key_create.rb +0 -73
- data/lib/chef/knife/user_key_delete.rb +0 -80
- data/lib/chef/knife/user_key_edit.rb +0 -83
- data/lib/chef/knife/user_key_list.rb +0 -73
- data/lib/chef/knife/user_key_show.rb +0 -80
- data/lib/chef/knife/user_list.rb +0 -42
- data/lib/chef/knife/user_reregister.rb +0 -59
- data/lib/chef/knife/user_show.rb +0 -48
- data/lib/chef/knife/xargs.rb +0 -282
- data/lib/chef/knife/yaml_convert.rb +0 -91
- data/lib/chef/knife.rb +0 -665
- data/lib/chef/provider/group/suse.rb +0 -82
- data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
- data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
- data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
- data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
- data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
- data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
- data/spec/functional/knife/configure_spec.rb +0 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
- data/spec/functional/knife/exec_spec.rb +0 -55
- data/spec/functional/knife/rehash_spec.rb +0 -39
- data/spec/functional/knife/smoke_test.rb +0 -42
- data/spec/functional/knife/ssh_spec.rb +0 -352
- data/spec/functional/resource/user/dscl_spec.rb +0 -188
- data/spec/functional/resource/windows_service_spec.rb +0 -105
- data/spec/functional/win32/service_manager_spec.rb +0 -220
- data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
- data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
- data/spec/integration/knife/chefignore_spec.rb +0 -301
- data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
- data/spec/integration/knife/client_create_spec.rb +0 -70
- data/spec/integration/knife/client_delete_spec.rb +0 -64
- data/spec/integration/knife/client_key_create_spec.rb +0 -66
- data/spec/integration/knife/client_key_delete_spec.rb +0 -43
- data/spec/integration/knife/client_key_list_spec.rb +0 -61
- data/spec/integration/knife/client_key_show_spec.rb +0 -45
- data/spec/integration/knife/client_list_spec.rb +0 -49
- data/spec/integration/knife/client_show_spec.rb +0 -37
- data/spec/integration/knife/common_options_spec.rb +0 -174
- data/spec/integration/knife/config_list_spec.rb +0 -220
- data/spec/integration/knife/config_show_spec.rb +0 -192
- data/spec/integration/knife/config_use_spec.rb +0 -198
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
- data/spec/integration/knife/cookbook_download_spec.rb +0 -72
- data/spec/integration/knife/cookbook_list_spec.rb +0 -55
- data/spec/integration/knife/cookbook_show_spec.rb +0 -149
- data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
- data/spec/integration/knife/data_bag_create_spec.rb +0 -125
- data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
- data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
- data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
- data/spec/integration/knife/data_bag_list_spec.rb +0 -44
- data/spec/integration/knife/data_bag_show_spec.rb +0 -95
- data/spec/integration/knife/delete_spec.rb +0 -1018
- data/spec/integration/knife/deps_spec.rb +0 -703
- data/spec/integration/knife/diff_spec.rb +0 -605
- data/spec/integration/knife/download_spec.rb +0 -1336
- data/spec/integration/knife/environment_compare_spec.rb +0 -75
- data/spec/integration/knife/environment_create_spec.rb +0 -41
- data/spec/integration/knife/environment_delete_spec.rb +0 -37
- data/spec/integration/knife/environment_from_file_spec.rb +0 -116
- data/spec/integration/knife/environment_list_spec.rb +0 -42
- data/spec/integration/knife/environment_show_spec.rb +0 -77
- data/spec/integration/knife/list_spec.rb +0 -1060
- data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/node_create_spec.rb +0 -47
- data/spec/integration/knife/node_delete_spec.rb +0 -48
- data/spec/integration/knife/node_environment_set_spec.rb +0 -46
- data/spec/integration/knife/node_from_file_spec.rb +0 -59
- data/spec/integration/knife/node_list_spec.rb +0 -45
- data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
- data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
- data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
- data/spec/integration/knife/node_show_spec.rb +0 -36
- data/spec/integration/knife/raw_spec.rb +0 -297
- data/spec/integration/knife/redirection_spec.rb +0 -64
- data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/role_create_spec.rb +0 -41
- data/spec/integration/knife/role_delete_spec.rb +0 -48
- data/spec/integration/knife/role_from_file_spec.rb +0 -96
- data/spec/integration/knife/role_list_spec.rb +0 -45
- data/spec/integration/knife/role_show_spec.rb +0 -51
- data/spec/integration/knife/search_node_spec.rb +0 -40
- data/spec/integration/knife/serve_spec.rb +0 -92
- data/spec/integration/knife/show_spec.rb +0 -197
- data/spec/integration/knife/upload_spec.rb +0 -1616
- data/spec/support/shared/functional/win32_service.rb +0 -57
- data/spec/unit/application/knife_spec.rb +0 -241
- data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
- data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
- data/spec/unit/knife/bootstrap_spec.rb +0 -2220
- data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
- data/spec/unit/knife/client_create_spec.rb +0 -169
- data/spec/unit/knife/client_delete_spec.rb +0 -99
- data/spec/unit/knife/client_edit_spec.rb +0 -53
- data/spec/unit/knife/client_list_spec.rb +0 -34
- data/spec/unit/knife/client_reregister_spec.rb +0 -62
- data/spec/unit/knife/client_show_spec.rb +0 -52
- data/spec/unit/knife/configure_client_spec.rb +0 -81
- data/spec/unit/knife/configure_spec.rb +0 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
- data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
- data/spec/unit/knife/cookbook_download_spec.rb +0 -255
- data/spec/unit/knife/cookbook_list_spec.rb +0 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
- data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
- data/spec/unit/knife/cookbook_show_spec.rb +0 -253
- data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
- data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
- data/spec/unit/knife/core/node_editor_spec.rb +0 -211
- data/spec/unit/knife/core/object_loader_spec.rb +0 -81
- data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
- data/spec/unit/knife/core/ui_spec.rb +0 -656
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
- data/spec/unit/knife/data_bag_create_spec.rb +0 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
- data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
- data/spec/unit/knife/data_bag_show_spec.rb +0 -139
- data/spec/unit/knife/environment_compare_spec.rb +0 -112
- data/spec/unit/knife/environment_create_spec.rb +0 -91
- data/spec/unit/knife/environment_delete_spec.rb +0 -71
- data/spec/unit/knife/environment_edit_spec.rb +0 -79
- data/spec/unit/knife/environment_from_file_spec.rb +0 -90
- data/spec/unit/knife/environment_list_spec.rb +0 -54
- data/spec/unit/knife/environment_show_spec.rb +0 -52
- data/spec/unit/knife/key_create_spec.rb +0 -223
- data/spec/unit/knife/key_delete_spec.rb +0 -133
- data/spec/unit/knife/key_edit_spec.rb +0 -264
- data/spec/unit/knife/key_helper.rb +0 -74
- data/spec/unit/knife/key_list_spec.rb +0 -216
- data/spec/unit/knife/key_show_spec.rb +0 -126
- data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
- data/spec/unit/knife/node_delete_spec.rb +0 -77
- data/spec/unit/knife/node_edit_spec.rb +0 -116
- data/spec/unit/knife/node_environment_set_spec.rb +0 -61
- data/spec/unit/knife/node_from_file_spec.rb +0 -59
- data/spec/unit/knife/node_list_spec.rb +0 -62
- data/spec/unit/knife/node_policy_set_spec.rb +0 -122
- data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
- data/spec/unit/knife/node_show_spec.rb +0 -65
- data/spec/unit/knife/raw_spec.rb +0 -43
- data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
- data/spec/unit/knife/role_create_spec.rb +0 -80
- data/spec/unit/knife/role_delete_spec.rb +0 -67
- data/spec/unit/knife/role_edit_spec.rb +0 -77
- data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
- data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
- data/spec/unit/knife/role_from_file_spec.rb +0 -69
- data/spec/unit/knife/role_list_spec.rb +0 -54
- data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
- data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
- data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
- data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
- data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
- data/spec/unit/knife/role_show_spec.rb +0 -59
- data/spec/unit/knife/ssh_spec.rb +0 -403
- data/spec/unit/knife/ssl_check_spec.rb +0 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
- data/spec/unit/knife/status_spec.rb +0 -112
- data/spec/unit/knife/supermarket_download_spec.rb +0 -152
- data/spec/unit/knife/supermarket_install_spec.rb +0 -202
- data/spec/unit/knife/supermarket_list_spec.rb +0 -70
- data/spec/unit/knife/supermarket_search_spec.rb +0 -85
- data/spec/unit/knife/supermarket_share_spec.rb +0 -208
- data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
- data/spec/unit/knife/tag_create_spec.rb +0 -23
- data/spec/unit/knife/tag_delete_spec.rb +0 -25
- data/spec/unit/knife/tag_list_spec.rb +0 -23
- data/spec/unit/knife/user_create_spec.rb +0 -184
- data/spec/unit/knife/user_delete_spec.rb +0 -46
- data/spec/unit/knife/user_edit_spec.rb +0 -48
- data/spec/unit/knife/user_list_spec.rb +0 -36
- data/spec/unit/knife/user_reregister_spec.rb +0 -56
- data/spec/unit/knife/user_show_spec.rb +0 -46
- data/spec/unit/knife_spec.rb +0 -634
- data/spec/unit/provider/group/suse_spec.rb +0 -90
- data/spec/unit/provider/user/dscl_spec.rb +0 -699
- data/spec/unit/windows_service_spec.rb +0 -118
- /data/spec/functional/assets/chocolatey_feed/{test-A.1.0.nupkg → test-A.1.0.0.nupkg} +0 -0
- /data/spec/functional/assets/chocolatey_feed/{test-A.1.5.nupkg → test-A.1.5.0.nupkg} +0 -0
- /data/spec/functional/assets/chocolatey_feed/{test-A.2.0.nupkg → test-A.2.0.0.nupkg} +0 -0
- /data/spec/functional/assets/chocolatey_feed/{test-B.1.0.nupkg → test-B.1.0.0.nupkg} +0 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Sölvi Páll Ásgeirsson (<solvip@gmail.com>)
|
|
3
|
+
# Author:: Richard Lavey (richard.lavey@calastone.com)
|
|
4
|
+
# Author:: Tim Smith (tsmith@chef.io)
|
|
5
|
+
#
|
|
6
|
+
# Copyright:: 2014-2017, Sölvi Páll Ásgeirsson.
|
|
7
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
|
8
|
+
#
|
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
# you may not use this file except in compliance with the License.
|
|
11
|
+
# You may obtain a copy of the License at
|
|
12
|
+
#
|
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
#
|
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
|
|
22
|
+
require_relative "../resource"
|
|
23
|
+
class Chef
|
|
24
|
+
class Resource
|
|
25
|
+
class WindowsUpdateSettings < Chef::Resource
|
|
26
|
+
unified_mode true
|
|
27
|
+
|
|
28
|
+
provides :windows_update_settings
|
|
29
|
+
|
|
30
|
+
description "Use the **windows_update_settings** resource to manage the various Windows Update patching options."
|
|
31
|
+
introduced "17.3"
|
|
32
|
+
examples <<~DOC
|
|
33
|
+
**Set Windows Update settings**:
|
|
34
|
+
|
|
35
|
+
```ruby
|
|
36
|
+
windows_update_settings 'Settings to Configure Windows Nodes to automatically receive updates' do
|
|
37
|
+
disable_os_upgrades true
|
|
38
|
+
elevate_non_admins true
|
|
39
|
+
block_windows_update_website true
|
|
40
|
+
automatically_install_minor_updates true
|
|
41
|
+
scheduled_install_day 'Friday'
|
|
42
|
+
scheduled_install_hour 18
|
|
43
|
+
update_other_ms_products true
|
|
44
|
+
action :enable
|
|
45
|
+
end
|
|
46
|
+
```
|
|
47
|
+
DOC
|
|
48
|
+
|
|
49
|
+
# required for the alias to pass validation
|
|
50
|
+
allowed_actions :set, :enable
|
|
51
|
+
|
|
52
|
+
DAYS = %W{Everyday Monday Tuesday Wednesday Thursday Friday Saturday Sunday}.freeze
|
|
53
|
+
UPDATE_OPTIONS = {
|
|
54
|
+
notify: 2,
|
|
55
|
+
download_and_notify: 3,
|
|
56
|
+
download_and_schedule: 4,
|
|
57
|
+
local_admin_decides: 5,
|
|
58
|
+
}.freeze
|
|
59
|
+
|
|
60
|
+
# HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate
|
|
61
|
+
|
|
62
|
+
property :disable_os_upgrades, [true, false], default: false, description: "Disable OS upgrades."
|
|
63
|
+
# options: 0 - let windows update update the os - false
|
|
64
|
+
# 1 - don't let windows update update the os - true
|
|
65
|
+
|
|
66
|
+
property :elevate_non_admins, [true, false], default: true, description: "Allow normal user accounts to temporarily be elevated to install patches."
|
|
67
|
+
# options: 0 - do not elevate a user to force an install - false
|
|
68
|
+
# 1 - do elevate the logged on user to install an update - true
|
|
69
|
+
|
|
70
|
+
property :add_to_target_wsus_group, [true, false], deprecated: "As of Chef Infra Client 17.3 the `add_to_target_wsus_group` property is no longer necessary."
|
|
71
|
+
# we set this registry value now automatically if the group name is set
|
|
72
|
+
|
|
73
|
+
property :target_wsus_group_name, String, description: "Add the node to a WSUS Target Group."
|
|
74
|
+
# options: --- a string representing the name of a target group you defined on your wsus server
|
|
75
|
+
|
|
76
|
+
property :wsus_server_url, String, description: "The URL of your WSUS server if you use one."
|
|
77
|
+
# options: --- a url for your internal update server in the form of https://my.updateserver.tld:4545 or whatever
|
|
78
|
+
|
|
79
|
+
property :wsus_status_server_url, String, deprecated: "As of Chef Infra Client 17.3 the `wsus_status_server_url` no longer needs to be set."
|
|
80
|
+
# this needs to be the same as wsus_server_url so we just set that value in both places now
|
|
81
|
+
|
|
82
|
+
# HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
|
|
83
|
+
|
|
84
|
+
property :block_windows_update_website, [true, false], default: false, description: "Block accessing the Windows Update website."
|
|
85
|
+
# options: 0 - allow access to the windows update website - false
|
|
86
|
+
# 1 - do not allow access to the windows update website - true
|
|
87
|
+
|
|
88
|
+
# HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU
|
|
89
|
+
|
|
90
|
+
property :automatic_update_option, [Integer, Symbol], equal_to: UPDATE_OPTIONS.keys, coerce: proc { |x| UPDATE_OPTIONS.key(x) || x },
|
|
91
|
+
default: :download_and_schedule,
|
|
92
|
+
description: "Control what to do when updates are found. This allows you to notify, automatically download and notify to install, automatically download and schedule the install, or let the local admin decide what action to take."
|
|
93
|
+
# options: 2 - notify before download
|
|
94
|
+
# 3 - auto download and notify
|
|
95
|
+
# 4 - auto download and schedule - must also set day and time (below)
|
|
96
|
+
# 5 - allow the local admin to decide
|
|
97
|
+
|
|
98
|
+
property :automatically_install_minor_updates, [true, false], default: false, description: "Automatically install minor updates."
|
|
99
|
+
# options: 0 - do not automatically install minor updates - false
|
|
100
|
+
# 1 - of course, silently install them! - true
|
|
101
|
+
|
|
102
|
+
property :enable_detection_frequency, [true, false], default: false, description: "Used to override the OS default of how often to check for updates"
|
|
103
|
+
# do i want my nodes checking for updates at a time interval i chose?
|
|
104
|
+
# options: 0 - do not enable the option for a custom interval - false
|
|
105
|
+
# 1 - yeah, buddy, i want to set my own interval for checking for updates - true
|
|
106
|
+
|
|
107
|
+
property :custom_detection_frequency, Integer, default: 22, description: "If you decided to override the OS default detection frequency, specify your choice here. Valid choices are 0 - 22",
|
|
108
|
+
callbacks: {
|
|
109
|
+
"should be a valid detection frequency (0-22)" => lambda { |p|
|
|
110
|
+
p >= 0 && p <= 22
|
|
111
|
+
},
|
|
112
|
+
}
|
|
113
|
+
# a time period of between 0 and 22 hours to check for new updates
|
|
114
|
+
# this is a hex value - convert it from dec to hex
|
|
115
|
+
|
|
116
|
+
property :no_reboot_with_users_logged_on, [true, false], default: true, description: "Prevents the OS from rebooting while someone is on the console."
|
|
117
|
+
# options: 0 - user is notified of pending reboot in xx minutes - false/off
|
|
118
|
+
# 1 - user is notified of pending reboot but can defer - true/on
|
|
119
|
+
|
|
120
|
+
property :disable_automatic_updates, [true, false], default: false, description: "Disable Windows Update."
|
|
121
|
+
# options: 0 - enable automatic updates to the local system - false
|
|
122
|
+
# 1 - disable automatic updates - true
|
|
123
|
+
|
|
124
|
+
property :scheduled_install_day, String, equal_to: DAYS, default: DAYS.first, description: "A day of the week to tell Windows when to install updates."
|
|
125
|
+
# options: Everyday - install every day
|
|
126
|
+
# Sunday - Saturday day of the week to install, 1 == sunday
|
|
127
|
+
|
|
128
|
+
property :scheduled_install_hour, Integer, description: "If you chose a scheduled day to install, then choose an hour on that day for you installation",
|
|
129
|
+
callbacks: {
|
|
130
|
+
"should be a valid hour in a 24 hour clock" => lambda { |p|
|
|
131
|
+
p > 0 && p < 25
|
|
132
|
+
},
|
|
133
|
+
}
|
|
134
|
+
# options: --- 2-digit number representing an hour of the day, uses a 24-hour clock, 12 == noon, 24 == midnight
|
|
135
|
+
|
|
136
|
+
property :update_other_ms_products, [true, false], default: true, description: "Allows for other Microsoft products to get updates too"
|
|
137
|
+
# options: 0 - do not allow wu to update other apps - remove key from hive - false/off
|
|
138
|
+
# 1 - please update all my stuff! - true/on
|
|
139
|
+
|
|
140
|
+
# \AU\AllowMUUpdateService dword: 1
|
|
141
|
+
|
|
142
|
+
property :custom_wsus_server, [true, false], deprecated: "As of Chef Infra Client 17.3 the `custom_wsus_server` no longer needs to be setup when specifying a WSUS endpoint."
|
|
143
|
+
# not necessary as we set this registry value automatically if a URL is set
|
|
144
|
+
|
|
145
|
+
action :set, description: "Set Windows Update settings." do
|
|
146
|
+
actual_day = convert_day(new_resource.scheduled_install_day)
|
|
147
|
+
|
|
148
|
+
registry_key "HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\Windows\\WindowsUpdate" do
|
|
149
|
+
recursive true
|
|
150
|
+
values [{
|
|
151
|
+
name: "DisableOSUpgrade",
|
|
152
|
+
type: :dword,
|
|
153
|
+
data: new_resource.disable_os_upgrades ? 1 : 0,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
name: "ElevateNonAdmins",
|
|
157
|
+
type: :dword,
|
|
158
|
+
data: new_resource.elevate_non_admins ? 1 : 0,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: "TargetGroupEnabled",
|
|
162
|
+
type: :dword,
|
|
163
|
+
data: new_resource.target_wsus_group_name ? 1 : 0,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
name: "TargetGroup",
|
|
167
|
+
type: :string,
|
|
168
|
+
data: new_resource.target_wsus_group_name,
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
name: "WUServer",
|
|
172
|
+
type: :string,
|
|
173
|
+
data: new_resource.wsus_server_url,
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: "WUStatusServer",
|
|
177
|
+
type: :string,
|
|
178
|
+
data: new_resource.wsus_server_url, # status server and server need to be the same. Why? Ask Microsoft
|
|
179
|
+
}]
|
|
180
|
+
action :create
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
registry_key "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer" do
|
|
184
|
+
recursive true
|
|
185
|
+
values [{
|
|
186
|
+
name: "NoWindowsUpdate",
|
|
187
|
+
type: :dword,
|
|
188
|
+
data: new_resource.block_windows_update_website ? 1 : 0,
|
|
189
|
+
}]
|
|
190
|
+
action :create
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
registry_key "HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU" do
|
|
194
|
+
recursive true
|
|
195
|
+
values [{
|
|
196
|
+
name: "AUOptions",
|
|
197
|
+
type: :dword,
|
|
198
|
+
data: UPDATE_OPTIONS[new_resource.automatic_update_option],
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
name: "AutoInstallMinorUpdates",
|
|
202
|
+
type: :dword,
|
|
203
|
+
data: new_resource.automatically_install_minor_updates ? 1 : 0,
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
name: "DetectionFrequencyEnabled",
|
|
207
|
+
type: :dword,
|
|
208
|
+
data: new_resource.enable_detection_frequency ? 1 : 0,
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
name: "DetectionFrequency",
|
|
212
|
+
type: :dword,
|
|
213
|
+
data: new_resource.custom_detection_frequency,
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
name: "NoAutoRebootWithLoggedOnUsers",
|
|
217
|
+
type: :dword,
|
|
218
|
+
data: new_resource.no_reboot_with_users_logged_on ? 1 : 0,
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
name: "NoAutoUpdate",
|
|
222
|
+
type: :dword,
|
|
223
|
+
data: new_resource.disable_automatic_updates ? 1 : 0,
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
name: "ScheduledInstallDay",
|
|
227
|
+
type: :dword,
|
|
228
|
+
data: actual_day,
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
name: "ScheduledInstallTime",
|
|
232
|
+
type: :dword,
|
|
233
|
+
data: new_resource.scheduled_install_hour,
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
name: "AllowMUUpdateService",
|
|
237
|
+
type: :dword,
|
|
238
|
+
data: new_resource.update_other_ms_products ? 1 : 0,
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
name: "UseWUServer",
|
|
242
|
+
type: :dword,
|
|
243
|
+
data: new_resource.wsus_server_url ? 1 : 0, # if we have a URL set then want to turn on WSUS functionality
|
|
244
|
+
}]
|
|
245
|
+
action :create
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
action_class do
|
|
250
|
+
def convert_day(day)
|
|
251
|
+
DAYS.index(day)
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# support the old name as well
|
|
255
|
+
alias_method :action_enable, :action_set
|
|
256
|
+
end
|
|
257
|
+
end
|
|
258
|
+
end
|
|
259
|
+
end
|
|
@@ -30,13 +30,13 @@ class Chef
|
|
|
30
30
|
examples <<~DOC
|
|
31
31
|
**Join a workgroup**:
|
|
32
32
|
|
|
33
|
-
```
|
|
33
|
+
```ruby
|
|
34
34
|
windows_workgroup 'myworkgroup'
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
**Join a workgroup using a specific user**:
|
|
38
38
|
|
|
39
|
-
```
|
|
39
|
+
```ruby
|
|
40
40
|
windows_workgroup 'myworkgroup' do
|
|
41
41
|
user 'Administrator'
|
|
42
42
|
password 'passw0rd'
|
|
@@ -87,8 +87,7 @@ class Chef
|
|
|
87
87
|
property :sensitive, [TrueClass, FalseClass],
|
|
88
88
|
default: true, desired_state: false
|
|
89
89
|
|
|
90
|
-
action :join do
|
|
91
|
-
description "Update the workgroup."
|
|
90
|
+
action :join, description: "Update the workgroup." do
|
|
92
91
|
|
|
93
92
|
unless workgroup_member?
|
|
94
93
|
converge_by("join workstation workgroup #{new_resource.workgroup_name}") do
|
|
@@ -27,40 +27,36 @@ class Chef
|
|
|
27
27
|
provides :yum_package
|
|
28
28
|
provides :package, platform_family: "fedora_derived"
|
|
29
29
|
|
|
30
|
-
description "Use the **yum_package** resource to install, upgrade, and remove packages with Yum"
|
|
31
|
-
" for the Red Hat and CentOS platforms. The yum_package resource is able to resolve"\
|
|
32
|
-
" `provides` data for packages much like Yum can do when it is run from the command line."\
|
|
33
|
-
" This allows a variety of options for installing packages, like minimum versions,"\
|
|
34
|
-
" virtual provides, and library names."
|
|
30
|
+
description "Use the **yum_package** resource to install, upgrade, and remove packages with Yum for the Red Hat and CentOS platforms. The yum_package resource is able to resolve `provides` data for packages much like Yum can do when it is run from the command line. This allows a variety of options for installing packages, like minimum versions, virtual provides, and library names. Note: Support for using file names to install packages (as in `yum_package '/bin/sh'`) is not available because the volume of data required to parse for this is excessive."
|
|
35
31
|
examples <<~DOC
|
|
36
32
|
**Install an exact version**:
|
|
37
33
|
|
|
38
|
-
```
|
|
34
|
+
```ruby
|
|
39
35
|
yum_package 'netpbm = 10.35.58-8.el8'
|
|
40
36
|
```
|
|
41
37
|
|
|
42
38
|
**Install a minimum version**:
|
|
43
39
|
|
|
44
|
-
```
|
|
40
|
+
```ruby
|
|
45
41
|
yum_package 'netpbm >= 10.35.58-8.el8'
|
|
46
42
|
```
|
|
47
43
|
|
|
48
44
|
**Install a minimum version using the default action**:
|
|
49
45
|
|
|
50
|
-
```
|
|
46
|
+
```ruby
|
|
51
47
|
yum_package 'netpbm'
|
|
52
48
|
```
|
|
53
49
|
|
|
54
50
|
**Install a version without worrying about the exact release**:
|
|
55
51
|
|
|
56
|
-
```
|
|
52
|
+
```ruby
|
|
57
53
|
yum_package 'netpbm-10.35*'
|
|
58
54
|
```
|
|
59
55
|
|
|
60
56
|
|
|
61
57
|
**To install a package**:
|
|
62
58
|
|
|
63
|
-
```
|
|
59
|
+
```ruby
|
|
64
60
|
yum_package 'netpbm' do
|
|
65
61
|
action :install
|
|
66
62
|
end
|
|
@@ -68,13 +64,13 @@ class Chef
|
|
|
68
64
|
|
|
69
65
|
**To install a partial minimum version**:
|
|
70
66
|
|
|
71
|
-
```
|
|
67
|
+
```ruby
|
|
72
68
|
yum_package 'netpbm >= 10'
|
|
73
69
|
```
|
|
74
70
|
|
|
75
71
|
**To install a specific architecture**:
|
|
76
72
|
|
|
77
|
-
```
|
|
73
|
+
```ruby
|
|
78
74
|
yum_package 'netpbm' do
|
|
79
75
|
arch 'i386'
|
|
80
76
|
end
|
|
@@ -82,13 +78,13 @@ class Chef
|
|
|
82
78
|
|
|
83
79
|
or:
|
|
84
80
|
|
|
85
|
-
```
|
|
81
|
+
```ruby
|
|
86
82
|
yum_package 'netpbm.x86_64'
|
|
87
83
|
```
|
|
88
84
|
|
|
89
85
|
**To install a specific version-release**
|
|
90
86
|
|
|
91
|
-
```
|
|
87
|
+
```ruby
|
|
92
88
|
yum_package 'netpbm' do
|
|
93
89
|
version '10.35.58-8.el8'
|
|
94
90
|
end
|
|
@@ -101,7 +97,7 @@ class Chef
|
|
|
101
97
|
to dump the in-memory Yum cache, and then use the repository immediately
|
|
102
98
|
to ensure that the correct package is installed:
|
|
103
99
|
|
|
104
|
-
```
|
|
100
|
+
```ruby
|
|
105
101
|
cookbook_file '/etc/yum.repos.d/custom.repo' do
|
|
106
102
|
source 'custom'
|
|
107
103
|
mode '0755'
|
|
@@ -30,7 +30,7 @@ class Chef
|
|
|
30
30
|
examples <<~DOC
|
|
31
31
|
**Install a package using package manager:**
|
|
32
32
|
|
|
33
|
-
```
|
|
33
|
+
```ruby
|
|
34
34
|
zypper_package 'name of package' do
|
|
35
35
|
action :install
|
|
36
36
|
end
|
|
@@ -38,7 +38,7 @@ class Chef
|
|
|
38
38
|
|
|
39
39
|
**Install a package using local file:**
|
|
40
40
|
|
|
41
|
-
```
|
|
41
|
+
```ruby
|
|
42
42
|
zypper_package 'jwhois' do
|
|
43
43
|
action :install
|
|
44
44
|
source '/path/to/jwhois.rpm'
|
|
@@ -47,10 +47,10 @@ class Chef
|
|
|
47
47
|
|
|
48
48
|
**Install without using recommend packages as a dependency:**
|
|
49
49
|
|
|
50
|
-
```
|
|
50
|
+
```ruby
|
|
51
51
|
package 'apache2' do
|
|
52
52
|
options '--no-recommends'
|
|
53
|
-
|
|
53
|
+
end
|
|
54
54
|
```
|
|
55
55
|
DOC
|
|
56
56
|
|
|
@@ -24,21 +24,37 @@ class Chef
|
|
|
24
24
|
unified_mode true
|
|
25
25
|
|
|
26
26
|
provides(:zypper_repository) { true }
|
|
27
|
-
provides(:zypper_repo) { true }
|
|
27
|
+
provides(:zypper_repo) { true } # legacy cookbook compatibility
|
|
28
28
|
|
|
29
29
|
description "Use the **zypper_repository** resource to create Zypper package repositories on SUSE Enterprise Linux and openSUSE systems. This resource maintains full compatibility with the **zypper_repository** resource in the existing **zypper** cookbook."
|
|
30
30
|
introduced "13.3"
|
|
31
31
|
examples <<~DOC
|
|
32
32
|
**Add the Apache repo on openSUSE Leap 15**:
|
|
33
33
|
|
|
34
|
-
```
|
|
34
|
+
```ruby
|
|
35
35
|
zypper_repository 'apache' do
|
|
36
36
|
baseurl 'http://download.opensuse.org/repositories/Apache'
|
|
37
|
-
path '/openSUSE_Leap_15.
|
|
38
|
-
|
|
37
|
+
path '/openSUSE_Leap_15.2'
|
|
38
|
+
type 'rpm-md'
|
|
39
39
|
priority '100'
|
|
40
40
|
end
|
|
41
41
|
```
|
|
42
|
+
|
|
43
|
+
**Remove the repo named 'apache'**:
|
|
44
|
+
|
|
45
|
+
```ruby
|
|
46
|
+
zypper_repository 'apache' do
|
|
47
|
+
action :delete
|
|
48
|
+
end
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Refresh the repo named 'apache'**:
|
|
52
|
+
|
|
53
|
+
```ruby
|
|
54
|
+
zypper_repository 'apache' do
|
|
55
|
+
action :refresh
|
|
56
|
+
end
|
|
57
|
+
```
|
|
42
58
|
DOC
|
|
43
59
|
|
|
44
60
|
property :repo_name, String,
|
|
@@ -66,8 +82,10 @@ class Chef
|
|
|
66
82
|
description: "Determines whether or not to perform a GPG signature check on the repository.",
|
|
67
83
|
default: true
|
|
68
84
|
|
|
69
|
-
property :gpgkey, String,
|
|
70
|
-
description: "The location of the repository key to be imported."
|
|
85
|
+
property :gpgkey, [String, Array],
|
|
86
|
+
description: "The location of the repository key(s) to be imported.",
|
|
87
|
+
coerce: proc { |v| Array(v) },
|
|
88
|
+
default: []
|
|
71
89
|
|
|
72
90
|
property :baseurl, String,
|
|
73
91
|
description: "The base URL for the Zypper repository, such as `http://download.opensuse.org`."
|
|
@@ -95,10 +113,12 @@ class Chef
|
|
|
95
113
|
default: true
|
|
96
114
|
|
|
97
115
|
property :source, String,
|
|
98
|
-
description: "The name of the template for the repository file. Only necessary if you're
|
|
116
|
+
description: "The name of the template for the repository file. Only necessary if you're using a custom template for the repository file."
|
|
99
117
|
|
|
100
118
|
property :cookbook, String,
|
|
101
|
-
description: "The cookbook to source the repository template file from. Only necessary if you're
|
|
119
|
+
description: "The cookbook to source the repository template file from. Only necessary if you're using a custom template for the repository file.",
|
|
120
|
+
default: lazy { cookbook_name },
|
|
121
|
+
default_description: "The cookbook containing the resource",
|
|
102
122
|
desired_state: false
|
|
103
123
|
|
|
104
124
|
property :gpgautoimportkeys, [TrueClass, FalseClass],
|
data/lib/chef/resource.rb
CHANGED
|
@@ -42,6 +42,7 @@ require_relative "mixin/deprecation"
|
|
|
42
42
|
require_relative "mixin/properties"
|
|
43
43
|
require_relative "mixin/provides"
|
|
44
44
|
require_relative "dsl/universal"
|
|
45
|
+
require_relative "constants"
|
|
45
46
|
|
|
46
47
|
class Chef
|
|
47
48
|
class Resource
|
|
@@ -310,7 +311,7 @@ class Chef
|
|
|
310
311
|
# file '/foo.txt' do
|
|
311
312
|
# content 'hi'
|
|
312
313
|
# action :nothing
|
|
313
|
-
# subscribes :create,
|
|
314
|
+
# subscribes :create, bar
|
|
314
315
|
# end
|
|
315
316
|
# @example Multiple resources by string
|
|
316
317
|
# file '/foo.txt' do
|
|
@@ -340,6 +341,7 @@ class Chef
|
|
|
340
341
|
def subscribes(action, resources, timing = :delayed)
|
|
341
342
|
resources = [resources].flatten
|
|
342
343
|
resources.each do |resource|
|
|
344
|
+
validate_resource_spec!(resource)
|
|
343
345
|
if resource.is_a?(String)
|
|
344
346
|
resource = UnresolvedSubscribes.new(resource, run_context)
|
|
345
347
|
end
|
|
@@ -453,7 +455,7 @@ class Chef
|
|
|
453
455
|
# @param arg [String] The umask to apply while converging the resource.
|
|
454
456
|
# @return [Boolean] The umask to apply while converging the resource.
|
|
455
457
|
#
|
|
456
|
-
property :umask, String,
|
|
458
|
+
property :umask, [String, Integer],
|
|
457
459
|
desired_state: false,
|
|
458
460
|
introduced: "16.2",
|
|
459
461
|
description: "Set a umask to be used for the duration of converging the resource. Defaults to `nil`, which means to use the system umask. Unsupported on Windows because Windows lacks a direct equivalent to UNIX's umask."
|
|
@@ -658,7 +660,8 @@ class Chef
|
|
|
658
660
|
text << "#{resource_name}(\"#{name}\") do\n"
|
|
659
661
|
|
|
660
662
|
all_props = {}
|
|
661
|
-
|
|
663
|
+
|
|
664
|
+
self.class.sensitive_properties.map do |p|
|
|
662
665
|
|
|
663
666
|
all_props[p.name.to_s] = p.sensitive? ? '"*sensitive value suppressed*"' : value_to_text(p.get(self))
|
|
664
667
|
rescue Chef::Exceptions::ValidationFailed
|
|
@@ -1062,7 +1065,8 @@ class Chef
|
|
|
1062
1065
|
# action for the resource.
|
|
1063
1066
|
#
|
|
1064
1067
|
# @param name [Symbol] The action name to define.
|
|
1065
|
-
# @param description [String] optional description for the action
|
|
1068
|
+
# @param description [String] optional description for the action. Used for
|
|
1069
|
+
# documentation generation.
|
|
1066
1070
|
# @param recipe_block The recipe to run when the action is taken. This block
|
|
1067
1071
|
# takes no parameters, and will be evaluated in a new context containing:
|
|
1068
1072
|
#
|
|
@@ -1075,11 +1079,8 @@ class Chef
|
|
|
1075
1079
|
def self.action(action, description: nil, &recipe_block)
|
|
1076
1080
|
action = action.to_sym
|
|
1077
1081
|
declare_action_class
|
|
1078
|
-
action_class.action(action, &recipe_block)
|
|
1082
|
+
action_class.action(action, description: description, &recipe_block)
|
|
1079
1083
|
self.allowed_actions += [ action ]
|
|
1080
|
-
# Accept any non-nil description, which will correctly override
|
|
1081
|
-
# any specific inherited description.
|
|
1082
|
-
action_descriptions[action] = description unless description.nil?
|
|
1083
1084
|
default_action action if Array(default_action) == [:nothing]
|
|
1084
1085
|
end
|
|
1085
1086
|
|
|
@@ -1089,18 +1090,15 @@ class Chef
|
|
|
1089
1090
|
# @param action [Symbol,String] the action name
|
|
1090
1091
|
# @return the description of the action provided, or nil if no description
|
|
1091
1092
|
# was defined
|
|
1092
|
-
def
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
def self.action_descriptions
|
|
1102
|
-
@action_descriptions ||=
|
|
1103
|
-
superclass.respond_to?(:action_descriptions) ? superclass.action_descriptions.dup : { nothing: nil }
|
|
1093
|
+
def action_description(action)
|
|
1094
|
+
provider_for_action(action).class.action_description(action)
|
|
1095
|
+
rescue Chef::Exceptions::ProviderNotFound
|
|
1096
|
+
# If a provider can't be found, there can be no description defined on the provider.
|
|
1097
|
+
nil
|
|
1098
|
+
rescue NameError => e
|
|
1099
|
+
# This can happen when attempting to load a provider in a platform-specific
|
|
1100
|
+
# environment where we have not required the necessary files yet
|
|
1101
|
+
raise unless /uninitialized constant/.match?(e.message)
|
|
1104
1102
|
end
|
|
1105
1103
|
|
|
1106
1104
|
# Define a method to load up this resource's properties with the current
|
|
@@ -1190,6 +1188,7 @@ class Chef
|
|
|
1190
1188
|
if superclass.custom_resource?
|
|
1191
1189
|
superclass.action_class
|
|
1192
1190
|
else
|
|
1191
|
+
|
|
1193
1192
|
ActionClass
|
|
1194
1193
|
end
|
|
1195
1194
|
|
|
@@ -1362,8 +1361,9 @@ class Chef
|
|
|
1362
1361
|
#
|
|
1363
1362
|
# @param arg [String] version constraint to match against (e.g. "> 14")
|
|
1364
1363
|
#
|
|
1365
|
-
def self.chef_version_for_provides(constraint)
|
|
1366
|
-
@chef_version_for_provides = constraint
|
|
1364
|
+
def self.chef_version_for_provides(constraint = NOT_PASSED)
|
|
1365
|
+
@chef_version_for_provides = constraint unless constraint == NOT_PASSED
|
|
1366
|
+
@chef_version_for_provides ||= nil
|
|
1367
1367
|
end
|
|
1368
1368
|
|
|
1369
1369
|
# Mark this resource as providing particular DSL.
|
|
@@ -1376,14 +1376,11 @@ class Chef
|
|
|
1376
1376
|
def self.provides(name, **options, &block)
|
|
1377
1377
|
name = name.to_sym
|
|
1378
1378
|
|
|
1379
|
-
# quell warnings
|
|
1380
|
-
@chef_version_for_provides = nil unless defined?(@chef_version_for_provides)
|
|
1381
|
-
|
|
1382
1379
|
# deliberately do not go through the accessor here
|
|
1383
1380
|
@resource_name = name if resource_name.nil?
|
|
1384
1381
|
|
|
1385
|
-
if
|
|
1386
|
-
options[:chef_version] =
|
|
1382
|
+
if chef_version_for_provides && !options.include?(:chef_version)
|
|
1383
|
+
options[:chef_version] = chef_version_for_provides
|
|
1387
1384
|
end
|
|
1388
1385
|
|
|
1389
1386
|
result = Chef.resource_handler_map.set(name, self, **options, &block)
|
|
@@ -29,9 +29,10 @@ class Chef
|
|
|
29
29
|
attr_reader :recipe_name
|
|
30
30
|
attr_reader :enclosing_provider
|
|
31
31
|
attr_reader :resource
|
|
32
|
+
attr_reader :new_resource
|
|
32
33
|
|
|
33
34
|
# FIXME (ruby-2.1 syntax): most of these are mandatory
|
|
34
|
-
def initialize(type: nil, name: nil, created_at: nil, params: nil, run_context: nil, cookbook_name: nil, recipe_name: nil, enclosing_provider: nil)
|
|
35
|
+
def initialize(type: nil, name: nil, created_at: nil, params: nil, run_context: nil, cookbook_name: nil, recipe_name: nil, enclosing_provider: nil, new_resource: nil)
|
|
35
36
|
@type = type
|
|
36
37
|
@name = name
|
|
37
38
|
@created_at = created_at
|
|
@@ -40,6 +41,7 @@ class Chef
|
|
|
40
41
|
@cookbook_name = cookbook_name
|
|
41
42
|
@recipe_name = recipe_name
|
|
42
43
|
@enclosing_provider = enclosing_provider
|
|
44
|
+
@new_resource = new_resource
|
|
43
45
|
end
|
|
44
46
|
|
|
45
47
|
def build(&block)
|
|
@@ -64,7 +66,11 @@ class Chef
|
|
|
64
66
|
if block_given?
|
|
65
67
|
resource.resource_initializing = true
|
|
66
68
|
begin
|
|
67
|
-
|
|
69
|
+
if new_resource.nil?
|
|
70
|
+
resource.instance_exec(&block)
|
|
71
|
+
else
|
|
72
|
+
resource.instance_exec(new_resource, &block)
|
|
73
|
+
end
|
|
68
74
|
ensure
|
|
69
75
|
resource.resource_initializing = false
|
|
70
76
|
end
|
|
@@ -23,6 +23,11 @@ require_relative "node"
|
|
|
23
23
|
require_relative "resources"
|
|
24
24
|
require_relative "json_compat"
|
|
25
25
|
|
|
26
|
+
# We need to require providers so that we can resolve
|
|
27
|
+
# action documentation that may have been defined on the providers
|
|
28
|
+
# instead of the resources.
|
|
29
|
+
require_relative "providers"
|
|
30
|
+
|
|
26
31
|
class Chef
|
|
27
32
|
module ResourceInspector
|
|
28
33
|
def self.get_default(default)
|
|
@@ -39,11 +44,10 @@ class Chef
|
|
|
39
44
|
def self.extract_resource(resource, complete = false)
|
|
40
45
|
data = {}
|
|
41
46
|
data[:description] = resource.description
|
|
42
|
-
# data[:deprecated] = resource.deprecated || false
|
|
43
47
|
data[:default_action] = resource.default_action
|
|
44
48
|
data[:actions] = {}
|
|
45
49
|
resource.allowed_actions.each do |action|
|
|
46
|
-
data[:actions][action] = resource.action_description(action)
|
|
50
|
+
data[:actions][action] = resource.new(resource.to_s, nil).action_description(action)
|
|
47
51
|
end
|
|
48
52
|
|
|
49
53
|
data[:examples] = resource.examples
|
|
@@ -34,7 +34,7 @@ class Chef
|
|
|
34
34
|
as_hash["after"] = new_resource.state_for_resource_reporter
|
|
35
35
|
as_hash["before"] = current_resource ? current_resource.state_for_resource_reporter : {}
|
|
36
36
|
as_hash["duration"] = ( action_record.elapsed_time * 1000 ).to_i.to_s
|
|
37
|
-
as_hash["delta"] = new_resource.diff if new_resource.respond_to?(
|
|
37
|
+
as_hash["delta"] = new_resource.diff if new_resource.respond_to?(:diff)
|
|
38
38
|
as_hash["delta"] = "" if as_hash["delta"].nil?
|
|
39
39
|
|
|
40
40
|
# TODO: rename as "action"
|
|
@@ -135,7 +135,6 @@ class Chef
|
|
|
135
135
|
|
|
136
136
|
def action_collection_registration(action_collection)
|
|
137
137
|
@action_collection = action_collection
|
|
138
|
-
action_collection.register(self) if reporting_enabled?
|
|
139
138
|
end
|
|
140
139
|
|
|
141
140
|
def post_reporting_data
|