chef 15.17.4-universal-mingw32 → 16.0.257-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 +14 -20
- data/README.md +6 -6
- data/Rakefile +18 -23
- data/chef-universal-mingw32.gemspec +4 -4
- data/chef.gemspec +10 -26
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/action_collection.rb +16 -5
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +33 -54
- data/lib/chef/application/apply.rb +20 -3
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/exit_code.rb +2 -2
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +0 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +5 -5
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +3 -3
- data/lib/chef/client.rb +16 -14
- data/lib/chef/config.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +45 -22
- data/lib/chef/cookbook_version.rb +40 -5
- data/lib/chef/data_bag.rb +2 -2
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/deprecated.rb +1 -9
- data/lib/chef/dist.rb +8 -0
- data/lib/chef/dsl/chef_vault.rb +84 -0
- data/lib/chef/dsl/declare_resource.rb +7 -5
- data/lib/chef/dsl/platform_introspection.rb +2 -3
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/environment.rb +2 -2
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +0 -3
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
- data/lib/chef/formatters/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -2
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/knife.rb +1 -3
- data/lib/chef/knife/acl_add.rb +57 -0
- data/lib/chef/knife/acl_base.rb +183 -0
- data/lib/chef/knife/acl_bulk_add.rb +78 -0
- data/lib/chef/knife/acl_bulk_remove.rb +83 -0
- data/lib/chef/knife/acl_remove.rb +62 -0
- data/lib/chef/knife/acl_show.rb +56 -0
- data/lib/chef/knife/bootstrap.rb +93 -97
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +20 -20
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +13 -15
- data/lib/chef/knife/bootstrap/train_connector.rb +0 -1
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +2 -3
- data/lib/chef/knife/core/node_presenter.rb +2 -2
- data/lib/chef/knife/core/status_presenter.rb +5 -5
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +17 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +45 -58
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- data/lib/chef/knife/environment_compare.rb +1 -1
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/group_add.rb +55 -0
- data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
- data/lib/chef/knife/group_destroy.rb +53 -0
- data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
- data/lib/chef/knife/group_remove.rb +56 -0
- data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -50
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +1 -2
- data/lib/chef/knife/supermarket_list.rb +1 -2
- data/lib/chef/knife/supermarket_search.rb +1 -2
- data/lib/chef/knife/supermarket_share.rb +1 -2
- data/lib/chef/knife/supermarket_show.rb +1 -2
- data/lib/chef/knife/supermarket_unshare.rb +1 -2
- data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
- data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
- data/lib/chef/knife/user_invite_list.rb +34 -0
- data/lib/chef/knife/user_invite_recind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/create_path.rb +8 -8
- data/lib/chef/mixin/openssl_helper.rb +3 -26
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +13 -1
- data/lib/chef/mixin/shell_out.rb +0 -4
- data/lib/chef/mixin/template.rb +0 -1
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
- data/lib/chef/node/mixin/immutablize_array.rb +4 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/node_map.rb +7 -36
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +22 -4
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +2 -2
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -8
- data/lib/chef/provider/file.rb +5 -5
- data/lib/chef/provider/git.rb +84 -27
- data/lib/chef/provider/group.rb +4 -4
- data/lib/chef/provider/http_request.rb +6 -6
- data/lib/chef/provider/ifconfig.rb +4 -4
- data/lib/chef/provider/launchd.rb +36 -51
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/mount/solaris.rb +1 -0
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +3 -4
- data/lib/chef/provider/package/chocolatey.rb +1 -3
- data/lib/chef/provider/package/dnf.rb +66 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +84 -30
- data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
- data/lib/chef/provider/package/dnf/version.rb +5 -1
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -3
- data/lib/chef/provider/package/homebrew.rb +106 -42
- data/lib/chef/provider/package/msu.rb +3 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/powershell.rb +2 -6
- data/lib/chef/provider/package/rubygems.rb +29 -2
- data/lib/chef/provider/package/snap.rb +27 -96
- data/lib/chef/provider/package/windows.rb +3 -2
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +0 -8
- data/lib/chef/provider/package/yum/yum_helper.py +0 -4
- data/lib/chef/provider/package/zypper.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +4 -10
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +3 -3
- data/lib/chef/provider/remote_file/ftp.rb +3 -2
- data/lib/chef/provider/remote_file/local_file.rb +2 -1
- data/lib/chef/provider/remote_file/sftp.rb +3 -2
- data/lib/chef/provider/route.rb +5 -3
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +2 -2
- data/lib/chef/provider/service.rb +8 -8
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/arch.rb +2 -2
- data/lib/chef/provider/service/debian.rb +31 -29
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +7 -12
- data/lib/chef/provider/service/openbsd.rb +1 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +3 -3
- data/lib/chef/provider/service/systemd.rb +12 -12
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +5 -11
- data/lib/chef/provider/subversion.rb +25 -5
- data/lib/chef/provider/systemd_unit.rb +26 -25
- data/lib/chef/provider/user.rb +6 -6
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/mac.rb +10 -9
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
- data/lib/chef/provider/windows_env.rb +3 -3
- data/lib/chef/provider/windows_script.rb +2 -2
- data/lib/chef/provider/windows_task.rb +7 -9
- data/lib/chef/provider/yum_repository.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +11 -31
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +41 -56
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +149 -0
- data/lib/chef/resource/apt_package.rb +2 -1
- data/lib/chef/resource/apt_preference.rb +69 -2
- data/lib/chef/resource/apt_repository.rb +337 -5
- data/lib/chef/resource/apt_update.rb +52 -1
- data/lib/chef/resource/archive_file.rb +9 -29
- data/lib/chef/resource/bash.rb +2 -0
- data/lib/chef/resource/bff_package.rb +9 -1
- data/lib/chef/resource/breakpoint.rb +0 -1
- data/lib/chef/resource/build_essential.rb +42 -48
- data/lib/chef/resource/cab_package.rb +8 -1
- data/lib/chef/resource/chef_client_cron.rb +225 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +198 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +177 -0
- data/lib/chef/resource/chef_gem.rb +9 -16
- data/lib/chef/resource/chef_handler.rb +2 -1
- data/lib/chef/resource/chef_sleep.rb +0 -1
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +3 -1
- data/lib/chef/resource/chocolatey_feature.rb +2 -1
- data/lib/chef/resource/chocolatey_package.rb +2 -1
- data/lib/chef/resource/chocolatey_source.rb +2 -1
- data/lib/chef/resource/cookbook_file.rb +1 -1
- data/lib/chef/resource/cron.rb +22 -68
- data/lib/chef/resource/cron_access.rb +8 -15
- data/lib/chef/resource/cron_d.rb +9 -75
- data/lib/chef/resource/csh.rb +2 -0
- data/lib/chef/resource/directory.rb +2 -2
- data/lib/chef/resource/dmg_package.rb +4 -4
- data/lib/chef/resource/dnf_package.rb +2 -3
- data/lib/chef/resource/dpkg_package.rb +2 -1
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +13 -12
- data/lib/chef/resource/file.rb +3 -1
- data/lib/chef/resource/freebsd_package.rb +2 -1
- data/lib/chef/resource/gem_package.rb +14 -6
- data/lib/chef/resource/group.rb +4 -1
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +5 -4
- data/lib/chef/resource/homebrew_package.rb +4 -2
- data/lib/chef/resource/homebrew_tap.rb +2 -1
- data/lib/chef/resource/hostname.rb +41 -36
- data/lib/chef/resource/http_request.rb +0 -1
- data/lib/chef/resource/ifconfig.rb +1 -1
- data/lib/chef/resource/ips_package.rb +10 -2
- data/lib/chef/resource/kernel_module.rb +29 -29
- data/lib/chef/resource/ksh.rb +2 -0
- data/lib/chef/resource/launchd.rb +6 -6
- data/lib/chef/resource/link.rb +1 -23
- data/lib/chef/resource/locale.rb +58 -24
- data/lib/chef/resource/log.rb +12 -1
- data/lib/chef/resource/lwrp_base.rb +1 -8
- data/lib/chef/resource/macos_userdefaults.rb +9 -6
- data/lib/chef/resource/macosx_service.rb +2 -1
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +62 -2
- data/lib/chef/resource/mount.rb +3 -0
- data/lib/chef/resource/msu_package.rb +13 -1
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +19 -3
- data/lib/chef/resource/ohai_hint.rb +3 -12
- data/lib/chef/resource/openbsd_package.rb +9 -1
- data/lib/chef/resource/openssl_dhparam.rb +10 -1
- data/lib/chef/resource/openssl_ec_private_key.rb +23 -1
- data/lib/chef/resource/openssl_ec_public_key.rb +21 -1
- data/lib/chef/resource/openssl_rsa_private_key.rb +20 -1
- data/lib/chef/resource/openssl_rsa_public_key.rb +22 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +37 -1
- data/lib/chef/resource/openssl_x509_crl.rb +12 -1
- data/lib/chef/resource/openssl_x509_request.rb +37 -1
- data/lib/chef/resource/osx_profile.rb +3 -2
- data/lib/chef/resource/package.rb +2 -1
- data/lib/chef/resource/pacman_package.rb +2 -1
- data/lib/chef/resource/paludis_package.rb +12 -3
- data/lib/chef/resource/perl.rb +2 -0
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +13 -3
- data/lib/chef/resource/powershell_package.rb +1 -3
- data/lib/chef/resource/powershell_package_source.rb +3 -1
- data/lib/chef/resource/powershell_script.rb +7 -17
- data/lib/chef/resource/python.rb +2 -0
- data/lib/chef/resource/reboot.rb +0 -1
- data/lib/chef/resource/registry_key.rb +1 -2
- data/lib/chef/resource/remote_directory.rb +2 -0
- data/lib/chef/resource/remote_file.rb +2 -0
- data/lib/chef/resource/rhsm_errata.rb +0 -1
- data/lib/chef/resource/rhsm_errata_level.rb +0 -1
- data/lib/chef/resource/rhsm_register.rb +2 -1
- data/lib/chef/resource/rhsm_repo.rb +3 -1
- data/lib/chef/resource/rhsm_subscription.rb +4 -1
- data/lib/chef/resource/route.rb +5 -1
- data/lib/chef/resource/rpm_package.rb +9 -2
- data/lib/chef/resource/ruby.rb +2 -0
- data/lib/chef/resource/ruby_block.rb +1 -1
- data/lib/chef/resource/scm/_scm.rb +48 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +8 -5
- data/lib/chef/resource/script.rb +6 -3
- data/lib/chef/resource/service.rb +6 -7
- data/lib/chef/resource/smartos_package.rb +9 -1
- data/lib/chef/resource/snap_package.rb +3 -1
- data/lib/chef/resource/solaris_package.rb +9 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +9 -9
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -2
- data/lib/chef/resource/support/ulimit.erb +41 -0
- data/lib/chef/resource/swap_file.rb +5 -3
- data/lib/chef/resource/sysctl.rb +2 -2
- data/lib/chef/resource/systemd_unit.rb +4 -2
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +7 -18
- data/lib/chef/resource/user.rb +1 -3
- data/lib/chef/resource/user/aix_user.rb +0 -2
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +0 -2
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user/pw_user.rb +0 -2
- data/lib/chef/resource/user/solaris_user.rb +0 -2
- data/lib/chef/resource/user/windows_user.rb +0 -2
- data/lib/chef/resource/user_ulimit.rb +114 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +19 -6
- data/lib/chef/resource/windows_auto_run.rb +0 -1
- data/lib/chef/resource/windows_certificate.rb +1 -1
- data/lib/chef/resource/windows_dfs_folder.rb +0 -1
- data/lib/chef/resource/windows_dfs_namespace.rb +0 -1
- data/lib/chef/resource/windows_dfs_server.rb +0 -1
- data/lib/chef/resource/windows_dns_record.rb +0 -1
- data/lib/chef/resource/windows_dns_zone.rb +0 -1
- data/lib/chef/resource/windows_env.rb +2 -3
- data/lib/chef/resource/windows_feature.rb +2 -2
- data/lib/chef/resource/windows_feature_dism.rb +9 -22
- data/lib/chef/resource/windows_feature_powershell.rb +17 -82
- data/lib/chef/resource/windows_firewall_rule.rb +119 -10
- data/lib/chef/resource/windows_font.rb +1 -3
- data/lib/chef/resource/windows_package.rb +13 -4
- data/lib/chef/resource/windows_pagefile.rb +0 -1
- data/lib/chef/resource/windows_path.rb +0 -1
- data/lib/chef/resource/windows_printer.rb +0 -1
- data/lib/chef/resource/windows_printer_port.rb +0 -1
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +90 -0
- data/lib/chef/resource/windows_service.rb +45 -31
- data/lib/chef/resource/windows_share.rb +3 -7
- data/lib/chef/resource/windows_shortcut.rb +0 -1
- data/lib/chef/resource/windows_task.rb +14 -15
- data/lib/chef/resource/windows_uac.rb +0 -1
- data/lib/chef/resource/windows_user_privilege.rb +157 -0
- data/lib/chef/resource/windows_workgroup.rb +0 -1
- data/lib/chef/resource/yum_package.rb +3 -1
- data/lib/chef/resource/yum_repository.rb +2 -1
- data/lib/chef/resource/zypper_package.rb +3 -2
- data/lib/chef/resource/zypper_repository.rb +2 -1
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +6 -6
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/role.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/shell.rb +23 -32
- data/lib/chef/shell/shell_session.rb +0 -2
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/configuration_generator.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
- data/lib/chef/util/powershell/cmdlet.rb +1 -1
- data/lib/chef/version.rb +2 -2
- data/lib/chef/version_string.rb +1 -1
- data/lib/chef/win32/api/file.rb +18 -18
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +3 -11
- data/lib/chef/win32/process.rb +2 -2
- data/lib/chef/win32/security.rb +40 -2
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +27 -23
- data/spec/functional/resource/aix_service_spec.rb +1 -0
- data/spec/functional/resource/aixinit_service_spec.rb +8 -7
- data/spec/functional/resource/apt_package_spec.rb +1 -0
- data/spec/functional/resource/bff_spec.rb +2 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +11 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +6 -5
- data/spec/functional/resource/link_spec.rb +17 -17
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/rpm_spec.rb +2 -2
- data/spec/functional/resource/user/dscl_spec.rb +2 -2
- data/spec/functional/resource/user/mac_user_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +8 -8
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -2
- data/spec/functional/shell_spec.rb +6 -6
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +0 -6
- data/spec/functional/win32/security_spec.rb +22 -0
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/client/client_spec.rb +123 -2
- data/spec/integration/knife/cookbook_show_spec.rb +28 -26
- data/spec/integration/knife/data_bag_show_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +30 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/accumulator_spec.rb +1 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -5
- data/spec/integration/recipes/lwrp_spec.rb +1 -1
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +50 -21
- data/spec/integration/recipes/notifying_block_spec.rb +9 -6
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +46 -144
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -3
- data/spec/integration/recipes/resource_load_spec.rb +133 -13
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/scripts/ssl-serve.rb +1 -1
- data/spec/spec_helper.rb +11 -14
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
- data/spec/support/platform_helpers.rb +44 -19
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/recipe_dsl_helper.rb +83 -0
- data/spec/support/shared/functional/directory_resource.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +3 -3
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +5 -18
- data/spec/support/shared/integration/knife_support.rb +14 -8
- data/spec/unit/application/apply_spec.rb +3 -0
- data/spec/unit/application/client_spec.rb +5 -1
- data/spec/unit/application_spec.rb +1 -9
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +4 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +3 -4
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/data_collector_spec.rb +38 -17
- data/spec/unit/dsl/platform_introspection_spec.rb +0 -1
- data/spec/unit/environment_spec.rb +7 -7
- data/spec/unit/event_dispatch/dispatcher_spec.rb +0 -3
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
- data/spec/unit/knife/bootstrap_spec.rb +36 -54
- data/spec/unit/knife/cookbook_download_spec.rb +4 -4
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +6 -5
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +8 -68
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
- data/spec/unit/knife/ssh_spec.rb +10 -113
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife/supermarket_share_spec.rb +3 -5
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/lwrp_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/securable_spec.rb +1 -0
- data/spec/unit/mixin/user_context_spec.rb +9 -1
- data/spec/unit/node/attribute_spec.rb +2 -2
- data/spec/unit/node_spec.rb +24 -0
- data/spec/unit/platform/query_helpers_spec.rb +0 -143
- data/spec/unit/property/state_spec.rb +12 -7
- data/spec/unit/property/validation_spec.rb +25 -1
- data/spec/unit/property_spec.rb +18 -15
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +9 -11
- data/spec/unit/provider/apt_update_spec.rb +12 -11
- data/spec/unit/provider/cookbook_file_spec.rb +4 -4
- data/spec/unit/provider/cron_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +4 -15
- data/spec/unit/provider/file_spec.rb +4 -4
- data/spec/unit/provider/git_spec.rb +44 -4
- data/spec/unit/provider/link_spec.rb +0 -1
- data/spec/unit/provider/log_spec.rb +3 -3
- data/spec/unit/provider/mdadm_spec.rb +3 -3
- data/spec/unit/provider/osx_profile_spec.rb +2 -2
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +2 -2
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/msu_spec.rb +3 -3
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/powershell_spec.rb +88 -96
- data/spec/unit/provider/package/rubygems_spec.rb +221 -31
- data/spec/unit/provider/package/snap_spec.rb +1 -1
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- data/spec/unit/provider/package/windows_spec.rb +53 -30
- data/spec/unit/provider/powershell_script_spec.rb +21 -61
- data/spec/unit/provider/remote_file_spec.rb +3 -4
- data/spec/unit/provider/service/arch_service_spec.rb +2 -3
- data/spec/unit/provider/service/debian_service_spec.rb +35 -14
- data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider/service/windows_spec.rb +6 -2
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/systemd_unit_spec.rb +24 -28
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +25 -75
- data/spec/unit/provider_resolver_spec.rb +11 -11
- data/spec/unit/provider_spec.rb +0 -1
- data/spec/unit/recipe_spec.rb +68 -0
- data/spec/unit/resource/alternatives_spec.rb +120 -0
- data/spec/unit/resource/apt_preference_spec.rb +0 -18
- data/spec/unit/resource/apt_repository_spec.rb +0 -18
- data/spec/unit/resource/apt_update_spec.rb +0 -18
- data/spec/unit/resource/archive_file_spec.rb +2 -11
- data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
- data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
- data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
- data/spec/unit/resource/cron_d_spec.rb +6 -48
- data/spec/unit/resource/cron_spec.rb +4 -10
- data/spec/unit/resource/gem_package_spec.rb +3 -3
- data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
- data/spec/unit/resource/link_spec.rb +0 -4
- data/spec/unit/resource/locale_spec.rb +0 -34
- data/spec/unit/resource/ohai_spec.rb +56 -2
- data/spec/unit/resource/plist_spec.rb +130 -0
- data/spec/unit/resource/powershell_script_spec.rb +0 -5
- data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
- data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
- data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
- data/spec/unit/resource/service_spec.rb +4 -0
- data/spec/unit/resource/user_spec.rb +2 -2
- data/spec/unit/resource/user_ulimit_spec.rb +53 -0
- data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
- data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
- data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +6 -47
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +4 -1
- data/spec/unit/resource/windows_service_spec.rb +9 -0
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/resource/windows_uac_spec.rb +2 -2
- data/spec/unit/resource/yum_repository_spec.rb +21 -21
- data/spec/unit/resource_reporter_spec.rb +1 -5
- data/spec/unit/resource_spec.rb +11 -4
- data/spec/unit/role_spec.rb +11 -11
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
- data/spec/unit/run_context_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +0 -9
- data/spec/unit/win32/security_spec.rb +3 -4
- data/tasks/rspec.rb +1 -1
- metadata +116 -87
- data/lib/chef/dsl/core.rb +0 -52
- data/lib/chef/knife/cookbook_site_share.rb +0 -41
- data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
- data/lib/chef/provider/apt_preference.rb +0 -93
- data/lib/chef/provider/apt_repository.rb +0 -358
- data/lib/chef/provider/apt_update.rb +0 -79
- data/lib/chef/provider/log.rb +0 -43
- data/lib/chef/provider/mdadm.rb +0 -85
- data/lib/chef/provider/ohai.rb +0 -45
- data/lib/chef/resource/git.rb +0 -37
- data/spec/functional/resource/windows_font_spec.rb +0 -49
- data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -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,7 +25,6 @@ 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
30
|
description "Use the execute resource to execute a single command. Commands that"\
|
@@ -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,18 +68,20 @@ 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
87
|
description: "The user name of the user identity with which to launch the new process. The user name may optionally be specifed 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."
|
@@ -90,8 +91,8 @@ class Chef
|
|
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,6 +30,8 @@ class Chef
|
|
30
30
|
include Chef::Mixin::Securable
|
31
31
|
unified_mode true
|
32
32
|
|
33
|
+
provides :file
|
34
|
+
|
33
35
|
description "Use the file resource to manage files directly on a node."
|
34
36
|
|
35
37
|
if ChefUtils.windows?
|
@@ -53,7 +55,7 @@ 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,
|
58
|
+
property :path, String, name_property: true,
|
57
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] },
|
@@ -25,7 +25,8 @@ 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
32
|
description "Use the freebsd_package resource to manage packages for the FreeBSD platform."
|
@@ -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
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."
|
28
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."
|
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
|
#
|
@@ -40,16 +48,16 @@ class Chef
|
|
40
48
|
property :source, [ String, Array ],
|
41
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 ],
|
51
|
+
property :clear_sources, [ TrueClass, FalseClass, nil ],
|
44
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 the #{Chef::Dist::CLIENT} will be installed."
|
49
57
|
|
50
|
-
property :include_default_source, [ TrueClass, FalseClass ],
|
58
|
+
property :include_default_source, [ TrueClass, FalseClass, nil ],
|
51
59
|
description: "Set to 'false' to not include 'Chef::Config[:rubygems_url]'' in the sources.",
|
52
|
-
default:
|
60
|
+
default: nil, introduced: "13.0"
|
53
61
|
|
54
62
|
property :options, [ String, Hash, Array, nil ],
|
55
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.",
|
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
26
|
description "Use the group resource to manage a local group."
|
26
27
|
|
28
|
+
provides :group
|
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,7 +23,8 @@ 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
30
|
description "Use the homebrew_cask resource to install binaries distributed via the Homebrew package manager."
|
@@ -59,7 +60,7 @@ class Chef
|
|
59
60
|
|
60
61
|
unless casked?
|
61
62
|
converge_by("install cask #{new_resource.cask_name} #{new_resource.options}") do
|
62
|
-
shell_out!("#{new_resource.homebrew_path} install
|
63
|
+
shell_out!("#{new_resource.homebrew_path} cask install #{new_resource.cask_name} #{new_resource.options}",
|
63
64
|
user: new_resource.owner,
|
64
65
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
65
66
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -74,7 +75,7 @@ class Chef
|
|
74
75
|
|
75
76
|
if casked?
|
76
77
|
converge_by("uninstall cask #{new_resource.cask_name}") do
|
77
|
-
shell_out!("#{new_resource.homebrew_path} uninstall
|
78
|
+
shell_out!("#{new_resource.homebrew_path} cask uninstall #{new_resource.cask_name}",
|
78
79
|
user: new_resource.owner,
|
79
80
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
80
81
|
cwd: ::Dir.home(new_resource.owner))
|
@@ -92,7 +93,7 @@ class Chef
|
|
92
93
|
# @return [Boolean]
|
93
94
|
def casked?
|
94
95
|
unscoped_name = new_resource.cask_name.split("/").last
|
95
|
-
shell_out!("#{new_resource.homebrew_path} list
|
96
|
+
shell_out!("#{new_resource.homebrew_path} cask list 2>/dev/null",
|
96
97
|
user: new_resource.owner,
|
97
98
|
env: { "HOME" => ::Dir.home(new_resource.owner), "USER" => new_resource.owner },
|
98
99
|
cwd: ::Dir.home(new_resource.owner)).stdout.split.include?(unscoped_name)
|
@@ -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
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,7 +23,8 @@ 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
30
|
description "Use the homebrew_tap resource to add additional formula repositories to the Homebrew package manager."
|
@@ -13,28 +13,39 @@
|
|
13
13
|
#
|
14
14
|
|
15
15
|
require_relative "../resource"
|
16
|
-
require_relative "../dist"
|
17
16
|
|
18
17
|
class Chef
|
19
18
|
class Resource
|
20
19
|
# Sets the hostname and updates /etc/hosts on *nix systems
|
21
20
|
# @since 14.0.0
|
22
21
|
class Hostname < Chef::Resource
|
23
|
-
|
22
|
+
unified_mode true
|
23
|
+
|
24
24
|
provides :hostname
|
25
25
|
|
26
|
-
description "Use the hostname resource to set the system's hostname, configure hostname and hosts config"
|
27
|
-
" 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."
|
28
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
|
29
44
|
|
30
45
|
property :hostname, String,
|
31
46
|
description: "An optional property to set the hostname if it differs from the resource block's name.",
|
32
47
|
name_property: true
|
33
48
|
|
34
|
-
property :compile_time, [ TrueClass, FalseClass ],
|
35
|
-
description: "Determines whether or not the resource should be run at compile time.",
|
36
|
-
default: true, desired_state: false
|
37
|
-
|
38
49
|
property :ipaddress, String,
|
39
50
|
description: "The IP address to use when configuring the hosts file.",
|
40
51
|
default: lazy { node["ipaddress"] }, default_description: "The node's IP address as determined by Ohai."
|
@@ -43,6 +54,11 @@ class Chef
|
|
43
54
|
description: "An array of hostname aliases to use when configuring the hosts file.",
|
44
55
|
default: nil
|
45
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
|
+
|
46
62
|
property :windows_reboot, [ TrueClass, FalseClass ],
|
47
63
|
description: "Determines whether or not Windows should be reboot after changing the hostname, as this is required for the change to take effect.",
|
48
64
|
default: true
|
@@ -67,7 +83,8 @@ class Chef
|
|
67
83
|
def updated_ec2_config_xml
|
68
84
|
begin
|
69
85
|
require "rexml/document" unless defined?(REXML::Document)
|
70
|
-
|
86
|
+
config_file = 'C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml'
|
87
|
+
config = REXML::Document.new(::File.read(config_file))
|
71
88
|
# find an element named State with a sibling element whose value is Ec2SetComputerName
|
72
89
|
REXML::XPath.each(config, "//Plugin/State[../Name/text() = 'Ec2SetComputerName']") do |element|
|
73
90
|
element.text = "Disabled"
|
@@ -219,47 +236,35 @@ class Chef
|
|
219
236
|
end
|
220
237
|
|
221
238
|
else # windows
|
222
|
-
WINDOWS_EC2_CONFIG = 'C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml'.freeze
|
223
|
-
|
224
239
|
raise "Windows hostnames cannot contain a period." if new_resource.hostname.match?(/\./)
|
225
240
|
|
226
241
|
# suppress EC2 config service from setting our hostname
|
227
|
-
if ::File.exist?(
|
242
|
+
if ::File.exist?('C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml')
|
228
243
|
xml_contents = updated_ec2_config_xml
|
229
244
|
if xml_contents.empty?
|
230
245
|
Chef::Log.warn('Unable to properly parse and update C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml contents. Skipping file update.')
|
231
246
|
else
|
232
|
-
file
|
247
|
+
declare_resource(:file, 'C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml') do
|
233
248
|
content xml_contents
|
234
249
|
end
|
235
250
|
end
|
236
251
|
end
|
237
252
|
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
# reboot because $windows
|
247
|
-
reboot "setting hostname" do
|
248
|
-
reason "#{Chef::Dist::PRODUCT} updated system hostname"
|
249
|
-
only_if { new_resource.windows_reboot }
|
250
|
-
action :request_reboot
|
251
|
-
end
|
253
|
+
# update via netdom
|
254
|
+
declare_resource(:powershell_script, "set hostname") do
|
255
|
+
code <<-EOH
|
256
|
+
$sysInfo = Get-WmiObject -Class Win32_ComputerSystem
|
257
|
+
$sysInfo.Rename("#{new_resource.hostname}")
|
258
|
+
EOH
|
259
|
+
notifies :request_reboot, "reboot[setting hostname]"
|
260
|
+
not_if { Socket.gethostbyname(Socket.gethostname).first == new_resource.hostname }
|
252
261
|
end
|
253
|
-
end
|
254
|
-
end
|
255
262
|
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
Array(action).each do |action|
|
262
|
-
run_action(action)
|
263
|
+
# reboot because $windows
|
264
|
+
declare_resource(:reboot, "setting hostname") do
|
265
|
+
reason "chef setting hostname"
|
266
|
+
action :nothing
|
267
|
+
only_if { new_resource.windows_reboot }
|
263
268
|
end
|
264
269
|
end
|
265
270
|
end
|