chef 15.11.3-universal-mingw32 → 16.1.16-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -7
- data/README.md +1 -1
- data/Rakefile +44 -16
- data/chef.gemspec +6 -4
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/action_collection.rb +16 -5
- data/lib/chef/application.rb +33 -54
- data/lib/chef/application/apply.rb +18 -1
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +3 -3
- data/lib/chef/client.rb +16 -14
- data/lib/chef/config.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +45 -22
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +38 -3
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/digester.rb +4 -4
- data/lib/chef/dist.rb +8 -0
- data/lib/chef/dsl/chef_vault.rb +84 -0
- data/lib/chef/dsl/declare_resource.rb +7 -5
- data/lib/chef/dsl/platform_introspection.rb +3 -2
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -1
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -4
- data/lib/chef/knife/acl_add.rb +57 -0
- data/lib/chef/knife/acl_base.rb +183 -0
- data/lib/chef/knife/acl_bulk_add.rb +78 -0
- data/lib/chef/knife/acl_bulk_remove.rb +83 -0
- data/lib/chef/knife/acl_remove.rb +62 -0
- data/lib/chef/knife/acl_show.rb +56 -0
- data/lib/chef/knife/bootstrap.rb +84 -90
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
- data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- data/lib/chef/knife/core/node_presenter.rb +2 -2
- data/lib/chef/knife/core/status_presenter.rb +5 -5
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +17 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- data/lib/chef/knife/group_add.rb +55 -0
- data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
- data/lib/chef/knife/group_destroy.rb +53 -0
- data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
- data/lib/chef/knife/group_remove.rb +56 -0
- data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
- data/lib/chef/knife/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -31
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +2 -3
- data/lib/chef/knife/supermarket_list.rb +1 -2
- data/lib/chef/knife/supermarket_search.rb +1 -2
- data/lib/chef/knife/supermarket_share.rb +1 -2
- data/lib/chef/knife/supermarket_show.rb +1 -2
- data/lib/chef/knife/supermarket_unshare.rb +1 -2
- data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
- data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
- data/lib/chef/knife/user_invite_list.rb +34 -0
- data/lib/chef/knife/user_invite_rescind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +16 -2
- data/lib/chef/mixin/shell_out.rb +1 -5
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/immutablize_array.rb +4 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/node_map.rb +5 -31
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +24 -6
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +3 -9
- data/lib/chef/provider/file.rb +6 -6
- data/lib/chef/provider/git.rb +84 -27
- data/lib/chef/provider/group.rb +4 -4
- data/lib/chef/provider/http_request.rb +6 -6
- data/lib/chef/provider/ifconfig.rb +4 -4
- data/lib/chef/provider/launchd.rb +45 -64
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +5 -6
- data/lib/chef/provider/package/chocolatey.rb +1 -3
- data/lib/chef/provider/package/dnf.rb +66 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
- data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
- data/lib/chef/provider/package/dnf/version.rb +5 -1
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/freebsd/base.rb +2 -1
- data/lib/chef/provider/package/homebrew.rb +107 -43
- data/lib/chef/provider/package/macports.rb +0 -2
- data/lib/chef/provider/package/msu.rb +4 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/portage.rb +1 -0
- data/lib/chef/provider/package/powershell.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +30 -3
- data/lib/chef/provider/package/windows.rb +29 -53
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +1 -9
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +5 -11
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +5 -5
- data/lib/chef/provider/remote_file/ftp.rb +3 -2
- data/lib/chef/provider/remote_file/local_file.rb +2 -1
- data/lib/chef/provider/remote_file/sftp.rb +3 -2
- data/lib/chef/provider/route.rb +5 -3
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +2 -2
- data/lib/chef/provider/service.rb +8 -8
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +30 -28
- data/lib/chef/provider/service/macosx.rb +16 -10
- data/lib/chef/provider/service/systemd.rb +12 -12
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +5 -11
- data/lib/chef/provider/subversion.rb +25 -5
- data/lib/chef/provider/systemd_unit.rb +26 -25
- data/lib/chef/provider/user.rb +6 -6
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/mac.rb +20 -15
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
- data/lib/chef/provider/windows_env.rb +3 -3
- data/lib/chef/provider/windows_script.rb +2 -2
- data/lib/chef/provider/windows_task.rb +10 -10
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +44 -57
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +210 -0
- data/lib/chef/resource/apt_package.rb +33 -3
- data/lib/chef/resource/apt_preference.rb +103 -7
- data/lib/chef/resource/apt_repository.rb +357 -18
- data/lib/chef/resource/apt_update.rb +58 -5
- data/lib/chef/resource/archive_file.rb +6 -5
- data/lib/chef/resource/bash.rb +3 -1
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +10 -2
- data/lib/chef/resource/breakpoint.rb +1 -2
- data/lib/chef/resource/build_essential.rb +49 -51
- data/lib/chef/resource/cab_package.rb +9 -2
- data/lib/chef/resource/chef_client_cron.rb +228 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
- data/lib/chef/resource/chef_gem.rb +15 -18
- data/lib/chef/resource/chef_handler.rb +5 -4
- data/lib/chef/resource/chef_sleep.rb +7 -5
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +8 -4
- data/lib/chef/resource/chocolatey_feature.rb +7 -4
- data/lib/chef/resource/chocolatey_package.rb +7 -4
- data/lib/chef/resource/chocolatey_source.rb +7 -4
- data/lib/chef/resource/cookbook_file.rb +4 -3
- data/lib/chef/resource/cron.rb +34 -80
- data/lib/chef/resource/cron_access.rb +10 -6
- data/lib/chef/resource/cron_d.rb +44 -95
- data/lib/chef/resource/csh.rb +3 -1
- data/lib/chef/resource/directory.rb +3 -3
- data/lib/chef/resource/dmg_package.rb +22 -19
- data/lib/chef/resource/dnf_package.rb +3 -4
- data/lib/chef/resource/dpkg_package.rb +3 -2
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +15 -14
- data/lib/chef/resource/file.rb +14 -9
- data/lib/chef/resource/freebsd_package.rb +3 -2
- data/lib/chef/resource/gem_package.rb +19 -11
- data/lib/chef/resource/group.rb +5 -2
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +3 -2
- data/lib/chef/resource/homebrew_package.rb +5 -3
- data/lib/chef/resource/homebrew_tap.rb +3 -2
- data/lib/chef/resource/hostname.rb +26 -20
- data/lib/chef/resource/http_request.rb +1 -2
- data/lib/chef/resource/ifconfig.rb +8 -8
- data/lib/chef/resource/ips_package.rb +11 -3
- data/lib/chef/resource/kernel_module.rb +30 -30
- data/lib/chef/resource/ksh.rb +3 -1
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/link.rb +5 -27
- data/lib/chef/resource/locale.rb +60 -26
- data/lib/chef/resource/log.rb +13 -2
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/macos_userdefaults.rb +18 -10
- data/lib/chef/resource/macosx_service.rb +3 -2
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +63 -3
- data/lib/chef/resource/mount.rb +4 -1
- data/lib/chef/resource/msu_package.rb +19 -2
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +20 -4
- data/lib/chef/resource/ohai_hint.rb +4 -13
- data/lib/chef/resource/openbsd_package.rb +10 -2
- data/lib/chef/resource/openssl_dhparam.rb +11 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
- data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
- data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
- data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
- data/lib/chef/resource/openssl_x509_crl.rb +13 -2
- data/lib/chef/resource/openssl_x509_request.rb +38 -2
- data/lib/chef/resource/osx_profile.rb +4 -3
- data/lib/chef/resource/package.rb +3 -2
- data/lib/chef/resource/pacman_package.rb +3 -2
- data/lib/chef/resource/paludis_package.rb +13 -4
- data/lib/chef/resource/perl.rb +3 -1
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +14 -4
- data/lib/chef/resource/powershell_package.rb +2 -4
- data/lib/chef/resource/powershell_package_source.rb +4 -2
- data/lib/chef/resource/powershell_script.rb +8 -18
- data/lib/chef/resource/python.rb +3 -1
- data/lib/chef/resource/reboot.rb +1 -2
- data/lib/chef/resource/registry_key.rb +2 -3
- data/lib/chef/resource/remote_directory.rb +3 -1
- data/lib/chef/resource/remote_file.rb +3 -2
- data/lib/chef/resource/rhsm_errata.rb +1 -4
- data/lib/chef/resource/rhsm_errata_level.rb +1 -2
- data/lib/chef/resource/rhsm_register.rb +3 -3
- data/lib/chef/resource/rhsm_repo.rb +4 -3
- data/lib/chef/resource/rhsm_subscription.rb +5 -4
- data/lib/chef/resource/route.rb +6 -2
- data/lib/chef/resource/rpm_package.rb +13 -3
- data/lib/chef/resource/ruby.rb +3 -1
- data/lib/chef/resource/ruby_block.rb +2 -5
- data/lib/chef/resource/scm/_scm.rb +49 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
- data/lib/chef/resource/script.rb +7 -4
- data/lib/chef/resource/service.rb +7 -8
- data/lib/chef/resource/smartos_package.rb +10 -2
- data/lib/chef/resource/snap_package.rb +4 -2
- data/lib/chef/resource/solaris_package.rb +10 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +11 -11
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -2
- data/lib/chef/resource/support/ulimit.erb +41 -0
- data/lib/chef/resource/swap_file.rb +7 -5
- data/lib/chef/resource/sysctl.rb +63 -4
- data/lib/chef/resource/systemd_unit.rb +6 -4
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +8 -19
- data/lib/chef/resource/user.rb +3 -5
- data/lib/chef/resource/user/aix_user.rb +0 -2
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +0 -2
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user/pw_user.rb +0 -2
- data/lib/chef/resource/user/solaris_user.rb +0 -2
- data/lib/chef/resource/user/windows_user.rb +0 -2
- data/lib/chef/resource/user_ulimit.rb +116 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +20 -7
- data/lib/chef/resource/windows_auto_run.rb +2 -3
- data/lib/chef/resource/windows_certificate.rb +3 -3
- data/lib/chef/resource/windows_dfs_folder.rb +1 -2
- data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
- data/lib/chef/resource/windows_dfs_server.rb +2 -3
- data/lib/chef/resource/windows_dns_record.rb +0 -1
- data/lib/chef/resource/windows_dns_zone.rb +0 -1
- data/lib/chef/resource/windows_env.rb +12 -4
- data/lib/chef/resource/windows_feature.rb +59 -4
- data/lib/chef/resource/windows_feature_dism.rb +24 -24
- data/lib/chef/resource/windows_feature_powershell.rb +44 -78
- data/lib/chef/resource/windows_firewall_rule.rb +121 -8
- data/lib/chef/resource/windows_font.rb +10 -2
- data/lib/chef/resource/windows_package.rb +76 -7
- data/lib/chef/resource/windows_pagefile.rb +31 -4
- data/lib/chef/resource/windows_path.rb +18 -2
- data/lib/chef/resource/windows_printer.rb +26 -7
- data/lib/chef/resource/windows_printer_port.rb +29 -2
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +119 -0
- data/lib/chef/resource/windows_service.rb +46 -32
- data/lib/chef/resource/windows_share.rb +22 -6
- data/lib/chef/resource/windows_shortcut.rb +13 -3
- data/lib/chef/resource/windows_task.rb +129 -16
- data/lib/chef/resource/windows_uac.rb +20 -2
- data/lib/chef/resource/windows_user_privilege.rb +199 -0
- data/lib/chef/resource/windows_workgroup.rb +19 -4
- data/lib/chef/resource/yum_package.rb +91 -7
- data/lib/chef/resource/yum_repository.rb +30 -12
- data/lib/chef/resource/zypper_package.rb +32 -5
- data/lib/chef/resource/zypper_repository.rb +19 -6
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +3 -2
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/scan_access_control.rb +1 -1
- data/lib/chef/shell.rb +22 -0
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -2
- data/lib/chef/win32/api/error.rb +3 -1
- data/lib/chef/win32/api/file.rb +1 -1
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +1 -9
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/security.rb +40 -2
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +23 -19
- data/spec/functional/resource/cron_spec.rb +10 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/msu_package_spec.rb +5 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +4 -4
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -1
- data/spec/functional/shell_spec.rb +1 -1
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +0 -6
- data/spec/functional/win32/security_spec.rb +22 -0
- data/spec/integration/client/client_spec.rb +123 -2
- data/spec/integration/knife/cookbook_show_spec.rb +28 -26
- data/spec/integration/knife/data_bag_show_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +34 -6
- data/spec/integration/knife/redirection_spec.rb +2 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +49 -20
- data/spec/integration/recipes/notifying_block_spec.rb +8 -5
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
- data/spec/integration/recipes/resource_load_spec.rb +133 -12
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/spec_helper.rb +18 -3
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
- data/spec/support/platform_helpers.rb +2 -20
- data/spec/support/recipe_dsl_helper.rb +83 -0
- data/spec/support/shared/functional/http.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +3 -16
- data/spec/support/shared/integration/knife_support.rb +9 -6
- data/spec/support/shared/unit/mock_shellout.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application/apply_spec.rb +3 -0
- data/spec/unit/application/client_spec.rb +5 -1
- data/spec/unit/application_spec.rb +1 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_collector_spec.rb +39 -18
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
- data/spec/unit/knife/bootstrap_spec.rb +20 -38
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- data/spec/unit/knife/ssh_spec.rb +8 -111
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/shell_out_spec.rb +25 -31
- data/spec/unit/node/attribute_spec.rb +3 -3
- data/spec/unit/node_spec.rb +24 -0
- data/spec/unit/platform/query_helpers_spec.rb +0 -143
- data/spec/unit/property/state_spec.rb +12 -7
- data/spec/unit/property/validation_spec.rb +25 -1
- data/spec/unit/property_spec.rb +12 -9
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +34 -36
- data/spec/unit/provider/apt_update_spec.rb +12 -11
- data/spec/unit/provider/cookbook_file_spec.rb +4 -4
- data/spec/unit/provider/cron_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +4 -15
- data/spec/unit/provider/file_spec.rb +4 -4
- data/spec/unit/provider/git_spec.rb +41 -1
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- data/spec/unit/provider/link_spec.rb +0 -1
- data/spec/unit/provider/log_spec.rb +3 -3
- data/spec/unit/provider/mdadm_spec.rb +3 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +3 -2
- data/spec/unit/provider/package/rubygems_spec.rb +211 -26
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +21 -61
- data/spec/unit/provider/remote_file_spec.rb +3 -4
- data/spec/unit/provider/service/debian_service_spec.rb +34 -13
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +17 -17
- data/spec/unit/provider_resolver_spec.rb +4 -4
- data/spec/unit/recipe_spec.rb +68 -0
- data/spec/unit/resource/alternatives_spec.rb +120 -0
- data/spec/unit/resource/apt_preference_spec.rb +0 -18
- data/spec/unit/resource/apt_repository_spec.rb +0 -18
- data/spec/unit/resource/apt_update_spec.rb +0 -18
- data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
- data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
- data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
- data/spec/unit/resource/cron_d_spec.rb +6 -48
- data/spec/unit/resource/cron_spec.rb +4 -10
- data/spec/unit/resource/gem_package_spec.rb +3 -3
- data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
- data/spec/unit/resource/link_spec.rb +0 -4
- data/spec/unit/resource/locale_spec.rb +0 -34
- data/spec/unit/resource/msu_package_spec.rb +4 -0
- data/spec/unit/resource/ohai_spec.rb +56 -2
- data/spec/unit/resource/plist_spec.rb +130 -0
- data/spec/unit/resource/powershell_script_spec.rb +0 -5
- data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
- data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
- data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
- data/spec/unit/resource/service_spec.rb +4 -0
- data/spec/unit/resource/user_spec.rb +2 -2
- data/spec/unit/resource/user_ulimit_spec.rb +53 -0
- data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +14 -0
- data/spec/unit/resource/windows_service_spec.rb +9 -0
- data/spec/unit/resource_reporter_spec.rb +2 -6
- data/spec/unit/resource_spec.rb +10 -3
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/win32/registry_spec.rb +1 -1
- data/tasks/rspec.rb +6 -14
- metadata +92 -37
- data/lib/chef/dsl/core.rb +0 -52
- data/lib/chef/knife/cookbook_site_share.rb +0 -41
- data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
- data/lib/chef/provider/apt_preference.rb +0 -93
- data/lib/chef/provider/apt_repository.rb +0 -358
- data/lib/chef/provider/apt_update.rb +0 -79
- data/lib/chef/provider/log.rb +0 -43
- data/lib/chef/provider/mdadm.rb +0 -85
- data/lib/chef/provider/ohai.rb +0 -45
- data/lib/chef/resource/git.rb +0 -37
- data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -21,10 +21,11 @@ require_relative "package"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class DpkgPackage < Chef::Resource::Package
|
24
|
-
|
24
|
+
unified_mode true
|
25
|
+
|
25
26
|
provides :dpkg_package
|
26
27
|
|
27
|
-
description "Use the dpkg_package resource to manage packages for the dpkg platform. When a package is installed from a local file, it must be added to the node using the remote_file or cookbook_file resources."
|
28
|
+
description "Use the **dpkg_package** resource to manage packages for the dpkg platform. When a package is installed from a local file, it must be added to the node using the **remote_file** or **cookbook_file** resources."
|
28
29
|
|
29
30
|
property :source, [ String, Array, nil ],
|
30
31
|
description: "The path to a package in the local file system."
|
@@ -21,7 +21,8 @@ require_relative "../dist"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class DscResource < Chef::Resource
|
24
|
-
|
24
|
+
unified_mode true
|
25
|
+
|
25
26
|
provides :dsc_resource
|
26
27
|
|
27
28
|
description "The dsc_resource resource allows any DSC resource to be used in a recipe, as well as any custom resources that have been added to your Windows PowerShell environment. Microsoft frequently adds new resources to the DSC resource collection."
|
@@ -100,12 +101,13 @@ class Chef
|
|
100
101
|
# is necessary, reboot_action provides the mechanism for a reboot to
|
101
102
|
# be requested.
|
102
103
|
property :reboot_action, Symbol, default: :nothing, equal_to: %i{nothing reboot_now request_reboot},
|
103
|
-
|
104
|
-
|
104
|
+
introduced: "12.6",
|
105
|
+
description: "Use to request an immediate reboot or to queue a reboot using the :reboot_now (immediate reboot) or :request_reboot (queued reboot) actions built into the reboot resource."
|
105
106
|
|
106
107
|
property :timeout, Integer,
|
107
108
|
introduced: "12.6",
|
108
|
-
description: "The amount of time (in seconds) a command is to wait before timing out."
|
109
|
+
description: "The amount of time (in seconds) a command is to wait before timing out.",
|
110
|
+
desired_state: false
|
109
111
|
|
110
112
|
private
|
111
113
|
|
@@ -26,7 +26,7 @@ class Chef
|
|
26
26
|
class DscScript < Chef::Resource
|
27
27
|
include Chef::DSL::Powershell
|
28
28
|
|
29
|
-
|
29
|
+
unified_mode true
|
30
30
|
provides :dsc_script
|
31
31
|
|
32
32
|
description "Many DSC resources are comparable to built-in #{Chef::Dist::PRODUCT} resources. For example, both DSC and #{Chef::Dist::PRODUCT} have file, package, and service resources. The dsc_script resource is most useful for those DSC resources that do not have a direct comparison to a resource in #{Chef::Dist::PRODUCT}, such as the Archive resource, a custom DSC resource, an existing DSC script that performs an important task, and so on. Use the dsc_script resource to embed the code that defines a DSC configuration directly within a #{Chef::Dist::PRODUCT} recipe."
|
@@ -124,7 +124,8 @@ class Chef
|
|
124
124
|
description: "A Hash of environment variables in the form of ({'ENV_VARIABLE' => 'VALUE'}). (These variables must exist for a command to be run successfully)."
|
125
125
|
|
126
126
|
property :timeout, Integer,
|
127
|
-
description: "The amount of time (in seconds) a command is to wait before timing out."
|
127
|
+
description: "The amount of time (in seconds) a command is to wait before timing out.",
|
128
|
+
desired_state: false
|
128
129
|
end
|
129
130
|
end
|
130
131
|
end
|
@@ -25,10 +25,9 @@ class Chef
|
|
25
25
|
class Execute < Chef::Resource
|
26
26
|
unified_mode true
|
27
27
|
|
28
|
-
resource_name :execute
|
29
28
|
provides :execute, target_mode: true
|
30
29
|
|
31
|
-
description "Use the execute resource to execute a single command. Commands that"\
|
30
|
+
description "Use the **execute** resource to execute a single command. Commands that"\
|
32
31
|
" are executed with this resource are (by their nature) not idempotent,"\
|
33
32
|
" as they are typically unique to the environment in which they are run."\
|
34
33
|
" Use not_if and only_if to guard this resource for idempotence."
|
@@ -50,7 +49,7 @@ class Chef
|
|
50
49
|
end
|
51
50
|
|
52
51
|
property :command, [ String, Array ],
|
53
|
-
name_property: true,
|
52
|
+
name_property: true,
|
54
53
|
description: "An optional property to set the command to be executed if it differs from the resource block's name."
|
55
54
|
|
56
55
|
property :umask, [ String, Integer ],
|
@@ -69,29 +68,31 @@ class Chef
|
|
69
68
|
description: "The group name or group ID that must be changed before running a command."
|
70
69
|
|
71
70
|
property :live_stream, [ TrueClass, FalseClass ], default: false,
|
72
|
-
|
71
|
+
description: "Send the output of the command run by this execute resource block to the #{Chef::Dist::CLIENT} event stream."
|
73
72
|
|
74
73
|
# default_env defaults to `false` so that the command execution more exactly matches what the user gets on the command line without magic
|
75
74
|
property :default_env, [ TrueClass, FalseClass ], desired_state: false, default: false,
|
76
|
-
|
77
|
-
|
75
|
+
introduced: "14.2",
|
76
|
+
description: "When true this enables ENV magic to add path_sanity to the PATH and force the locale to English+UTF-8 for parsing output"
|
78
77
|
|
79
78
|
property :returns, [ Integer, Array ], default: 0,
|
80
|
-
|
79
|
+
description: "The return value for a command. This may be an array of accepted values. An exception is raised when the return value(s) do not match."
|
81
80
|
|
82
|
-
property :timeout, [ Integer, Float ],
|
83
|
-
|
81
|
+
property :timeout, [ Integer, String, Float ],
|
82
|
+
default: 3600,
|
83
|
+
description: "The amount of time (in seconds) a command is to wait before timing out.",
|
84
|
+
desired_state: false
|
84
85
|
|
85
86
|
property :user, [ String, Integer ],
|
86
|
-
description: "The user name of the user identity with which to launch the new process. The user name may optionally be
|
87
|
+
description: "The user name of the user identity with which to launch the new process. The user name may optionally be specified with a domain, i.e. domainuser or user@my.dns.domain.com via Universal Principal Name (UPN)format. It can also be specified without a domain simply as user if the domain is instead specified using the domain property. On Windows only, if this property is specified, the password property must be specified."
|
87
88
|
|
88
89
|
property :domain, String,
|
89
90
|
introduced: "12.21",
|
90
91
|
description: "Windows only: The domain of the user user specified by the user property. If not specified, the user name and password specified by the user and password properties will be used to resolve that user against the domain in which the system running #{Chef::Dist::PRODUCT} is joined, or if that system is not joined to a domain it will resolve the user as a local account on that system. An alternative way to specify the domain is to leave this property unspecified and specify the domain as part of the user property."
|
91
92
|
|
92
93
|
property :password, String, sensitive: true,
|
93
|
-
|
94
|
-
|
94
|
+
introduced: "12.21",
|
95
|
+
description: "Windows only: The password of the user specified by the user property. This property is mandatory if user is specified on Windows and may only be specified if user is specified. The sensitive property for this resource will automatically be set to true if password is specified."
|
95
96
|
|
96
97
|
# lazy used to set default value of sensitive to true if password is set
|
97
98
|
property :sensitive, [ TrueClass, FalseClass ],
|
@@ -99,8 +100,8 @@ class Chef
|
|
99
100
|
default: lazy { password ? true : false }, default_description: "True if the password property is set. False otherwise."
|
100
101
|
|
101
102
|
property :elevated, [ TrueClass, FalseClass ], default: false,
|
102
|
-
|
103
|
-
|
103
|
+
description: "Determines whether the script will run with elevated permissions to circumvent User Access Control (UAC) interactively blocking the process.\nThis will cause the process to be run under a batch login instead of an interactive login. The user running #{Chef::Dist::CLIENT} needs the 'Replace a process level token' and 'Adjust Memory Quotas for a process' permissions. The user that is running the command needs the 'Log on as a batch job' permission.\nBecause this requires a login, the user and password properties are required.",
|
104
|
+
introduced: "13.3"
|
104
105
|
|
105
106
|
alias :env :environment
|
106
107
|
|
data/lib/chef/resource/file.rb
CHANGED
@@ -30,7 +30,9 @@ class Chef
|
|
30
30
|
include Chef::Mixin::Securable
|
31
31
|
unified_mode true
|
32
32
|
|
33
|
-
|
33
|
+
provides :file
|
34
|
+
|
35
|
+
description "Use the **file** resource to manage files directly on a node."
|
34
36
|
|
35
37
|
if ChefUtils.windows?
|
36
38
|
# Use Windows rights instead of standard *nix permissions
|
@@ -53,28 +55,31 @@ class Chef
|
|
53
55
|
default_action :create
|
54
56
|
allowed_actions :create, :delete, :touch, :create_if_missing
|
55
57
|
|
56
|
-
property :path, String, name_property: true,
|
57
|
-
|
58
|
+
property :path, String, name_property: true,
|
59
|
+
description: "The full path to the file, including the file name and its extension. For example: /files/file.txt. Default value: the name of the resource block. Microsoft Windows: A path that begins with a forward slash (/) will point to the root of the current working directory of the #{Chef::Dist::CLIENT} process. This path can vary from system to system. Therefore, using a path that begins with a forward slash (/) is not recommended."
|
58
60
|
|
59
61
|
property :atomic_update, [ TrueClass, FalseClass ], desired_state: false, default: lazy { docker? && special_docker_files?(path) ? false : Chef::Config[:file_atomic_update] },
|
60
|
-
|
62
|
+
default_description: "False if modifying /etc/hosts, /etc/hostname, or /etc/resolv.conf within Docker containers. Otherwise default to the client.rb 'file_atomic_update' config value.",
|
63
|
+
description: "Perform atomic file updates on a per-resource basis. Set to true for atomic file updates. Set to false for non-atomic file updates. This setting overrides `file_atomic_update`, which is a global setting found in the `client.rb` file."
|
61
64
|
|
62
65
|
property :backup, [ Integer, FalseClass ], desired_state: false, default: 5,
|
63
|
-
|
66
|
+
description: "The number of backups to be kept in `/var/chef/backup` (for UNIX- and Linux-based platforms) or `C:/chef/backup` (for the Microsoft Windows platform). Set to `false` to prevent backups from being kept."
|
64
67
|
|
65
|
-
property :checksum, [
|
68
|
+
property :checksum, [ String, nil ],
|
69
|
+
regex: /^\h{64}$/,
|
70
|
+
coerce: lambda { |s| s.is_a?(String) ? s.downcase : s },
|
66
71
|
description: "The SHA-256 checksum of the file. Use to ensure that a specific file is used. If the checksum does not match, the file is not used."
|
67
72
|
|
68
73
|
property :content, [ String, nil ], desired_state: false,
|
69
|
-
|
74
|
+
description: "A string that is written to the file. The contents of this property replace any previous content when this property has something other than the default value. The default behavior will not modify content."
|
70
75
|
|
71
76
|
property :diff, [ String, nil ], desired_state: false, skip_docs: true
|
72
77
|
|
73
78
|
property :force_unlink, [ TrueClass, FalseClass ], desired_state: false, default: false,
|
74
|
-
|
79
|
+
description: "How #{Chef::Dist::PRODUCT} handles certain situations when the target file turns out not to be a file. For example, when a target file is actually a symlink. Set to true for #{Chef::Dist::PRODUCT} to delete the non-file target and replace it with the specified file. Set to false for #{Chef::Dist::PRODUCT} to raise an error."
|
75
80
|
|
76
81
|
property :manage_symlink_source, [ TrueClass, FalseClass ], desired_state: false,
|
77
|
-
|
82
|
+
description: "Change the behavior of the file resource if it is pointed at a symlink. When this value is set to true, #{Chef::Dist::PRODUCT} will manage the symlink's permissions or will replace the symlink with a normal file if the resource has content. When this value is set to false, #{Chef::Dist::PRODUCT} will follow the symlink and will manage the permissions and content of symlink's target file. The default behavior is true but emits a warning that the default value will be changed to false in a future version; setting this explicitly to true or false suppresses this warning."
|
78
83
|
|
79
84
|
property :verifications, Array, default: lazy { [] }
|
80
85
|
|
@@ -25,10 +25,11 @@ require_relative "../provider/package/freebsd/pkgng"
|
|
25
25
|
class Chef
|
26
26
|
class Resource
|
27
27
|
class FreebsdPackage < Chef::Resource::Package
|
28
|
-
|
28
|
+
unified_mode true
|
29
|
+
provides :freebsd_package
|
29
30
|
provides :package, platform: "freebsd"
|
30
31
|
|
31
|
-
description "Use the freebsd_package resource to manage packages for the FreeBSD platform."
|
32
|
+
description "Use the **freebsd_package** resource to manage packages for the FreeBSD platform."
|
32
33
|
|
33
34
|
# make sure we assign the appropriate underlying providers based on what
|
34
35
|
# package managers exist on this FreeBSD system or the source of the package
|
@@ -22,14 +22,22 @@ require_relative "../dist"
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
24
24
|
class GemPackage < Chef::Resource::Package
|
25
|
-
|
25
|
+
unified_mode true
|
26
|
+
provides :gem_package
|
26
27
|
|
27
|
-
description "Use the gem_package resource to manage gem packages that are only included in recipes. When a package is installed from a local file, it must be added to the node using the remote_file or cookbook_file resources."
|
28
|
+
description "Use the **gem_package** resource to manage gem packages that are only included in recipes. When a package is installed from a local file, it must be added to the node using the remote_file or cookbook_file resources."
|
29
|
+
|
30
|
+
property :package_name, String,
|
31
|
+
description: "An optional property to set the package name if it differs from the resource block's name.",
|
32
|
+
identity: true
|
33
|
+
|
34
|
+
property :version, String,
|
35
|
+
description: "The version of a package to be installed or upgraded."
|
28
36
|
|
29
37
|
# the source can either be a path to a package source like:
|
30
38
|
# source /var/tmp/mygem-1.2.3.4.gem
|
31
39
|
# or it can be a url rubygems source like:
|
32
|
-
# https://
|
40
|
+
# https://rubygems.org
|
33
41
|
# the default has to be nil in order for the magical wiring up of the name property to
|
34
42
|
# the source pathname to work correctly.
|
35
43
|
#
|
@@ -38,21 +46,21 @@ class Chef
|
|
38
46
|
# FIXME? the array form of installing paths most likely does not work?
|
39
47
|
#
|
40
48
|
property :source, [ String, Array ],
|
41
|
-
description: "Optional. The URL, or list of URLs, at which the gem package is located. This list is added to the source configured in Chef::Config[:rubygems_url] (see also include_default_source) to construct the complete list of rubygems sources. Users in an 'airgapped' environment should set Chef::Config[:rubygems_url] to their local RubyGems mirror."
|
49
|
+
description: "Optional. The URL, or list of URLs, at which the gem package is located. This list is added to the source configured in `Chef::Config[:rubygems_url]` (see also include_default_source) to construct the complete list of rubygems sources. Users in an 'airgapped' environment should set Chef::Config[:rubygems_url] to their local RubyGems mirror."
|
42
50
|
|
43
|
-
property :clear_sources, [ TrueClass, FalseClass ],
|
44
|
-
description: "Set to
|
51
|
+
property :clear_sources, [ TrueClass, FalseClass, nil ],
|
52
|
+
description: "Set to `true` to download a gem from the path specified by the `source` property (and not from RubyGems).",
|
45
53
|
default: lazy { Chef::Config[:clear_gem_sources] }, desired_state: false
|
46
54
|
|
47
55
|
property :gem_binary, String, desired_state: false,
|
48
|
-
|
56
|
+
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."
|
49
57
|
|
50
|
-
property :include_default_source, [ TrueClass, FalseClass ],
|
51
|
-
description: "Set to
|
52
|
-
default:
|
58
|
+
property :include_default_source, [ TrueClass, FalseClass, nil ],
|
59
|
+
description: "Set to `false` to not include `Chef::Config[:rubygems_url]` in the sources.",
|
60
|
+
default: nil, introduced: "13.0"
|
53
61
|
|
54
62
|
property :options, [ String, Hash, Array, nil ],
|
55
|
-
description: "Options for the gem install, either a Hash or a String. When a hash is given, the options are passed to Gem::DependencyInstaller.new
|
63
|
+
description: "Options for the gem install, either a Hash or a String. When a hash is given, the options are passed to `Gem::DependencyInstaller.new`, and the gem will be installed via the gems API. When a String is given, the gem will be installed by shelling out to the gem command. Using a Hash of options with an explicit gem_binary will result in undefined behavior.",
|
56
64
|
desired_state: false
|
57
65
|
end
|
58
66
|
end
|
data/lib/chef/resource/group.rb
CHANGED
@@ -20,15 +20,18 @@
|
|
20
20
|
class Chef
|
21
21
|
class Resource
|
22
22
|
class Group < Chef::Resource
|
23
|
+
unified_mode true
|
23
24
|
state_attrs :members
|
24
25
|
|
25
|
-
description "Use the group resource to manage a local group."
|
26
|
+
description "Use the **group** resource to manage a local group."
|
27
|
+
|
28
|
+
provides :group
|
26
29
|
|
27
30
|
allowed_actions :create, :remove, :modify, :manage
|
28
31
|
default_action :create
|
29
32
|
|
30
33
|
property :group_name, String,
|
31
|
-
name_property: true,
|
34
|
+
name_property: true,
|
32
35
|
description: "The name of the group."
|
33
36
|
|
34
37
|
property :gid, [ String, Integer ],
|
@@ -0,0 +1,98 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
class Chef
|
19
|
+
module ResourceHelpers
|
20
|
+
# a collection of methods for validating cron times. Used in the various cron-like resources
|
21
|
+
module CronValidations
|
22
|
+
# validate a provided value is between two other provided values
|
23
|
+
# we also allow * as a valid input
|
24
|
+
# @param spec the value to validate
|
25
|
+
# @param min the lowest value allowed
|
26
|
+
# @param max the highest value allowed
|
27
|
+
# @return [Boolean] valid or not?
|
28
|
+
def validate_numeric(spec, min, max)
|
29
|
+
return true if spec == "*"
|
30
|
+
|
31
|
+
if spec.respond_to? :to_int
|
32
|
+
return spec >= min && spec <= max
|
33
|
+
end
|
34
|
+
|
35
|
+
# Lists of individual values, ranges, and step values all share the validity range for type
|
36
|
+
spec.split(%r{\/|-|,}).each do |x|
|
37
|
+
next if x == "*"
|
38
|
+
return false unless x =~ /^\d+$/
|
39
|
+
|
40
|
+
x = x.to_i
|
41
|
+
return false unless x >= min && x <= max
|
42
|
+
end
|
43
|
+
true
|
44
|
+
end
|
45
|
+
|
46
|
+
# validate the provided month value to be jan - dec, 1 - 12, or *
|
47
|
+
# @param spec the value to validate
|
48
|
+
# @return [Boolean] valid or not?
|
49
|
+
def validate_month(spec)
|
50
|
+
return true if spec == "*"
|
51
|
+
|
52
|
+
if spec.respond_to? :to_int
|
53
|
+
validate_numeric(spec, 1, 12)
|
54
|
+
elsif spec.respond_to? :to_str
|
55
|
+
# Named abbreviations are permitted but not as part of a range or with stepping
|
56
|
+
return true if %w{jan feb mar apr may jun jul aug sep oct nov dec}.include? spec.downcase
|
57
|
+
|
58
|
+
# 1-12 are legal for months
|
59
|
+
validate_numeric(spec, 1, 12)
|
60
|
+
else
|
61
|
+
false
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# validate the provided day of the week is sun-sat, 0-7, or *
|
66
|
+
# @param spec the value to validate
|
67
|
+
# @return [Boolean] valid or not?
|
68
|
+
def validate_dow(spec)
|
69
|
+
spec == "*" ||
|
70
|
+
validate_numeric(spec, 0, 7) ||
|
71
|
+
%w{sun mon tue wed thu fri sat}.include?(String(spec).downcase)
|
72
|
+
end
|
73
|
+
|
74
|
+
# validate the day of the month is 1-31
|
75
|
+
# @param spec the value to validate
|
76
|
+
# @return [Boolean] valid or not?
|
77
|
+
def validate_day(spec)
|
78
|
+
validate_numeric(spec, 1, 31)
|
79
|
+
end
|
80
|
+
|
81
|
+
# validate the hour is 0-23
|
82
|
+
# @param spec the value to validate
|
83
|
+
# @return [Boolean] valid or not?
|
84
|
+
def validate_hour(spec)
|
85
|
+
validate_numeric(spec, 0, 23)
|
86
|
+
end
|
87
|
+
|
88
|
+
# validate the minute is 0-59
|
89
|
+
# @param spec the value to validate
|
90
|
+
# @return [Boolean] valid or not?
|
91
|
+
def validate_minute(spec)
|
92
|
+
validate_numeric(spec, 0, 59)
|
93
|
+
end
|
94
|
+
|
95
|
+
extend self
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -23,10 +23,11 @@ require_relative "../mixin/homebrew_user"
|
|
23
23
|
class Chef
|
24
24
|
class Resource
|
25
25
|
class HomebrewCask < Chef::Resource
|
26
|
-
|
26
|
+
unified_mode true
|
27
|
+
|
27
28
|
provides(:homebrew_cask) { true }
|
28
29
|
|
29
|
-
description "Use the homebrew_cask resource to install binaries distributed via the Homebrew package manager."
|
30
|
+
description "Use the **homebrew_cask** resource to install binaries distributed via the Homebrew package manager."
|
30
31
|
introduced "14.0"
|
31
32
|
|
32
33
|
include Chef::Mixin::HomebrewUser
|
@@ -24,14 +24,16 @@ require_relative "../dist"
|
|
24
24
|
class Chef
|
25
25
|
class Resource
|
26
26
|
class HomebrewPackage < Chef::Resource::Package
|
27
|
-
|
27
|
+
unified_mode true
|
28
|
+
|
29
|
+
provides :homebrew_package
|
28
30
|
provides :package, os: "darwin"
|
29
31
|
|
30
|
-
description "Use the homebrew_package resource to manage packages for the macOS platform."
|
32
|
+
description "Use the **homebrew_package** resource to manage packages for the macOS platform."
|
31
33
|
introduced "12.0"
|
32
34
|
|
33
35
|
property :homebrew_user, [ String, Integer ],
|
34
|
-
description: "The name of the Homebrew owner to be used by #{Chef::Dist::PRODUCT} when executing a command."
|
36
|
+
description: "The name or uid of the Homebrew owner to be used by #{Chef::Dist::PRODUCT} when executing a command."
|
35
37
|
|
36
38
|
end
|
37
39
|
end
|
@@ -23,10 +23,11 @@ require_relative "../mixin/homebrew_user"
|
|
23
23
|
class Chef
|
24
24
|
class Resource
|
25
25
|
class HomebrewTap < Chef::Resource
|
26
|
-
|
26
|
+
unified_mode true
|
27
|
+
|
27
28
|
provides(:homebrew_tap) { true }
|
28
29
|
|
29
|
-
description "Use the homebrew_tap resource to add additional formula repositories to the Homebrew package manager."
|
30
|
+
description "Use the **homebrew_tap** resource to add additional formula repositories to the Homebrew package manager."
|
30
31
|
introduced "14.0"
|
31
32
|
|
32
33
|
include Chef::Mixin::HomebrewUser
|
@@ -19,21 +19,33 @@ class Chef
|
|
19
19
|
# Sets the hostname and updates /etc/hosts on *nix systems
|
20
20
|
# @since 14.0.0
|
21
21
|
class Hostname < Chef::Resource
|
22
|
-
|
22
|
+
unified_mode true
|
23
|
+
|
23
24
|
provides :hostname
|
24
25
|
|
25
|
-
description "Use the hostname resource to set the system's hostname, configure hostname and hosts config"
|
26
|
-
" file, and re-run the Ohai hostname plugin so the hostname will be available in subsequent cookbooks."
|
26
|
+
description "Use the **hostname** resource to set the system's hostname, configure hostname and hosts config file, and re-run the Ohai hostname plugin so the hostname will be available in subsequent cookbooks."
|
27
27
|
introduced "14.0"
|
28
|
+
examples <<~DOC
|
29
|
+
**Set the hostname using the IP address, as detected by Ohai**:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
hostname 'example'
|
33
|
+
```
|
34
|
+
|
35
|
+
**Manually specify the hostname and IP address**:
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
hostname 'statically_configured_host' do
|
39
|
+
hostname 'example'
|
40
|
+
ipaddress '198.51.100.2'
|
41
|
+
end
|
42
|
+
```
|
43
|
+
DOC
|
28
44
|
|
29
45
|
property :hostname, String,
|
30
46
|
description: "An optional property to set the hostname if it differs from the resource block's name.",
|
31
47
|
name_property: true
|
32
48
|
|
33
|
-
property :compile_time, [ TrueClass, FalseClass ],
|
34
|
-
description: "Determines whether or not the resource should be run at compile time.",
|
35
|
-
default: true, desired_state: false
|
36
|
-
|
37
49
|
property :ipaddress, String,
|
38
50
|
description: "The IP address to use when configuring the hosts file.",
|
39
51
|
default: lazy { node["ipaddress"] }, default_description: "The node's IP address as determined by Ohai."
|
@@ -42,6 +54,11 @@ class Chef
|
|
42
54
|
description: "An array of hostname aliases to use when configuring the hosts file.",
|
43
55
|
default: nil
|
44
56
|
|
57
|
+
# override compile_time property to be true by default
|
58
|
+
property :compile_time, [ TrueClass, FalseClass ],
|
59
|
+
description: "Determines whether or not the resource should be run at compile time.",
|
60
|
+
default: true, desired_state: false
|
61
|
+
|
45
62
|
property :windows_reboot, [ TrueClass, FalseClass ],
|
46
63
|
description: "Determines whether or not Windows should be reboot after changing the hostname, as this is required for the change to take effect.",
|
47
64
|
default: true
|
@@ -132,7 +149,7 @@ class Chef
|
|
132
149
|
# this must come before other methods like /etc/hostname and /etc/sysconfig/network
|
133
150
|
declare_resource(:execute, "hostnamectl set-hostname #{new_resource.hostname}") do
|
134
151
|
notifies :reload, "ohai[reload hostname]"
|
135
|
-
not_if { shell_out!("hostnamectl status",
|
152
|
+
not_if { shell_out!("hostnamectl status", returns: [0, 1]).stdout =~ /Static hostname:\s*#{new_resource.hostname}\s*$/ }
|
136
153
|
end
|
137
154
|
when ::File.exist?("/etc/hostname")
|
138
155
|
# debian family uses /etc/hostname
|
@@ -151,7 +168,7 @@ class Chef
|
|
151
168
|
# older non-systemd RHEL/Fedora derived
|
152
169
|
append_replacing_matching_lines("/etc/sysconfig/network", /^HOSTNAME\s*=/, "HOSTNAME=#{new_resource.hostname}")
|
153
170
|
when ::File.exist?("/etc/HOSTNAME")
|
154
|
-
# SuSE/
|
171
|
+
# SuSE/openSUSE uses /etc/HOSTNAME
|
155
172
|
declare_resource(:file, "/etc/HOSTNAME") do
|
156
173
|
content "#{new_resource.hostname}\n"
|
157
174
|
owner "root"
|
@@ -251,17 +268,6 @@ class Chef
|
|
251
268
|
end
|
252
269
|
end
|
253
270
|
end
|
254
|
-
|
255
|
-
# this resource forces itself to run at compile_time
|
256
|
-
#
|
257
|
-
# @return [void]
|
258
|
-
def after_created
|
259
|
-
if compile_time
|
260
|
-
Array(action).each do |action|
|
261
|
-
run_action(action)
|
262
|
-
end
|
263
|
-
end
|
264
|
-
end
|
265
271
|
end
|
266
272
|
end
|
267
273
|
end
|