chef 15.11.3-universal-mingw32 → 16.1.16-universal-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +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
@@ -0,0 +1,201 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require_relative "../resource"
|
18
|
+
require_relative "../dist"
|
19
|
+
|
20
|
+
class Chef
|
21
|
+
class Resource
|
22
|
+
class ChefClientScheduledTask < Chef::Resource
|
23
|
+
unified_mode true
|
24
|
+
|
25
|
+
provides :chef_client_scheduled_task
|
26
|
+
|
27
|
+
description "Use the **chef_client_scheduled_task** resource to setup the #{Chef::Dist::PRODUCT} to run as a Windows scheduled task. This resource will also create the specified log directory if it doesn't already exist."
|
28
|
+
introduced "16.0"
|
29
|
+
examples <<~DOC
|
30
|
+
**Setup #{Chef::Dist::PRODUCT} to run using the default 30 minute cadence**:
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
chef_client_scheduled_task "Run #{Chef::Dist::PRODUCT} as a scheduled task"
|
34
|
+
```
|
35
|
+
|
36
|
+
**Run #{Chef::Dist::PRODUCT} on system start**:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
chef_client_scheduled_task '#{Chef::Dist::PRODUCT} on start' do
|
40
|
+
frequency 'onstart'
|
41
|
+
end
|
42
|
+
```
|
43
|
+
|
44
|
+
**Run #{Chef::Dist::PRODUCT} with extra options passed to the client**:
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
chef_client_scheduled_task "Run an override recipe" do
|
48
|
+
daemon_options ["--override-runlist mycorp_base::default"]
|
49
|
+
end
|
50
|
+
```
|
51
|
+
DOC
|
52
|
+
|
53
|
+
resource_name :chef_client_scheduled_task
|
54
|
+
|
55
|
+
property :task_name, String,
|
56
|
+
description: "The name of the scheduled task to create.",
|
57
|
+
default: Chef::Dist::CLIENT
|
58
|
+
|
59
|
+
property :user, String,
|
60
|
+
description: "The name of the user that #{Chef::Dist::PRODUCT} runs as.",
|
61
|
+
default: "System", sensitive: true
|
62
|
+
|
63
|
+
property :password, String, sensitive: true,
|
64
|
+
description: "The password for the user that #{Chef::Dist::PRODUCT} runs as."
|
65
|
+
|
66
|
+
property :frequency, String,
|
67
|
+
description: "Frequency with which to run the task.",
|
68
|
+
default: "minute",
|
69
|
+
equal_to: %w{minute hourly daily monthly once on_logon onstart on_idle}
|
70
|
+
|
71
|
+
property :frequency_modifier, [Integer, String],
|
72
|
+
coerce: proc { |x| Integer(x) },
|
73
|
+
callbacks: { "should be a positive number" => proc { |v| v > 0 } },
|
74
|
+
description: "Numeric value to go with the scheduled task frequency",
|
75
|
+
default: 30
|
76
|
+
|
77
|
+
property :accept_chef_license, [true, false],
|
78
|
+
description: "Accept the Chef Online Master License and Services Agreement. See <https://www.chef.io/online-master-agreement/>",
|
79
|
+
default: false
|
80
|
+
|
81
|
+
property :start_date, String,
|
82
|
+
description: "The start date for the task in m:d:Y format (ex: 12/17/2020).",
|
83
|
+
regex: [%r{^[0-1][0-9]\/[0-3][0-9]\/\d{4}$}]
|
84
|
+
|
85
|
+
property :start_time, String,
|
86
|
+
description: "The start time for the task in HH:mm format (ex: 14:00). If the frequency is minute default start time will be Time.now plus the frequency_modifier number of minutes.",
|
87
|
+
regex: [/^\d{2}:\d{2}$/]
|
88
|
+
|
89
|
+
property :splay, [Integer, String],
|
90
|
+
coerce: proc { |x| Integer(x) },
|
91
|
+
callbacks: { "should be a positive number" => proc { |v| v > 0 } },
|
92
|
+
description: "A random number of seconds between 0 and X to add to interval so that all #{Chef::Dist::CLIENT} commands don't execute at the same time.",
|
93
|
+
default: 300
|
94
|
+
|
95
|
+
property :run_on_battery, [true, false],
|
96
|
+
description: "Run the #{Chef::Dist::PRODUCT} task when the system is on batteries.",
|
97
|
+
default: true
|
98
|
+
|
99
|
+
property :config_directory, String,
|
100
|
+
description: "The path of the config directory.",
|
101
|
+
default: Chef::Dist::CONF_DIR
|
102
|
+
|
103
|
+
property :log_directory, String,
|
104
|
+
description: "The path of the directory to create the log file in.",
|
105
|
+
default: lazy { |r| "#{r.config_directory}/log" },
|
106
|
+
default_description: "CONFIG_DIRECTORY/log"
|
107
|
+
|
108
|
+
property :log_file_name, String,
|
109
|
+
description: "The name of the log file to use.",
|
110
|
+
default: "client.log"
|
111
|
+
|
112
|
+
property :chef_binary_path, String,
|
113
|
+
description: "The path to the #{Chef::Dist::CLIENT} binary.",
|
114
|
+
default: "C:/#{Chef::Dist::LEGACY_CONF_DIR}/#{Chef::Dist::DIR_SUFFIX}/bin/#{Chef::Dist::CLIENT}"
|
115
|
+
|
116
|
+
property :daemon_options, Array,
|
117
|
+
description: "An array of options to pass to the #{Chef::Dist::CLIENT} command.",
|
118
|
+
default: lazy { [] }
|
119
|
+
|
120
|
+
action :add do
|
121
|
+
# TODO: Replace this with a :create_if_missing action on directory when that exists
|
122
|
+
unless Dir.exist?(new_resource.log_directory)
|
123
|
+
directory new_resource.log_directory do
|
124
|
+
inherits true
|
125
|
+
recursive true
|
126
|
+
action :create
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
# According to https://docs.microsoft.com/en-us/windows/desktop/taskschd/schtasks,
|
131
|
+
# the :once, :onstart, :onlogon, and :onidle schedules don't accept schedule modifiers
|
132
|
+
windows_task new_resource.task_name do
|
133
|
+
run_level :highest
|
134
|
+
command full_command
|
135
|
+
user new_resource.user
|
136
|
+
password new_resource.password
|
137
|
+
frequency new_resource.frequency.to_sym
|
138
|
+
frequency_modifier new_resource.frequency_modifier if frequency_supports_frequency_modifier?
|
139
|
+
start_time new_resource.start_time
|
140
|
+
start_day new_resource.start_date unless new_resource.start_date.nil?
|
141
|
+
random_delay new_resource.splay if frequency_supports_random_delay?
|
142
|
+
disallow_start_if_on_batteries new_resource.splay unless new_resource.run_on_battery
|
143
|
+
action %i{create enable}
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
action :remove do
|
148
|
+
windows_task new_resource.task_name do
|
149
|
+
action :delete
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
action_class do
|
154
|
+
#
|
155
|
+
# The full command to run in the scheduled task
|
156
|
+
#
|
157
|
+
# @return [String]
|
158
|
+
#
|
159
|
+
def full_command
|
160
|
+
# Fetch path of cmd.exe through environment variable comspec
|
161
|
+
cmd_path = ENV["COMSPEC"]
|
162
|
+
|
163
|
+
"#{cmd_path} /c \'#{client_cmd}\'"
|
164
|
+
end
|
165
|
+
|
166
|
+
# Build command line to pass to cmd.exe
|
167
|
+
#
|
168
|
+
# @return [String]
|
169
|
+
def client_cmd
|
170
|
+
cmd = new_resource.chef_binary_path.dup
|
171
|
+
cmd << " -L #{::File.join(new_resource.log_directory, new_resource.log_file_name)}"
|
172
|
+
cmd << " -c #{::File.join(new_resource.config_directory, "client.rb")}"
|
173
|
+
|
174
|
+
# Add custom options
|
175
|
+
cmd << " #{new_resource.daemon_options.join(" ")}" if new_resource.daemon_options.any?
|
176
|
+
cmd << " --chef-license accept" if new_resource.accept_chef_license
|
177
|
+
cmd
|
178
|
+
end
|
179
|
+
|
180
|
+
#
|
181
|
+
# not all frequencies in the windows_task resource support random_delay
|
182
|
+
#
|
183
|
+
# @return [boolean]
|
184
|
+
#
|
185
|
+
def frequency_supports_random_delay?
|
186
|
+
%w{once minute hourly daily weekly monthly}.include?(new_resource.frequency)
|
187
|
+
end
|
188
|
+
|
189
|
+
#
|
190
|
+
# not all frequencies in the windows_task resource support frequency_modifier
|
191
|
+
#
|
192
|
+
# @return [boolean]
|
193
|
+
#
|
194
|
+
def frequency_supports_frequency_modifier?
|
195
|
+
# these are the only ones that don't
|
196
|
+
!%w{once on_logon onstart on_idle}.include?(new_resource.frequency)
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
@@ -0,0 +1,180 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require_relative "../resource"
|
18
|
+
require_relative "../dist"
|
19
|
+
|
20
|
+
class Chef
|
21
|
+
class Resource
|
22
|
+
class ChefClientSystemdTimer < Chef::Resource
|
23
|
+
unified_mode true
|
24
|
+
|
25
|
+
provides :chef_client_systemd_timer
|
26
|
+
|
27
|
+
description "Use the **chef_client_systemd_timer** resource to setup the #{Chef::Dist::PRODUCT} to run as a systemd timer."
|
28
|
+
introduced "16.0"
|
29
|
+
examples <<~DOC
|
30
|
+
**Setup #{Chef::Dist::PRODUCT} to run using the default 30 minute cadence**:
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
chef_client_systemd_timer "Run #{Chef::Dist::PRODUCT} as a systemd timer"
|
34
|
+
```
|
35
|
+
|
36
|
+
**Run #{Chef::Dist::PRODUCT} every 1 hour**:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
chef_client_systemd_timer "Run #{Chef::Dist::PRODUCT} every 1 hour" do
|
40
|
+
interval "1hr"
|
41
|
+
end
|
42
|
+
```
|
43
|
+
|
44
|
+
**Run #{Chef::Dist::PRODUCT} with extra options passed to the client**:
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
chef_client_systemd_timer "Run an override recipe" do
|
48
|
+
daemon_options ["--override-runlist mycorp_base::default"]
|
49
|
+
end
|
50
|
+
```
|
51
|
+
DOC
|
52
|
+
|
53
|
+
property :job_name, String,
|
54
|
+
description: "The name of the system timer to create.",
|
55
|
+
default: Chef::Dist::CLIENT
|
56
|
+
|
57
|
+
property :description, String,
|
58
|
+
description: "The description to add to the systemd timer. This will be displayed when running `systemctl status` for the timer.",
|
59
|
+
default: "#{Chef::Dist::PRODUCT} periodic execution"
|
60
|
+
|
61
|
+
property :user, String,
|
62
|
+
description: "The name of the user that #{Chef::Dist::PRODUCT} runs as.",
|
63
|
+
default: "root"
|
64
|
+
|
65
|
+
property :delay_after_boot, String,
|
66
|
+
description: "The time to wait after booting before the interval starts. This is expressed as a systemd time span such as `300seconds`, `1hr`, or `1m`. See <https://www.freedesktop.org/software/systemd/man/systemd.time.html> for a complete list of allowed time span values.",
|
67
|
+
default: "1min"
|
68
|
+
|
69
|
+
property :interval, String,
|
70
|
+
description: "The interval to wait between executions. This is expressed as a systemd time span such as `300seconds`, `1hr`, or `1m`. See <https://www.freedesktop.org/software/systemd/man/systemd.time.html> for a complete list of allowed time span values.",
|
71
|
+
default: "30min"
|
72
|
+
|
73
|
+
property :splay, String,
|
74
|
+
description: "A interval between 0 and X to add to the interval so that all #{Chef::Dist::CLIENT} commands don't execute at the same time. This is expressed as a systemd time span such as `300seconds`, `1hr`, or `1m`. See <https://www.freedesktop.org/software/systemd/man/systemd.time.html> for a complete list of allowed time span values.",
|
75
|
+
default: "5min"
|
76
|
+
|
77
|
+
property :accept_chef_license, [true, false],
|
78
|
+
description: "Accept the Chef Online Master License and Services Agreement. See <https://www.chef.io/online-master-agreement/>",
|
79
|
+
default: false
|
80
|
+
|
81
|
+
property :run_on_battery, [true, false],
|
82
|
+
description: "Run the timer for #{Chef::Dist::PRODUCT} if the system is on battery.",
|
83
|
+
default: true
|
84
|
+
|
85
|
+
property :config_directory, String,
|
86
|
+
description: "The path of the config directory.",
|
87
|
+
default: Chef::Dist::CONF_DIR
|
88
|
+
|
89
|
+
property :chef_binary_path, String,
|
90
|
+
description: "The path to the #{Chef::Dist::CLIENT} binary.",
|
91
|
+
default: "/opt/#{Chef::Dist::DIR_SUFFIX}/bin/#{Chef::Dist::CLIENT}"
|
92
|
+
|
93
|
+
property :daemon_options, Array,
|
94
|
+
description: "An array of options to pass to the #{Chef::Dist::CLIENT} command.",
|
95
|
+
default: lazy { [] }
|
96
|
+
|
97
|
+
property :environment, Hash,
|
98
|
+
description: "A Hash containing additional arbitrary environment variables under which the systemd timer will be run in the form of `({'ENV_VARIABLE' => 'VALUE'})`.",
|
99
|
+
default: lazy { {} }
|
100
|
+
|
101
|
+
action :add do
|
102
|
+
systemd_unit "#{new_resource.job_name}.service" do
|
103
|
+
content service_content
|
104
|
+
action :create
|
105
|
+
end
|
106
|
+
|
107
|
+
systemd_unit "#{new_resource.job_name}.timer" do
|
108
|
+
content timer_content
|
109
|
+
action %i{create enable start}
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
action :remove do
|
114
|
+
systemd_unit "#{new_resource.job_name}.service" do
|
115
|
+
action :remove
|
116
|
+
end
|
117
|
+
|
118
|
+
systemd_unit "#{new_resource.job_name}.timer" do
|
119
|
+
action :remove
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
action_class do
|
124
|
+
#
|
125
|
+
# The chef-client command to run in the systemd unit.
|
126
|
+
#
|
127
|
+
# @return [String]
|
128
|
+
#
|
129
|
+
def chef_client_cmd
|
130
|
+
cmd = "#{new_resource.chef_binary_path}"
|
131
|
+
cmd << " #{new_resource.daemon_options.join(" ")}" unless new_resource.daemon_options.empty?
|
132
|
+
cmd << " --chef-license accept" if new_resource.accept_chef_license
|
133
|
+
cmd << " -c #{::File.join(new_resource.config_directory, "client.rb")}"
|
134
|
+
cmd
|
135
|
+
end
|
136
|
+
|
137
|
+
#
|
138
|
+
# The timer content to pass to the systemd_unit
|
139
|
+
#
|
140
|
+
# @return [Hash]
|
141
|
+
#
|
142
|
+
def timer_content
|
143
|
+
{
|
144
|
+
"Unit" => { "Description" => new_resource.description },
|
145
|
+
"Timer" => {
|
146
|
+
"OnBootSec" => new_resource.delay_after_boot,
|
147
|
+
"OnUnitActiveSec" => new_resource.interval,
|
148
|
+
"RandomizedDelaySec" => new_resource.splay,
|
149
|
+
},
|
150
|
+
"Install" => { "WantedBy" => "timers.target" },
|
151
|
+
}
|
152
|
+
end
|
153
|
+
|
154
|
+
#
|
155
|
+
# The service content to pass to the systemd_unit
|
156
|
+
#
|
157
|
+
# @return [Hash]
|
158
|
+
#
|
159
|
+
def service_content
|
160
|
+
unit = {
|
161
|
+
"Unit" => {
|
162
|
+
"Description" => new_resource.description,
|
163
|
+
"After" => "network.target auditd.service",
|
164
|
+
},
|
165
|
+
"Service" => {
|
166
|
+
"Type" => "oneshot",
|
167
|
+
"ExecStart" => chef_client_cmd,
|
168
|
+
"SuccessExitStatus" => [3, 213, 35, 37, 41],
|
169
|
+
},
|
170
|
+
"Install" => { "WantedBy" => "multi-user.target" },
|
171
|
+
}
|
172
|
+
|
173
|
+
unit["Service"]["ConditionACPower"] = "true" unless new_resource.run_on_battery
|
174
|
+
unit["Service"]["Environment"] = new_resource.environment.collect { |k, v| "\"#{k}=#{v}\"" } unless new_resource.environment.empty?
|
175
|
+
unit
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
@@ -34,29 +34,26 @@ class Chef
|
|
34
34
|
# installed
|
35
35
|
# - Runs Gem.clear_paths after the action, ensuring that gem is aware of changes so that it can be required
|
36
36
|
# immediately after it is installed
|
37
|
+
|
38
|
+
require_relative "gem_package"
|
39
|
+
require_relative "../dist"
|
40
|
+
|
37
41
|
class ChefGem < Chef::Resource::Package::GemPackage
|
38
|
-
|
42
|
+
unified_mode true
|
43
|
+
provides :chef_gem
|
44
|
+
|
45
|
+
property :package_name, String,
|
46
|
+
description: "An optional property to set the package name if it differs from the resource block's name.",
|
47
|
+
identity: true
|
39
48
|
|
40
|
-
property :
|
41
|
-
|
49
|
+
property :version, String,
|
50
|
+
description: "The version of a package to be installed or upgraded."
|
51
|
+
|
52
|
+
property :gem_binary, default: "#{RbConfig::CONFIG["bindir"]}/gem", default_description: "The `gem` binary included with #{Chef::Dist::PRODUCT}.",
|
53
|
+
description: "The path of a gem binary to use for the installation. By default, the same version of Ruby that is used by #{Chef::Dist::PRODUCT} will be installed.",
|
42
54
|
callbacks: {
|
43
55
|
"The chef_gem resource is restricted to the current gem environment, use gem_package to install to other environments." => proc { |v| v == "#{RbConfig::CONFIG["bindir"]}/gem" },
|
44
56
|
}
|
45
|
-
property :compile_time, [TrueClass, FalseClass],
|
46
|
-
description: "Controls the phase during which a gem is installed on a node. Set to 'true' to install a gem while the resource collection is being built (the 'compile phase'). Set to 'false' to install a gem while the #{Chef::Dist::CLIENT} is configuring the node (the 'converge phase').",
|
47
|
-
default: false, desired_state: false
|
48
|
-
|
49
|
-
# force the resource to compile time if the compile time property has been set
|
50
|
-
#
|
51
|
-
# @return [void]
|
52
|
-
def after_created
|
53
|
-
if compile_time
|
54
|
-
Array(action).each do |action|
|
55
|
-
run_action(action)
|
56
|
-
end
|
57
|
-
Gem.clear_paths
|
58
|
-
end
|
59
|
-
end
|
60
57
|
end
|
61
58
|
end
|
62
59
|
end
|
@@ -21,10 +21,11 @@ require_relative "../dist"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class ChefHandler < Chef::Resource
|
24
|
-
|
24
|
+
unified_mode true
|
25
|
+
|
25
26
|
provides(:chef_handler) { true }
|
26
27
|
|
27
|
-
description "Use the chef_handler resource to install or uninstall reporting/exception handlers."
|
28
|
+
description "Use the **chef_handler** resource to install or uninstall reporting/exception handlers."
|
28
29
|
introduced "14.0"
|
29
30
|
|
30
31
|
property :class_name, String,
|
@@ -106,7 +107,7 @@ class Chef
|
|
106
107
|
end
|
107
108
|
end
|
108
109
|
|
109
|
-
# Walks down the namespace
|
110
|
+
# Walks down the namespace hierarchy to return the class object for the given class name.
|
110
111
|
# If the class is not available, NameError is thrown.
|
111
112
|
#
|
112
113
|
# @param class_full_name [String] full class name such as 'Chef::Handler::Foo' or 'MyHandler'.
|
@@ -117,7 +118,7 @@ class Chef
|
|
117
118
|
class_name = ancestors.pop
|
118
119
|
|
119
120
|
# We need to search the ancestors only for the first/uppermost namespace of the class, so we
|
120
|
-
# need to enable the #const_get inherit
|
121
|
+
# need to enable the #const_get inherit parameter only when we are searching in Kernel scope
|
121
122
|
# (see COOK-4117).
|
122
123
|
parent = ancestors.inject(Kernel) { |scope, const_name| scope.const_get(const_name, scope === Kernel) }
|
123
124
|
child = parent.const_get(class_name, parent === Kernel)
|