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
@@ -24,10 +24,30 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
-
|
27
|
+
provides :openssl_ec_public_key
|
28
28
|
|
29
|
-
description "Use the openssl_ec_public_key resource to generate elliptic curve (EC) public key files from a given EC private key."
|
29
|
+
description "Use the **openssl_ec_public_key** resource to generate elliptic curve (EC) public key files from a given EC private key."
|
30
30
|
introduced "14.4"
|
31
|
+
examples <<~DOC
|
32
|
+
Generate new ec public key from a private key on disk
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
openssl_ec_public_key '/etc/ssl_files/eckey_prime256v1_des3.pub' do
|
36
|
+
private_key_path '/etc/ssl_files/eckey_prime256v1_des3.pem'
|
37
|
+
private_key_pass 'something'
|
38
|
+
action :create
|
39
|
+
end
|
40
|
+
```
|
41
|
+
|
42
|
+
Generate new ec public key by passing in a private key
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
openssl_ec_public_key '/etc/ssl_files/eckey_prime256v1_des3_2.pub' do
|
46
|
+
private_key_content "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEII2VAU9re44mAUzYPWCg+qqwdmP8CplsEg0b/DYPXLg2oAoGCCqGSM49\nAwEHoUQDQgAEKkpMCbIQ2C6Qlp/B+Odp1a9Y06Sm8yqPvCVIkWYP7M8PX5+RmoIv\njGBVf/+mVBx77ji3NpTilMUt2KPZ87lZ3w==\n-----END EC PRIVATE KEY-----\n"
|
47
|
+
action :create
|
48
|
+
end
|
49
|
+
```
|
50
|
+
DOC
|
31
51
|
|
32
52
|
property :path, String,
|
33
53
|
description: "An optional property for specifying the path to write the file to if it differs from the resource block's name.",
|
@@ -23,12 +23,31 @@ class Chef
|
|
23
23
|
require_relative "../mixin/openssl_helper"
|
24
24
|
include Chef::Mixin::OpenSSLHelper
|
25
25
|
|
26
|
-
resource_name :openssl_rsa_private_key
|
27
26
|
provides(:openssl_rsa_private_key) { true }
|
28
27
|
provides(:openssl_rsa_key) { true } # legacy cookbook resource name
|
29
28
|
|
30
|
-
description "Use the openssl_rsa_private_key resource to generate RSA private key files. If a valid RSA key file can be opened at the specified location, no new file will be created. If the RSA key file cannot be opened, either because it does not exist or because the password to the RSA key file does not match the password in the recipe, it will be overwritten."
|
29
|
+
description "Use the **openssl_rsa_private_key** resource to generate RSA private key files. If a valid RSA key file can be opened at the specified location, no new file will be created. If the RSA key file cannot be opened, either because it does not exist or because the password to the RSA key file does not match the password in the recipe, it will be overwritten."
|
31
30
|
introduced "14.0"
|
31
|
+
examples <<~DOC
|
32
|
+
Generate new 2048bit key with the default des3 cipher
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
openssl_rsa_private_key '/etc/ssl_files/rsakey_des3.pem' do
|
36
|
+
key_length 2048
|
37
|
+
action :create
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
Generate new 1024bit key with the aes-128-cbc cipher
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
openssl_rsa_key '/etc/ssl_files/rsakey_aes128cbc.pem' do
|
45
|
+
key_length 1024
|
46
|
+
key_cipher 'aes-128-cbc'
|
47
|
+
action :create
|
48
|
+
end
|
49
|
+
```
|
50
|
+
DOC
|
32
51
|
|
33
52
|
property :path, String,
|
34
53
|
description: "An optional property for specifying the path to write the file to if it differs from the resource block's name.",
|
@@ -23,10 +23,31 @@ class Chef
|
|
23
23
|
require_relative "../mixin/openssl_helper"
|
24
24
|
include Chef::Mixin::OpenSSLHelper
|
25
25
|
|
26
|
-
resource_name :openssl_rsa_public_key
|
27
26
|
provides(:openssl_rsa_public_key) { true }
|
28
27
|
|
29
|
-
|
28
|
+
examples <<~DOC
|
29
|
+
Generate new public key from a private key on disk
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
openssl_rsa_public_key '/etc/ssl_files/rsakey_des3.pub' do
|
33
|
+
private_key_path '/etc/ssl_files/rsakey_des3.pem'
|
34
|
+
private_key_pass 'something'
|
35
|
+
action :create
|
36
|
+
end
|
37
|
+
```
|
38
|
+
|
39
|
+
Generate new public key by passing in a private key
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
openssl_rsa_public_key '/etc/ssl_files/rsakey_2.pub' do
|
43
|
+
private_key_pass 'something'
|
44
|
+
private_key_content "-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: DES-EDE3-CBC,5EE0AE9A5FE3342E\n\nyb930kj5/4/nd738dPx6XdbDrMCvqkldaz0rHNw8xsWvwARrl/QSPwROG3WY7ROl\nEUttVlLaeVaqRPfQbmTUfzGI8kTMmDWKjw52gJUx2YJTYRgMHAB0dzYIRjeZAaeS\nypXnEfouVav+jKTmmehr1WuVKbzRhQDBSalzeUwsPi2+fb3Bfuo1dRW6xt8yFuc4\nAkv1hCglymPzPHE2L0nSGjcgA2DZu+/S8/wZ4E63442NHPzO4VlLvpNvJrYpEWq9\nB5mJzcdXPeOTjqd13olNTlOZMaKxu9QShu50GreCTVsl8VRkK8NtwbWuPGBZlIFa\njzlS/RaLuzNzfajaKMkcIYco9t7gN2DwnsACHKqEYT8248Ii3NQ+9/M5YcmpywQj\nWGr0UFCSAdCky1lRjwT+zGQKohr+dVR1GaLem+rSZH94df4YBxDYw4rjsKoEhvXB\nv2Vlx+G7Vl2NFiZzxUKh3MvQLr/NDElpG1pYWDiE0DIG13UqEG++cS870mcEyfFh\nSF2SXYHLWyAhDK0viRDChJyFMduC4E7a2P9DJhL3ZvM0KZ1SLMwROc1XuZ704GwO\nYUqtCX5OOIsTti1Z74jQm9uWFikhgWByhVtu6sYL1YTqtiPJDMFhA560zp/k/qLO\nFKiM4eUWV8AI8AVwT6A4o45N2Ru8S48NQyvh/ADFNrgJbVSeDoYE23+DYKpzbaW9\n00BD/EmUQqaQMc670vmI+CIdcdE7L1zqD6MZN7wtPaRIjx4FJBGsFoeDShr+LoTD\nrwbadwrbc2Rf4DWlvFwLJ4pvNvdtY3wtBu79UCOol0+t8DVVSPVASsh+tp8XncDE\nKRljj88WwBjX7/YlRWvQpe5y2UrsHI0pNy8TA1Xkf6GPr6aS2TvQD5gOrAVReSse\n/kktCzZQotjmY1odvo90Zi6A9NCzkI4ZLgAuhiKDPhxZg61IeLppnfFw0v3H4331\nV9SMYgr1Ftov0++x7q9hFPIHwZp6NHHOhdHNI80XkHqtY/hEvsh7MhFMYCgSY1pa\nK/gMcZ/5Wdg9LwOK6nYRmtPtg6fuqj+jB3Rue5/p9dt4kfom4etCSeJPdvP1Mx2I\neNmyQ/7JN9N87FsfZsIj5OK9OB0fPdj0N0m1mlHM/mFt5UM5x39u13QkCt7skEF+\nyOptXcL629/xwm8eg4EXnKFk330WcYSw+sYmAQ9ZTsBxpCMkz0K4PBTPWWXx63XS\nc4J0r88kbCkMCNv41of8ceeGzFrC74dG7i3IUqZzMzRP8cFeps8auhweUHD2hULs\nXwwtII0YQ6/Fw4hgGQ5//0ASdvAicvH0l1jOQScHzXC2QWNg3GttueB/kmhMeGGm\nsHOJ1rXQ4oEckFvBHOvzjP3kuRHSWFYDx35RjWLAwLCG9odQUApHjLBgFNg9yOR0\njW9a2SGxRvBAfdjTa9ZBBrbjlaF57hq7mXws90P88RpAL+xxCAZUElqeW2Rb2rQ6\nCbz4/AtPekV1CYVodGkPutOsew2zjNqlNH+M8XzfonA60UAH20TEqAgLKwgfgr+a\nc+rXp1AupBxat4EHYJiwXBB9XcVwyp5Z+/dXsYmLXzoMOnp8OFyQ9H8R7y9Y0PEu\n-----END RSA PRIVATE KEY-----\n"
|
45
|
+
action :create
|
46
|
+
end
|
47
|
+
```
|
48
|
+
DOC
|
49
|
+
|
50
|
+
description "Use the **openssl_rsa_public_key** resource to generate RSA public key files for a given RSA private key."
|
30
51
|
introduced "14.0"
|
31
52
|
|
32
53
|
property :path, String,
|
@@ -24,11 +24,47 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
-
|
27
|
+
provides :openssl_x509_certificate
|
28
28
|
provides(:openssl_x509) { true } # legacy cookbook name.
|
29
29
|
|
30
|
-
description "Use the openssl_x509_certificate resource to generate signed or self-signed, PEM-formatted x509 certificates. If no existing key is specified, the resource will automatically generate a passwordless key with the certificate. If a CA private key and certificate are provided, the certificate will be signed with them. Note: This resource was renamed from openssl_x509 to openssl_x509_certificate. The legacy name will continue to function, but cookbook code should be updated for the new resource name."
|
30
|
+
description "Use the **openssl_x509_certificate** resource to generate signed or self-signed, PEM-formatted x509 certificates. If no existing key is specified, the resource will automatically generate a passwordless key with the certificate. If a CA private key and certificate are provided, the certificate will be signed with them. Note: This resource was renamed from openssl_x509 to openssl_x509_certificate. The legacy name will continue to function, but cookbook code should be updated for the new resource name."
|
31
31
|
introduced "14.4"
|
32
|
+
examples <<~DOC
|
33
|
+
Create a simple self-signed certificate file
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
openssl_x509_certificate '/etc/httpd/ssl/mycert.pem' do
|
37
|
+
common_name 'www.f00bar.com'
|
38
|
+
org 'Foo Bar'
|
39
|
+
org_unit 'Lab'
|
40
|
+
country 'US'
|
41
|
+
end
|
42
|
+
```
|
43
|
+
|
44
|
+
Create a certificate using additional options
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
openssl_x509_certificate '/etc/ssl_files/my_signed_cert.crt' do
|
48
|
+
common_name 'www.f00bar.com'
|
49
|
+
ca_key_file '/etc/ssl_files/my_ca.key'
|
50
|
+
ca_cert_file '/etc/ssl_files/my_ca.crt'
|
51
|
+
expire 365
|
52
|
+
extensions(
|
53
|
+
'keyUsage' => {
|
54
|
+
'values' => %w(
|
55
|
+
keyEncipherment
|
56
|
+
digitalSignature),
|
57
|
+
'critical' => true,
|
58
|
+
},
|
59
|
+
'extendedKeyUsage' => {
|
60
|
+
'values' => %w(serverAuth),
|
61
|
+
'critical' => false,
|
62
|
+
}
|
63
|
+
)
|
64
|
+
subject_alt_name ['IP:127.0.0.1', 'DNS:localhost.localdomain']
|
65
|
+
end
|
66
|
+
```
|
67
|
+
DOC
|
32
68
|
|
33
69
|
property :path, String,
|
34
70
|
description: "An optional property for specifying the path to write the file to if it differs from the resource block's name.",
|
@@ -24,10 +24,21 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
-
|
27
|
+
provides :openssl_x509_crl
|
28
28
|
|
29
|
-
description "Use the openssl_x509_crl resource to generate PEM-formatted x509 certificate revocation list (CRL) files."
|
29
|
+
description "Use the **openssl_x509_crl** resource to generate PEM-formatted x509 certificate revocation list (CRL) files."
|
30
30
|
introduced "14.4"
|
31
|
+
examples <<~DOC
|
32
|
+
Generate a CRL file given a cert file and key file
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
openssl_x509_crl '/etc/ssl_files/my_ca2.crl' do
|
36
|
+
ca_cert_file '/etc/ssl_files/my_ca2.crt'
|
37
|
+
ca_key_file '/etc/ssl_files/my_ca2.key'
|
38
|
+
expire 1
|
39
|
+
end
|
40
|
+
```
|
41
|
+
DOC
|
31
42
|
|
32
43
|
property :path, String,
|
33
44
|
description: "An optional property for specifying the path to write the file to if it differs from the resource block's name.",
|
@@ -24,10 +24,46 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
-
|
27
|
+
provides :openssl_x509_request
|
28
28
|
|
29
|
-
description "Use the openssl_x509_request resource to generate PEM-formatted x509 certificates requests. If no existing key is specified, the resource will automatically generate a passwordless key with the certificate."
|
29
|
+
description "Use the **openssl_x509_request** resource to generate PEM-formatted x509 certificates requests. If no existing key is specified, the resource will automatically generate a passwordless key with the certificate."
|
30
30
|
introduced "14.4"
|
31
|
+
examples <<~DOC
|
32
|
+
Generate new ec key and csr file
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
openssl_x509_request '/etc/ssl_files/my_ec_request.csr' do
|
36
|
+
common_name 'myecrequest.example.com'
|
37
|
+
org 'Test Kitchen Example'
|
38
|
+
org_unit 'Kitchens'
|
39
|
+
country 'UK'
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
Generate a new csr file from an existing ec key
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
openssl_x509_request '/etc/ssl_files/my_ec_request2.csr' do
|
47
|
+
common_name 'myecrequest2.example.com'
|
48
|
+
org 'Test Kitchen Example'
|
49
|
+
org_unit 'Kitchens'
|
50
|
+
country 'UK'
|
51
|
+
key_file '/etc/ssl_files/my_ec_request.key'
|
52
|
+
end
|
53
|
+
```
|
54
|
+
|
55
|
+
Generate new rsa key and csr file
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
openssl_x509_request '/etc/ssl_files/my_rsa_request.csr' do
|
59
|
+
common_name 'myrsarequest.example.com'
|
60
|
+
org 'Test Kitchen Example'
|
61
|
+
org_unit 'Kitchens'
|
62
|
+
country 'UK'
|
63
|
+
key_type 'rsa'
|
64
|
+
end
|
65
|
+
```
|
66
|
+
DOC
|
31
67
|
|
32
68
|
property :path, String, name_property: true,
|
33
69
|
description: "An optional property for specifying the path to write the file to if it differs from the resource block's name."
|
@@ -21,11 +21,12 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class OsxProfile < Chef::Resource
|
24
|
-
|
24
|
+
unified_mode true
|
25
|
+
|
25
26
|
provides :osx_profile
|
26
27
|
provides :osx_config_profile
|
27
28
|
|
28
|
-
description "Use the osx_profile resource to manage configuration profiles (.mobileconfig files) on the macOS platform. The osx_profile resource installs profiles by using the uuidgen library to generate a unique ProfileUUID, and then using the profiles command to install the profile on the system."
|
29
|
+
description "Use the **osx_profile** resource to manage configuration profiles (.mobileconfig files) on the macOS platform. The osx_profile resource installs profiles by using the uuidgen library to generate a unique ProfileUUID, and then using the profiles command to install the profile on the system."
|
29
30
|
introduced "12.7"
|
30
31
|
|
31
32
|
default_action :install
|
@@ -33,7 +34,7 @@ class Chef
|
|
33
34
|
|
34
35
|
property :profile_name, String,
|
35
36
|
description: "Use to specify the name of the profile, if different from the name of the resource block.",
|
36
|
-
name_property: true
|
37
|
+
name_property: true
|
37
38
|
|
38
39
|
property :profile, [ String, Hash ],
|
39
40
|
description: "Use to specify a profile. This may be the name of a profile contained in a cookbook or a Hash that contains the contents of the profile."
|
@@ -22,9 +22,10 @@ require_relative "../resource"
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
24
24
|
class Package < Chef::Resource
|
25
|
-
|
25
|
+
unified_mode true
|
26
|
+
provides :package
|
26
27
|
|
27
|
-
description "Use the package resource to manage packages. When the package is"\
|
28
|
+
description "Use the **package** resource to manage packages. When the package is"\
|
28
29
|
" installed from a local file (such as with RubyGems, dpkg, or RPM"\
|
29
30
|
" Package Manager), the file must be added to the node using the remote_file"\
|
30
31
|
" or cookbook_file resources.\n\nThis resource is the base resource for"\
|
@@ -21,10 +21,11 @@ require_relative "package"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class PacmanPackage < Chef::Resource::Package
|
24
|
-
|
24
|
+
unified_mode true
|
25
|
+
|
25
26
|
provides :pacman_package
|
26
27
|
|
27
|
-
description "Use the pacman_package resource to manage packages (using pacman) on the Arch Linux platform."
|
28
|
+
description "Use the **pacman_package** resource to manage packages (using pacman) on the Arch Linux platform."
|
28
29
|
end
|
29
30
|
end
|
30
31
|
end
|
@@ -22,17 +22,26 @@ require_relative "../provider/package/paludis"
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
24
24
|
class PaludisPackage < Chef::Resource::Package
|
25
|
-
|
25
|
+
unified_mode true
|
26
|
+
|
26
27
|
provides :paludis_package
|
27
28
|
|
28
|
-
description "Use the paludis_package resource to manage packages for the Paludis platform."
|
29
|
+
description "Use the **paludis_package** resource to manage packages for the Paludis platform."
|
29
30
|
introduced "12.1"
|
30
31
|
|
31
32
|
allowed_actions :install, :remove, :upgrade
|
32
33
|
|
33
|
-
property :
|
34
|
+
property :package_name, String,
|
35
|
+
description: "An optional property to set the package name if it differs from the resource block's name.",
|
36
|
+
identity: true
|
37
|
+
|
38
|
+
property :version, String,
|
39
|
+
description: "The version of a package to be installed or upgraded."
|
40
|
+
|
41
|
+
property :timeout, [String, Integer],
|
34
42
|
description: "The amount of time (in seconds) to wait before timing out.",
|
35
|
-
default: 3600
|
43
|
+
default: 3600,
|
44
|
+
desired_state: false
|
36
45
|
end
|
37
46
|
end
|
38
47
|
end
|
data/lib/chef/resource/perl.rb
CHANGED
@@ -24,12 +24,14 @@ class Chef
|
|
24
24
|
class Perl < Chef::Resource::Script
|
25
25
|
unified_mode true
|
26
26
|
|
27
|
+
provides :perl
|
28
|
+
|
27
29
|
def initialize(name, run_context = nil)
|
28
30
|
super
|
29
31
|
@interpreter = "perl"
|
30
32
|
end
|
31
33
|
|
32
|
-
description "Use the perl resource to execute scripts using the Perl interpreter."\
|
34
|
+
description "Use the **perl** resource to execute scripts using the Perl interpreter."\
|
33
35
|
" This resource may also use any of the actions and properties that are"\
|
34
36
|
" available to the execute resource. Commands that are executed with this"\
|
35
37
|
" resource are (by their nature) not idempotent, as they are typically"\
|
@@ -0,0 +1,207 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright 2017-2020, Microsoft Corporation
|
3
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
require_relative "../resource"
|
19
|
+
require "plist"
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
class Resource
|
23
|
+
|
24
|
+
class PlistResource < Chef::Resource # we name this PlistResource to avoid confusion with Plist from the plist gem
|
25
|
+
unified_mode true
|
26
|
+
|
27
|
+
provides :plist
|
28
|
+
|
29
|
+
description "Use the **plist** resource to set config values in plist files on macOS systems."
|
30
|
+
introduced "16.0"
|
31
|
+
|
32
|
+
property :path, String, name_property: true
|
33
|
+
property :entry, String
|
34
|
+
property :value, [TrueClass, FalseClass, String, Integer, Float, Hash]
|
35
|
+
property :encoding, String, default: "binary"
|
36
|
+
property :owner, String, default: "root"
|
37
|
+
property :group, String, default: "wheel"
|
38
|
+
property :mode, [String, Integer]
|
39
|
+
|
40
|
+
PLISTBUDDY_EXECUTABLE = "/usr/libexec/PlistBuddy".freeze
|
41
|
+
DEFAULTS_EXECUTABLE = "/usr/bin/defaults".freeze
|
42
|
+
PLUTIL_EXECUTABLE = "/usr/bin/plutil".freeze
|
43
|
+
PLUTIL_FORMAT_MAP = { "us-ascii" => "xml1",
|
44
|
+
"text/xml" => "xml1",
|
45
|
+
"utf-8" => "xml1",
|
46
|
+
"binary" => "binary1" }.freeze
|
47
|
+
|
48
|
+
load_current_value do |desired|
|
49
|
+
current_value_does_not_exist! unless ::File.exist? desired.path
|
50
|
+
entry desired.entry if entry_in_plist? desired.entry, desired.path
|
51
|
+
|
52
|
+
setting = setting_from_plist desired.entry, desired.path
|
53
|
+
value convert_to_data_type_from_string(setting[:key_type], setting[:key_value])
|
54
|
+
|
55
|
+
file_type_cmd = shell_out "/usr/bin/file", "--brief", "--mime-encoding", "--preserve-date", desired.path
|
56
|
+
encoding file_type_cmd.stdout.chomp
|
57
|
+
|
58
|
+
file_owner_cmd = shell_out("/usr/bin/stat", "-f", "%Su", desired.path)
|
59
|
+
owner file_owner_cmd.stdout.chomp
|
60
|
+
|
61
|
+
file_group_cmd = shell_out("/usr/bin/stat", "-f", "%Sg", desired.path)
|
62
|
+
group file_group_cmd.stdout.chomp
|
63
|
+
end
|
64
|
+
|
65
|
+
action :set do
|
66
|
+
converge_if_changed :path do
|
67
|
+
converge_by "create new plist: '#{new_resource.path}'" do
|
68
|
+
file new_resource.path do
|
69
|
+
content {}.to_plist
|
70
|
+
owner new_resource.owner
|
71
|
+
group new_resource.group
|
72
|
+
mode new_resource.mode if property_is_set?(:mode)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
plist_file_name = ::File.basename(new_resource.path)
|
78
|
+
|
79
|
+
converge_if_changed :entry do
|
80
|
+
converge_by "add entry \"#{new_resource.entry}\" to #{plist_file_name}" do
|
81
|
+
shell_out!(plistbuddy_command(:add, new_resource.entry, new_resource.path, new_resource.value))
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
converge_if_changed :value do
|
86
|
+
converge_by "#{plist_file_name}: set #{new_resource.entry} to #{new_resource.value}" do
|
87
|
+
shell_out!(plistbuddy_command(:set, new_resource.entry, new_resource.path, new_resource.value))
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
converge_if_changed :encoding do
|
92
|
+
converge_by "change format" do
|
93
|
+
unless PLUTIL_FORMAT_MAP.key?(new_resource.encoding)
|
94
|
+
Chef::Application.fatal!(
|
95
|
+
"Option encoding must be equal to one of: #{PLUTIL_FORMAT_MAP.keys}! You passed \"#{new_resource.encoding}\"."
|
96
|
+
)
|
97
|
+
end
|
98
|
+
shell_out!(PLUTIL_EXECUTABLE, "-convert", PLUTIL_FORMAT_MAP[new_resource.encoding], new_resource.path)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
converge_if_changed :owner do
|
103
|
+
converge_by "update owner to #{new_resource.owner}" do
|
104
|
+
file new_resource.path do
|
105
|
+
owner new_resource.owner
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
converge_if_changed :group do
|
111
|
+
converge_by "update group to #{new_resource.group}" do
|
112
|
+
file new_resource.path do
|
113
|
+
group new_resource.group
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
### Question: Should I refactor these methods into an action_class?
|
120
|
+
### Answer: NO
|
121
|
+
### Why: We need them in both the action and in load_current_value. If you put them in the
|
122
|
+
### action class then they're only in the Provider class and are not available to load_current_value
|
123
|
+
|
124
|
+
def convert_to_data_type_from_string(type, value)
|
125
|
+
case type
|
126
|
+
when "boolean"
|
127
|
+
# Since we've determined this is a boolean data type, we can assume that:
|
128
|
+
# If the value as an int is 1, return true
|
129
|
+
# If the value as an int is 0 (not 1), return false
|
130
|
+
value.to_i == 1
|
131
|
+
when "integer"
|
132
|
+
value.to_i
|
133
|
+
when "float"
|
134
|
+
value.to_f
|
135
|
+
when "string"
|
136
|
+
value
|
137
|
+
when "dictionary"
|
138
|
+
value
|
139
|
+
when nil
|
140
|
+
""
|
141
|
+
else
|
142
|
+
raise "Unknown or unsupported data type: #{type.class}"
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
def type_to_commandline_string(value)
|
147
|
+
case value
|
148
|
+
when Array
|
149
|
+
"array"
|
150
|
+
when Integer
|
151
|
+
"integer"
|
152
|
+
when FalseClass
|
153
|
+
"bool"
|
154
|
+
when TrueClass
|
155
|
+
"bool"
|
156
|
+
when Hash
|
157
|
+
"dict"
|
158
|
+
when String
|
159
|
+
"string"
|
160
|
+
when Float
|
161
|
+
"float"
|
162
|
+
else
|
163
|
+
raise "Unknown or unsupported data type: #{value} of #{value.class}"
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def entry_in_plist?(entry, path)
|
168
|
+
print_entry = plistbuddy_command :print, entry, path
|
169
|
+
cmd = shell_out print_entry
|
170
|
+
cmd.exitstatus == 0
|
171
|
+
end
|
172
|
+
|
173
|
+
def plistbuddy_command(subcommand, entry, path, value = nil)
|
174
|
+
sep = " "
|
175
|
+
arg = case subcommand.to_s
|
176
|
+
when "add"
|
177
|
+
type_to_commandline_string(value)
|
178
|
+
when "set"
|
179
|
+
if value.is_a?(Hash)
|
180
|
+
sep = ":"
|
181
|
+
value.map { |k, v| "#{k} #{v}" }
|
182
|
+
else
|
183
|
+
value
|
184
|
+
end
|
185
|
+
else
|
186
|
+
""
|
187
|
+
end
|
188
|
+
entry_with_arg = ["\"#{entry}\"", arg].join(sep).strip
|
189
|
+
subcommand = "#{subcommand.capitalize} :#{entry_with_arg}"
|
190
|
+
[PLISTBUDDY_EXECUTABLE, "-c", "\'#{subcommand}\'", "\"#{path}\""].join(" ")
|
191
|
+
end
|
192
|
+
|
193
|
+
def setting_from_plist(entry, path)
|
194
|
+
defaults_read_type_output = shell_out(DEFAULTS_EXECUTABLE, "read-type", path, entry).stdout
|
195
|
+
data_type = defaults_read_type_output.split.last
|
196
|
+
|
197
|
+
if value.class == Hash
|
198
|
+
plutil_output = shell_out(PLUTIL_EXECUTABLE, "-extract", entry, "xml1", "-o", "-", path).stdout.chomp
|
199
|
+
{ key_type: data_type, key_value: ::Plist.parse_xml(plutil_output) }
|
200
|
+
else
|
201
|
+
defaults_read_output = shell_out(DEFAULTS_EXECUTABLE, "read", path, entry).stdout
|
202
|
+
{ key_type: data_type, key_value: defaults_read_output.strip }
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|