chef 16.3.45-universal-mingw32 → 16.5.77-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 +1 -1
- data/Rakefile +2 -2
- data/bin/knife +1 -1
- data/chef-universal-mingw32.gemspec +0 -1
- data/chef.gemspec +2 -1
- data/distro/templates/powershell/chef/chef.psm1.erb +18 -18
- data/ext/win32-eventlog/Rakefile +2 -2
- data/ext/win32-eventlog/chef-log.man.erb +4 -4
- data/lib/chef/action_collection.rb +4 -0
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +20 -18
- data/lib/chef/application/apply.rb +17 -12
- data/lib/chef/application/base.rb +26 -23
- data/lib/chef/application/client.rb +10 -4
- data/lib/chef/application/exit_code.rb +13 -4
- data/lib/chef/application/knife.rb +22 -11
- data/lib/chef/application/solo.rb +2 -1
- data/lib/chef/application/windows_service.rb +39 -39
- data/lib/chef/application/windows_service_manager.rb +6 -6
- data/lib/chef/chef_class.rb +0 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +55 -55
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
- 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 +2 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
- 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/knife.rb +2 -2
- data/lib/chef/chef_fs/parallelizer.rb +0 -1
- data/lib/chef/client.rb +21 -22
- data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/data_collector.rb +6 -5
- data/lib/chef/data_collector/config_validation.rb +22 -13
- data/lib/chef/data_collector/run_end_message.rb +13 -3
- data/lib/chef/data_collector/run_start_message.rb +1 -1
- data/lib/chef/deprecated.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +2 -2
- data/lib/chef/digester.rb +2 -2
- data/lib/chef/dsl/chef_vault.rb +1 -1
- data/lib/chef/dsl/data_query.rb +2 -2
- data/lib/chef/dsl/platform_introspection.rb +9 -9
- data/lib/chef/encrypted_data_bag_item.rb +3 -4
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
- data/lib/chef/environment.rb +4 -4
- data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
- data/lib/chef/exceptions.rb +5 -5
- data/lib/chef/file_access_control/windows.rb +5 -1
- data/lib/chef/file_content_management/tempfile.rb +10 -10
- data/lib/chef/formatters/doc.rb +7 -6
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
- data/lib/chef/formatters/indentable_output_stream.rb +2 -2
- data/lib/chef/formatters/minimal.rb +5 -4
- data/lib/chef/http.rb +6 -3
- data/lib/chef/http/auth_credentials.rb +5 -1
- data/lib/chef/http/authenticator.rb +1 -1
- data/lib/chef/http/basic_client.rb +4 -2
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +7 -5
- data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
- data/lib/chef/http/ssl_policies.rb +1 -1
- data/lib/chef/json_compat.rb +2 -2
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +18 -16
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
- data/lib/chef/knife/client_create.rb +3 -3
- data/lib/chef/knife/config_get.rb +8 -97
- data/lib/chef/knife/config_get_profile.rb +9 -9
- data/lib/chef/knife/config_list.rb +139 -0
- data/lib/chef/knife/config_list_profiles.rb +8 -98
- data/lib/chef/knife/config_show.rb +127 -0
- data/lib/chef/knife/config_use.rb +61 -0
- data/lib/chef/knife/config_use_profile.rb +9 -24
- data/lib/chef/knife/configure.rb +4 -2
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +23 -23
- data/lib/chef/knife/core/bootstrap_context.rb +2 -2
- data/lib/chef/knife/core/generic_presenter.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +2 -2
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +42 -34
- data/lib/chef/knife/delete.rb +15 -15
- data/lib/chef/knife/exec.rb +4 -4
- data/lib/chef/knife/node_policy_set.rb +2 -2
- data/lib/chef/knife/node_run_list_add.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/node_run_list_set.rb +1 -1
- data/lib/chef/knife/node_show.rb +2 -2
- data/lib/chef/knife/role_env_run_list_add.rb +1 -1
- data/lib/chef/knife/role_env_run_list_set.rb +1 -1
- data/lib/chef/knife/role_run_list_add.rb +1 -1
- data/lib/chef/knife/role_run_list_set.rb +1 -1
- data/lib/chef/knife/search.rb +0 -1
- data/lib/chef/knife/serve.rb +3 -3
- data/lib/chef/knife/ssh.rb +24 -9
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/status.rb +2 -2
- data/lib/chef/knife/tag_create.rb +1 -1
- data/lib/chef/knife/tag_delete.rb +1 -1
- data/lib/chef/knife/user_create.rb +2 -2
- data/lib/chef/knife/xargs.rb +19 -19
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/local_mode.rb +2 -2
- data/lib/chef/log/syslog.rb +2 -2
- data/lib/chef/log/winevt.rb +2 -2
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/deep_merge.rb +35 -18
- data/lib/chef/mixin/openssl_helper.rb +4 -5
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/mixin/template.rb +3 -3
- data/lib/chef/mixin/uris.rb +4 -2
- data/lib/chef/mixin/versioned_api.rb +1 -2
- data/lib/chef/mixin/which.rb +1 -1
- data/lib/chef/monkey_patches/net_http.rb +4 -4
- data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
- data/lib/chef/node/attribute.rb +2 -4
- data/lib/chef/node_map.rb +4 -4
- data/lib/chef/platform/service_helpers.rb +1 -1
- data/lib/chef/policy_builder/dynamic.rb +2 -0
- data/lib/chef/policy_builder/policyfile.rb +2 -2
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider.rb +1 -5
- data/lib/chef/provider/cron/unix.rb +0 -2
- data/lib/chef/provider/file.rb +2 -2
- data/lib/chef/provider/git.rb +5 -5
- data/lib/chef/provider/group.rb +0 -2
- data/lib/chef/provider/group/suse.rb +5 -5
- data/lib/chef/provider/ifconfig.rb +1 -4
- data/lib/chef/provider/launchd.rb +2 -2
- data/lib/chef/provider/link.rb +0 -9
- data/lib/chef/provider/mount.rb +0 -2
- data/lib/chef/provider/mount/linux.rb +63 -0
- data/lib/chef/provider/package.rb +0 -2
- data/lib/chef/provider/package/dpkg.rb +3 -12
- data/lib/chef/provider/package/homebrew.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +22 -19
- data/lib/chef/provider/package/snap.rb +1 -2
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +12 -10
- data/lib/chef/provider/package/zypper.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +21 -5
- data/lib/chef/provider/remote_file/content.rb +3 -0
- data/lib/chef/provider/remote_file/ftp.rb +6 -4
- data/lib/chef/provider/remote_file/sftp.rb +6 -4
- data/lib/chef/provider/route.rb +2 -6
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +4 -4
- data/lib/chef/provider/service/openbsd.rb +1 -4
- data/lib/chef/provider/service/redhat.rb +3 -3
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +10 -10
- data/lib/chef/provider/systemd_unit.rb +0 -2
- data/lib/chef/provider/template/content.rb +1 -0
- data/lib/chef/provider/template_finder.rb +2 -10
- data/lib/chef/provider/user/dscl.rb +7 -7
- data/lib/chef/provider/user/mac.rb +12 -12
- data/lib/chef/provider/windows_task.rb +1 -5
- data/lib/chef/provider/zypper_repository.rb +2 -3
- data/lib/chef/provider_resolver.rb +1 -1
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +2 -2
- data/lib/chef/resource.rb +8 -12
- data/lib/chef/resource/apt_repository.rb +5 -12
- data/lib/chef/resource/bff_package.rb +22 -0
- data/lib/chef/resource/breakpoint.rb +57 -2
- data/lib/chef/resource/build_essential.rb +1 -1
- data/lib/chef/resource/cab_package.rb +29 -0
- data/lib/chef/resource/chef_client_cron.rb +32 -25
- data/lib/chef/resource/chef_client_launchd.rb +194 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
- data/lib/chef/resource/chef_client_systemd_timer.rb +26 -19
- data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
- data/lib/chef/resource/chef_gem.rb +10 -10
- data/lib/chef/resource/chef_handler.rb +149 -4
- data/lib/chef/resource/chef_sleep.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +14 -14
- data/lib/chef/resource/cookbook_file.rb +2 -2
- data/lib/chef/resource/cron/_cron_shared.rb +1 -0
- data/lib/chef/resource/cron/cron_d.rb +0 -1
- data/lib/chef/resource/dnf_package.rb +2 -2
- data/lib/chef/resource/dsc_resource.rb +0 -1
- data/lib/chef/resource/dsc_script.rb +2 -2
- data/lib/chef/resource/execute.rb +8 -9
- data/lib/chef/resource/file.rb +4 -4
- data/lib/chef/resource/gem_package.rb +5 -5
- data/lib/chef/resource/homebrew_package.rb +3 -3
- data/lib/chef/resource/homebrew_update.rb +7 -7
- data/lib/chef/resource/hostname.rb +2 -2
- data/lib/chef/resource/launchd.rb +2 -1
- data/lib/chef/resource/locale.rb +2 -2
- data/lib/chef/resource/macos_userdefaults.rb +3 -3
- data/lib/chef/resource/notify_group.rb +0 -1
- data/lib/chef/resource/ohai.rb +46 -3
- data/lib/chef/resource/ohai_hint.rb +33 -0
- data/lib/chef/resource/openssl_dhparam.rb +29 -5
- data/lib/chef/resource/openssl_ec_private_key.rb +8 -3
- data/lib/chef/resource/openssl_ec_public_key.rb +4 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +8 -3
- data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
- data/lib/chef/resource/openssl_x509_certificate.rb +38 -35
- data/lib/chef/resource/openssl_x509_crl.rb +21 -10
- data/lib/chef/resource/openssl_x509_request.rb +37 -36
- data/lib/chef/resource/osx_profile.rb +292 -6
- data/lib/chef/resource/plist.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +6 -6
- data/lib/chef/resource/powershell_script.rb +24 -30
- data/lib/chef/resource/reboot.rb +2 -2
- data/lib/chef/resource/remote_file.rb +3 -3
- data/lib/chef/resource/rhsm_register.rb +22 -10
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/scm/subversion.rb +2 -2
- data/lib/chef/resource/service.rb +3 -3
- data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
- data/lib/chef/resource/sudo.rb +1 -1
- 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 -1
- data/lib/chef/resource/support/ulimit.erb +1 -1
- data/lib/chef/resource/sysctl.rb +6 -10
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +2 -2
- data/lib/chef/resource/timezone.rb +112 -73
- data/lib/chef/resource/windows_ad_join.rb +12 -3
- data/lib/chef/resource/windows_audit_policy.rb +3 -0
- data/lib/chef/resource/windows_auto_run.rb +2 -0
- data/lib/chef/resource/windows_certificate.rb +8 -4
- data/lib/chef/resource/windows_dfs_folder.rb +2 -0
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
- data/lib/chef/resource/windows_dfs_server.rb +2 -0
- data/lib/chef/resource/windows_dns_record.rb +10 -7
- data/lib/chef/resource/windows_dns_zone.rb +12 -7
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_feature_dism.rb +10 -0
- data/lib/chef/resource/windows_feature_powershell.rb +14 -2
- data/lib/chef/resource/windows_firewall_profile.rb +24 -20
- data/lib/chef/resource/windows_firewall_rule.rb +5 -3
- data/lib/chef/resource/windows_font.rb +3 -1
- data/lib/chef/resource/windows_package.rb +28 -5
- data/lib/chef/resource/windows_pagefile.rb +4 -0
- data/lib/chef/resource/windows_printer.rb +22 -21
- data/lib/chef/resource/windows_printer_port.rb +20 -17
- data/lib/chef/resource/windows_security_policy.rb +2 -0
- data/lib/chef/resource/windows_share.rb +5 -3
- data/lib/chef/resource/windows_shortcut.rb +2 -0
- data/lib/chef/resource/windows_uac.rb +2 -0
- data/lib/chef/resource/windows_user_privilege.rb +54 -53
- data/lib/chef/resource/windows_workgroup.rb +5 -6
- data/lib/chef/resource/yum_package.rb +2 -2
- data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
- data/lib/chef/resource_reporter.rb +0 -2
- data/lib/chef/resources.rb +3 -1
- data/lib/chef/role.rb +2 -2
- data/lib/chef/run_context.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +21 -21
- data/lib/chef/run_lock.rb +2 -2
- data/lib/chef/run_status.rb +2 -6
- data/lib/chef/search/query.rb +6 -5
- data/lib/chef/shell.rb +32 -27
- data/lib/chef/shell/ext.rb +11 -11
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/train_transport.rb +5 -104
- data/lib/chef/util/backup.rb +2 -2
- data/lib/chef/util/diff.rb +14 -14
- data/lib/chef/util/powershell/cmdlet.rb +4 -2
- data/lib/chef/util/powershell/ps_credential.rb +18 -14
- data/lib/chef/util/threaded_job_queue.rb +0 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/crypto.rb +1 -1
- data/lib/chef/win32/file.rb +3 -3
- data/lib/chef/win32/file/version_info.rb +5 -5
- data/lib/chef/win32/registry.rb +1 -2
- data/lib/chef/win32/unicode.rb +1 -1
- data/spec/data/shef-config.rb +1 -1
- data/spec/data/ssl/chef-rspec.cert +15 -15
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
- data/spec/functional/resource/aix_service_spec.rb +2 -2
- data/spec/functional/resource/aixinit_service_spec.rb +8 -8
- data/spec/functional/resource/bff_spec.rb +2 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/dsc_script_spec.rb +0 -1
- data/spec/functional/resource/group_spec.rb +6 -6
- data/spec/functional/resource/insserv_spec.rb +5 -5
- data/spec/functional/resource/link_spec.rb +20 -20
- data/spec/functional/resource/powershell_script_spec.rb +4 -4
- data/spec/functional/resource/rpm_spec.rb +2 -2
- data/spec/functional/resource/user/dscl_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +1 -1
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_font_spec.rb +49 -0
- data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
- data/spec/functional/resource/windows_task_spec.rb +13 -13
- data/spec/functional/run_lock_spec.rb +24 -24
- data/spec/functional/version_spec.rb +3 -3
- data/spec/functional/win32/registry_spec.rb +8 -8
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/client/client_spec.rb +4 -4
- data/spec/integration/client/exit_code_spec.rb +3 -2
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +12 -12
- data/spec/integration/knife/config_list_spec.rb +220 -0
- data/spec/integration/knife/config_show_spec.rb +192 -0
- data/spec/integration/knife/config_use_spec.rb +198 -0
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +3 -1
- data/spec/integration/knife/download_spec.rb +3 -1
- data/spec/integration/knife/serve_spec.rb +5 -5
- data/spec/integration/knife/upload_spec.rb +3 -1
- data/spec/integration/ohai/ohai_spec.rb +61 -0
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/integration/recipes/remote_directory.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +5 -5
- data/spec/spec_helper.rb +12 -11
- data/spec/stress/win32/file_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/platform_helpers.rb +17 -35
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- 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 +20 -20
- data/spec/support/shared/functional/securable_resource.rb +108 -27
- data/spec/support/shared/functional/win32_service.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +3 -3
- data/spec/support/shared/integration/integration_helper.rb +22 -52
- data/spec/support/shared/unit/application_dot_d.rb +5 -3
- data/spec/support/shared/unit/script_resource.rb +6 -20
- data/spec/support/shared/unit/windows_script_resource.rb +15 -28
- data/spec/tiny_server.rb +0 -1
- data/spec/unit/application/client_spec.rb +2 -2
- data/spec/unit/application/exit_code_spec.rb +10 -0
- data/spec/unit/application_spec.rb +4 -6
- data/spec/unit/chef_fs/config_spec.rb +1 -1
- data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
- data/spec/unit/chef_fs/path_util_spec.rb +1 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
- data/spec/unit/cookbook_spec.rb +2 -2
- data/spec/unit/data_collector/config_validation_spec.rb +208 -0
- data/spec/unit/data_collector_spec.rb +28 -117
- data/spec/unit/dsl/declare_resource_spec.rb +1 -1
- data/spec/unit/environment_spec.rb +7 -7
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +20 -20
- 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/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/ui_spec.rb +1 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
- data/spec/unit/knife/ssh_spec.rb +2 -2
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/lwrp_spec.rb +3 -3
- data/spec/unit/mixin/deep_merge_spec.rb +15 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
- data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
- data/spec/unit/mixin/securable_spec.rb +2 -2
- data/spec/unit/mixin/template_spec.rb +30 -30
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
- data/spec/unit/node/immutable_collections_spec.rb +8 -4
- data/spec/unit/node_spec.rb +5 -5
- data/spec/unit/provider/mount/linux_spec.rb +97 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
- data/spec/unit/provider/package/powershell_spec.rb +1 -1
- data/spec/unit/provider/package/rubygems_spec.rb +4 -1
- data/spec/unit/provider/powershell_script_spec.rb +11 -4
- data/spec/unit/provider/remote_directory_spec.rb +9 -9
- data/spec/unit/provider/route_spec.rb +0 -2
- data/spec/unit/provider/service/arch_service_spec.rb +3 -2
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
- data/spec/unit/provider/service/macosx_spec.rb +3 -3
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider_resolver_spec.rb +6 -6
- data/spec/unit/recipe_spec.rb +1 -1
- data/spec/unit/resource/batch_spec.rb +6 -6
- data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
- data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
- data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
- data/spec/unit/resource/execute_spec.rb +113 -118
- data/spec/unit/resource/launchd_spec.rb +8 -0
- data/spec/unit/resource/osx_profile_spec.rb +299 -0
- data/spec/unit/resource/powershell_script_spec.rb +11 -29
- data/spec/unit/resource/rhsm_register_spec.rb +56 -18
- data/spec/unit/resource/script_spec.rb +6 -1
- data/spec/unit/resource/timezone_spec.rb +63 -0
- data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
- data/spec/unit/resource/windows_uac_spec.rb +1 -1
- data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
- data/spec/unit/role_spec.rb +11 -11
- data/spec/unit/run_lock_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +1 -2
- data/spec/unit/shell/shell_ext_spec.rb +46 -3
- data/spec/unit/shell/shell_session_spec.rb +35 -64
- data/spec/unit/shell_spec.rb +16 -19
- data/spec/unit/train_transport_spec.rb +14 -13
- data/spec/unit/util/selinux_spec.rb +2 -0
- data/tasks/rspec.rb +1 -3
- metadata +42 -33
- data/lib/chef/dist.rb +0 -68
- data/lib/chef/provider/osx_profile.rb +0 -255
- data/spec/integration/knife/config_get_profile_spec.rb +0 -113
- data/spec/integration/knife/config_get_spec.rb +0 -191
- data/spec/integration/knife/config_list_profiles_spec.rb +0 -218
- data/spec/integration/knife/config_use_profile_spec.rb +0 -154
- data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -26,6 +26,39 @@ class Chef
|
|
26
26
|
|
27
27
|
description "Use the **ohai_hint** resource to aid in configuration detection by passing hint data to Ohai."
|
28
28
|
introduced "14.0"
|
29
|
+
examples <<~DOC
|
30
|
+
**Create a hint file**
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
ohai_hint 'example' do
|
34
|
+
content a: 'test_content'
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
**Create a hint file with a name that does not match the resource name**
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
ohai_hint 'example' do
|
42
|
+
hint_name 'custom'
|
43
|
+
end
|
44
|
+
```
|
45
|
+
|
46
|
+
**Create a hint file that is not loaded at compile time**
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
ohai_hint 'example' do
|
50
|
+
compile_time false
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
**Delete a hint file**
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
ohai_hint 'example' do
|
58
|
+
action :delete
|
59
|
+
end
|
60
|
+
```
|
61
|
+
DOC
|
29
62
|
|
30
63
|
property :hint_name, String,
|
31
64
|
description: "An optional property to set the hint name if it differs from the resource block's name.",
|
@@ -23,17 +23,41 @@ class Chef
|
|
23
23
|
require_relative "../mixin/openssl_helper"
|
24
24
|
include Chef::Mixin::OpenSSLHelper
|
25
25
|
|
26
|
+
unified_mode true
|
27
|
+
|
26
28
|
provides(:openssl_dhparam) { true }
|
27
29
|
|
28
|
-
description "Use the **openssl_dhparam** resource to generate dhparam.pem files. If a valid dhparam.pem file is found at the specified location, no new file will be created. If a file is found at the specified location but it is not a valid dhparam file, it will be overwritten."
|
30
|
+
description "Use the **openssl_dhparam** resource to generate `dhparam.pem` files. If a valid `dhparam.pem` file is found at the specified location, no new file will be created. If a file is found at the specified location but it is not a valid `dhparam.pem` file, it will be overwritten."
|
29
31
|
introduced "14.0"
|
30
32
|
examples <<~DOC
|
31
|
-
Create a
|
33
|
+
**Create a dhparam file**
|
32
34
|
|
33
35
|
```ruby
|
34
|
-
openssl_dhparam '/etc/
|
35
|
-
|
36
|
-
|
36
|
+
openssl_dhparam '/etc/httpd/ssl/dhparam.pem'
|
37
|
+
```
|
38
|
+
|
39
|
+
**Create a dhparam file with a specific key length**
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
openssl_dhparam '/etc/httpd/ssl/dhparam.pem' do
|
43
|
+
key_length 4096
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
**Create a dhparam file with specific user/group ownership**
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
openssl_dhparam '/etc/httpd/ssl/dhparam.pem' do
|
51
|
+
owner 'www-data'
|
52
|
+
group 'www-data'
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
**Manually specify the dhparam file path**
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
openssl_dhparam 'httpd_dhparam' do
|
60
|
+
path '/etc/httpd/ssl/dhparam.pem'
|
37
61
|
end
|
38
62
|
```
|
39
63
|
DOC
|
@@ -24,6 +24,8 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
+
unified_mode true
|
28
|
+
|
27
29
|
provides :openssl_ec_private_key
|
28
30
|
|
29
31
|
description "Use the **openssl_ec_private_key** resource to generate an elliptic curve (EC) private key file. If a valid EC key file can be opened at the specified location, no new file will be created. If the EC key file cannot be opened, either because it does not exist or because the password to the EC key file does not match the password in the recipe, then it will be overwritten."
|
@@ -64,10 +66,13 @@ class Chef
|
|
64
66
|
description: "The desired passphrase for the key."
|
65
67
|
|
66
68
|
property :key_cipher, String,
|
67
|
-
equal_to: OpenSSL::Cipher.ciphers,
|
68
|
-
validation_message: "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options.",
|
69
69
|
description: "The designed cipher to use when generating your key. Run `openssl list-cipher-algorithms` to see available options.",
|
70
|
-
default: "des3"
|
70
|
+
default: lazy { "des3" },
|
71
|
+
default_description: "des3",
|
72
|
+
callbacks: {
|
73
|
+
"key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options." =>
|
74
|
+
proc { |v| OpenSSL::Cipher.ciphers.include?(v) },
|
75
|
+
}
|
71
76
|
|
72
77
|
property :owner, [String, Integer],
|
73
78
|
description: "The owner applied to all files created by the resource."
|
@@ -24,12 +24,14 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
+
unified_mode true
|
28
|
+
|
27
29
|
provides :openssl_ec_public_key
|
28
30
|
|
29
31
|
description "Use the **openssl_ec_public_key** resource to generate elliptic curve (EC) public key files from a given EC private key."
|
30
32
|
introduced "14.4"
|
31
33
|
examples <<~DOC
|
32
|
-
Generate new
|
34
|
+
**Generate new EC public key from a private key on disk**
|
33
35
|
|
34
36
|
```ruby
|
35
37
|
openssl_ec_public_key '/etc/ssl_files/eckey_prime256v1_des3.pub' do
|
@@ -39,7 +41,7 @@ class Chef
|
|
39
41
|
end
|
40
42
|
```
|
41
43
|
|
42
|
-
Generate new
|
44
|
+
**Generate new EC public key by passing in a private key**
|
43
45
|
|
44
46
|
```ruby
|
45
47
|
openssl_ec_public_key '/etc/ssl_files/eckey_prime256v1_des3_2.pub' do
|
@@ -23,6 +23,8 @@ class Chef
|
|
23
23
|
require_relative "../mixin/openssl_helper"
|
24
24
|
include Chef::Mixin::OpenSSLHelper
|
25
25
|
|
26
|
+
unified_mode true
|
27
|
+
|
26
28
|
provides(:openssl_rsa_private_key) { true }
|
27
29
|
provides(:openssl_rsa_key) { true } # legacy cookbook resource name
|
28
30
|
|
@@ -63,10 +65,13 @@ class Chef
|
|
63
65
|
description: "The desired passphrase for the key."
|
64
66
|
|
65
67
|
property :key_cipher, String,
|
66
|
-
equal_to: OpenSSL::Cipher.ciphers,
|
67
|
-
validation_message: "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options.",
|
68
68
|
description: "The designed cipher to use when generating your key. Run `openssl list-cipher-algorithms` to see available options.",
|
69
|
-
default: "des3"
|
69
|
+
default: lazy { "des3" },
|
70
|
+
default_description: "des3",
|
71
|
+
callbacks: {
|
72
|
+
"key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options." =>
|
73
|
+
proc { |v| OpenSSL::Cipher.ciphers.include?(v) },
|
74
|
+
}
|
70
75
|
|
71
76
|
property :owner, [String, Integer],
|
72
77
|
description: "The owner applied to all files created by the resource."
|
@@ -24,6 +24,8 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
+
unified_mode true
|
28
|
+
|
27
29
|
provides :openssl_x509_certificate
|
28
30
|
provides(:openssl_x509) { true } # legacy cookbook name.
|
29
31
|
|
@@ -84,32 +86,32 @@ class Chef
|
|
84
86
|
description: "The permission mode applied to all files created by the resource."
|
85
87
|
|
86
88
|
property :country, String,
|
87
|
-
description: "Value for the C certificate field."
|
89
|
+
description: "Value for the `C` certificate field."
|
88
90
|
|
89
91
|
property :state, String,
|
90
|
-
description: "Value for the ST certificate field."
|
92
|
+
description: "Value for the `ST` certificate field."
|
91
93
|
|
92
94
|
property :city, String,
|
93
|
-
description: "Value for the L certificate field."
|
95
|
+
description: "Value for the `L` certificate field."
|
94
96
|
|
95
97
|
property :org, String,
|
96
|
-
description: "Value for the O certificate field."
|
98
|
+
description: "Value for the `O` certificate field."
|
97
99
|
|
98
100
|
property :org_unit, String,
|
99
|
-
description: "Value for the OU certificate field."
|
101
|
+
description: "Value for the `OU` certificate field."
|
100
102
|
|
101
103
|
property :common_name, String,
|
102
|
-
description: "Value for the CN certificate field."
|
104
|
+
description: "Value for the `CN` certificate field."
|
103
105
|
|
104
106
|
property :email, String,
|
105
|
-
description: "Value for the email certificate field."
|
107
|
+
description: "Value for the `email` certificate field."
|
106
108
|
|
107
109
|
property :extensions, Hash,
|
108
|
-
description: "Hash of X509 Extensions entries, in format { 'keyUsage' => { 'values' => %w( keyEncipherment digitalSignature), 'critical' => true } }
|
110
|
+
description: "Hash of X509 Extensions entries, in format `{ 'keyUsage' => { 'values' => %w( keyEncipherment digitalSignature), 'critical' => true } }`.",
|
109
111
|
default: lazy { {} }
|
110
112
|
|
111
113
|
property :subject_alt_name, Array,
|
112
|
-
description: "Array of Subject Alternative Name entries, in format DNS:example.com or IP:1.2.3.4
|
114
|
+
description: "Array of Subject Alternative Name entries, in format `DNS:example.com` or `IP:1.2.3.4`.",
|
113
115
|
default: lazy { [] }
|
114
116
|
|
115
117
|
property :key_file, String,
|
@@ -120,7 +122,7 @@ class Chef
|
|
120
122
|
|
121
123
|
property :key_type, String,
|
122
124
|
equal_to: %w{rsa ec},
|
123
|
-
description: "The desired type of the generated key
|
125
|
+
description: "The desired type of the generated key.",
|
124
126
|
default: "rsa"
|
125
127
|
|
126
128
|
property :key_length, Integer,
|
@@ -129,18 +131,18 @@ class Chef
|
|
129
131
|
default: 2048
|
130
132
|
|
131
133
|
property :key_curve, String,
|
132
|
-
description: "The desired curve of the generated key (if key_type is equal to 'ec'). Run openssl ecparam -list_curves to see available options.",
|
134
|
+
description: "The desired curve of the generated key (if key_type is equal to 'ec'). Run `openssl ecparam -list_curves` to see available options.",
|
133
135
|
equal_to: %w{secp384r1 secp521r1 prime256v1},
|
134
136
|
default: "prime256v1"
|
135
137
|
|
136
138
|
property :csr_file, String,
|
137
|
-
description: "The path to a X509 Certificate Request (CSR) on the filesystem. If the csr_file property is specified, the resource will attempt to source a CSR from this location. If no CSR file is found, the resource will generate a Self-Signed Certificate and the certificate fields must be specified (common_name at last)."
|
139
|
+
description: "The path to a X509 Certificate Request (CSR) on the filesystem. If the `csr_file` property is specified, the resource will attempt to source a CSR from this location. If no CSR file is found, the resource will generate a Self-Signed Certificate and the certificate fields must be specified (common_name at last)."
|
138
140
|
|
139
141
|
property :ca_cert_file, String,
|
140
|
-
description: "The path to the CA X509 Certificate on the filesystem. If the ca_cert_file property is specified, the ca_key_file property must also be specified, the certificate will be signed with them."
|
142
|
+
description: "The path to the CA X509 Certificate on the filesystem. If the `ca_cert_file` property is specified, the `ca_key_file` property must also be specified, the certificate will be signed with them."
|
141
143
|
|
142
144
|
property :ca_key_file, String,
|
143
|
-
description: "The path to the CA private key on the filesystem. If the ca_key_file property is specified, the
|
145
|
+
description: "The path to the CA private key on the filesystem. If the `ca_key_file` property is specified, the `ca_cert_file` property must also be specified, the certificate will be signed with them."
|
144
146
|
|
145
147
|
property :ca_key_pass, String,
|
146
148
|
description: "The passphrase for CA private key's passphrase."
|
@@ -161,7 +163,7 @@ class Chef
|
|
161
163
|
content cert.to_pem
|
162
164
|
end
|
163
165
|
|
164
|
-
if !new_resource.renew_before_expiry.nil? &&
|
166
|
+
if !new_resource.renew_before_expiry.nil? && cert_need_renewal?(new_resource.path, new_resource.renew_before_expiry)
|
165
167
|
file new_resource.path do
|
166
168
|
action :create
|
167
169
|
owner new_resource.owner unless new_resource.owner.nil?
|
@@ -173,7 +175,7 @@ class Chef
|
|
173
175
|
end
|
174
176
|
|
175
177
|
if new_resource.csr_file.nil?
|
176
|
-
file
|
178
|
+
file key_file do
|
177
179
|
action :create_if_missing
|
178
180
|
owner new_resource.owner unless new_resource.owner.nil?
|
179
181
|
group new_resource.group unless new_resource.group.nil?
|
@@ -185,24 +187,25 @@ class Chef
|
|
185
187
|
end
|
186
188
|
|
187
189
|
action_class do
|
188
|
-
def
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
190
|
+
def key_file
|
191
|
+
@key_file ||=
|
192
|
+
if new_resource.key_file
|
193
|
+
new_resource.key_file
|
194
|
+
else
|
195
|
+
path, file = ::File.split(new_resource.path)
|
196
|
+
filename = ::File.basename(file, ::File.extname(file))
|
197
|
+
path + "/" + filename + ".key"
|
198
|
+
end
|
195
199
|
end
|
196
200
|
|
197
201
|
def key
|
198
|
-
@key ||= if priv_key_file_valid?(
|
199
|
-
OpenSSL::PKey.read ::File.read(
|
202
|
+
@key ||= if priv_key_file_valid?(key_file, new_resource.key_pass)
|
203
|
+
OpenSSL::PKey.read ::File.read(key_file), new_resource.key_pass
|
200
204
|
elsif new_resource.key_type == "rsa"
|
201
205
|
gen_rsa_priv_key(new_resource.key_length)
|
202
206
|
else
|
203
207
|
gen_ec_priv_key(new_resource.key_curve)
|
204
208
|
end
|
205
|
-
@key
|
206
209
|
end
|
207
210
|
|
208
211
|
def request
|
@@ -214,15 +217,15 @@ class Chef
|
|
214
217
|
end
|
215
218
|
|
216
219
|
def subject
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
220
|
+
OpenSSL::X509::Name.new.tap do |csr_subject|
|
221
|
+
csr_subject.add_entry("C", new_resource.country) unless new_resource.country.nil?
|
222
|
+
csr_subject.add_entry("ST", new_resource.state) unless new_resource.state.nil?
|
223
|
+
csr_subject.add_entry("L", new_resource.city) unless new_resource.city.nil?
|
224
|
+
csr_subject.add_entry("O", new_resource.org) unless new_resource.org.nil?
|
225
|
+
csr_subject.add_entry("OU", new_resource.org_unit) unless new_resource.org_unit.nil?
|
226
|
+
csr_subject.add_entry("CN", new_resource.common_name)
|
227
|
+
csr_subject.add_entry("emailAddress", new_resource.email) unless new_resource.email.nil?
|
228
|
+
end
|
226
229
|
end
|
227
230
|
|
228
231
|
def ca_private_key
|
@@ -24,20 +24,31 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
+
unified_mode true
|
28
|
+
|
27
29
|
provides :openssl_x509_crl
|
28
30
|
|
29
31
|
description "Use the **openssl_x509_crl** resource to generate PEM-formatted x509 certificate revocation list (CRL) files."
|
30
32
|
introduced "14.4"
|
31
33
|
examples <<~DOC
|
32
|
-
|
34
|
+
**Create a certificate revocation file**
|
33
35
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
```ruby
|
37
|
+
openssl_x509_crl '/etc/ssl_test/my_ca.crl' do
|
38
|
+
ca_cert_file '/etc/ssl_test/my_ca.crt'
|
39
|
+
ca_key_file '/etc/ssl_test/my_ca.key'
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
**Create a certificate revocation file for a particular serial**
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
openssl_x509_crl '/etc/ssl_test/my_ca.crl' do
|
47
|
+
ca_cert_file '/etc/ssl_test/my_ca.crt'
|
48
|
+
ca_key_file '/etc/ssl_test/my_ca.key'
|
49
|
+
serial_to_revoke C7BCB6602A2E4251EF4E2827A228CB52BC0CEA2F
|
50
|
+
end
|
51
|
+
```
|
41
52
|
DOC
|
42
53
|
|
43
54
|
property :path, String,
|
@@ -60,11 +71,11 @@ class Chef
|
|
60
71
|
default: 1
|
61
72
|
|
62
73
|
property :ca_cert_file, String,
|
63
|
-
description: "The path to the CA X509 Certificate on the filesystem. If the ca_cert_file property is specified, the ca_key_file property must also be specified, the CRL will be signed with them.",
|
74
|
+
description: "The path to the CA X509 Certificate on the filesystem. If the `ca_cert_file` property is specified, the `ca_key_file` property must also be specified, the CRL will be signed with them.",
|
64
75
|
required: true
|
65
76
|
|
66
77
|
property :ca_key_file, String,
|
67
|
-
description: "The path to the CA private key on the filesystem. If the ca_key_file property is specified, the ca_cert_file property must also be specified, the CRL will be signed with them.",
|
78
|
+
description: "The path to the CA private key on the filesystem. If the `ca_key_file` property is specified, the `ca_cert_file` property must also be specified, the CRL will be signed with them.",
|
68
79
|
required: true
|
69
80
|
|
70
81
|
property :ca_key_pass, String,
|
@@ -24,12 +24,14 @@ class Chef
|
|
24
24
|
require_relative "../mixin/openssl_helper"
|
25
25
|
include Chef::Mixin::OpenSSLHelper
|
26
26
|
|
27
|
+
unified_mode true
|
28
|
+
|
27
29
|
provides :openssl_x509_request
|
28
30
|
|
29
31
|
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
32
|
introduced "14.4"
|
31
33
|
examples <<~DOC
|
32
|
-
Generate new
|
34
|
+
**Generate new EC key and CSR file**
|
33
35
|
|
34
36
|
```ruby
|
35
37
|
openssl_x509_request '/etc/ssl_files/my_ec_request.csr' do
|
@@ -40,7 +42,7 @@ class Chef
|
|
40
42
|
end
|
41
43
|
```
|
42
44
|
|
43
|
-
Generate a new
|
45
|
+
**Generate a new CSR file from an existing EC key**
|
44
46
|
|
45
47
|
```ruby
|
46
48
|
openssl_x509_request '/etc/ssl_files/my_ec_request2.csr' do
|
@@ -52,7 +54,7 @@ class Chef
|
|
52
54
|
end
|
53
55
|
```
|
54
56
|
|
55
|
-
Generate new
|
57
|
+
**Generate new RSA key and CSR file**
|
56
58
|
|
57
59
|
```ruby
|
58
60
|
openssl_x509_request '/etc/ssl_files/my_rsa_request.csr' do
|
@@ -78,46 +80,44 @@ class Chef
|
|
78
80
|
description: "The permission mode applied to all files created by the resource."
|
79
81
|
|
80
82
|
property :country, String,
|
81
|
-
description: "Value for the C certificate field."
|
83
|
+
description: "Value for the `C` certificate field."
|
82
84
|
|
83
85
|
property :state, String,
|
84
|
-
description: "Value for the ST certificate field."
|
86
|
+
description: "Value for the `ST` certificate field."
|
85
87
|
|
86
88
|
property :city, String,
|
87
|
-
description: "Value for the L certificate field."
|
89
|
+
description: "Value for the `L` certificate field."
|
88
90
|
|
89
91
|
property :org, String,
|
90
|
-
description: "Value for the O certificate field."
|
92
|
+
description: "Value for the `O` certificate field."
|
91
93
|
|
92
94
|
property :org_unit, String,
|
93
|
-
description: "Value for the OU certificate field."
|
95
|
+
description: "Value for the `OU` certificate field."
|
94
96
|
|
95
97
|
property :common_name, String,
|
96
98
|
required: true,
|
97
|
-
description: "Value for the CN certificate field."
|
99
|
+
description: "Value for the `CN` certificate field."
|
98
100
|
|
99
101
|
property :email, String,
|
100
|
-
description: "Value for the email certificate field."
|
102
|
+
description: "Value for the `email` certificate field."
|
101
103
|
|
102
104
|
property :key_file, String,
|
103
|
-
description: "The path to a certificate key file on the filesystem. If the key_file property is specified, the resource will attempt to source a key from this location. If no key file is found, the resource will generate a new key file at this location. If the key_file property is not specified, the resource will generate a key file in the same directory as the generated certificate, with the same name as the generated certificate."
|
105
|
+
description: "The path to a certificate key file on the filesystem. If the `key_file` property is specified, the resource will attempt to source a key from this location. If no key file is found, the resource will generate a new key file at this location. If the `key_file` property is not specified, the resource will generate a key file in the same directory as the generated certificate, with the same name as the generated certificate."
|
104
106
|
|
105
107
|
property :key_pass, String,
|
106
108
|
description: "The passphrase for an existing key's passphrase."
|
107
109
|
|
108
110
|
property :key_type, String,
|
109
111
|
equal_to: %w{rsa ec}, default: "ec",
|
110
|
-
description: "The desired type of the generated key
|
112
|
+
description: "The desired type of the generated key."
|
111
113
|
|
112
114
|
property :key_length, Integer,
|
113
115
|
equal_to: [1024, 2048, 4096, 8192], default: 2048,
|
114
|
-
description: "The desired bit length of the generated key (if key_type is equal to
|
116
|
+
description: "The desired bit length of the generated key (if key_type is equal to `rsa`)."
|
115
117
|
|
116
118
|
property :key_curve, String,
|
117
119
|
equal_to: %w{secp384r1 secp521r1 prime256v1}, default: "prime256v1",
|
118
|
-
description: "The desired curve of the generated key (if key_type is equal to
|
119
|
-
|
120
|
-
default_action :create
|
120
|
+
description: "The desired curve of the generated key (if key_type is equal to `ec`). Run `openssl ecparam -list_curves` to see available options."
|
121
121
|
|
122
122
|
action :create do
|
123
123
|
description "Generate a certificate request."
|
@@ -132,7 +132,7 @@ class Chef
|
|
132
132
|
action :create
|
133
133
|
end
|
134
134
|
|
135
|
-
file
|
135
|
+
file key_file do
|
136
136
|
owner new_resource.owner unless new_resource.owner.nil?
|
137
137
|
group new_resource.group unless new_resource.group.nil?
|
138
138
|
mode new_resource.mode unless new_resource.mode.nil?
|
@@ -145,36 +145,37 @@ class Chef
|
|
145
145
|
end
|
146
146
|
|
147
147
|
action_class do
|
148
|
-
def
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
148
|
+
def key_file
|
149
|
+
@key_file ||=
|
150
|
+
if new_resource.key_file
|
151
|
+
new_resource.key_file
|
152
|
+
else
|
153
|
+
path, file = ::File.split(new_resource.path)
|
154
|
+
filename = ::File.basename(file, ::File.extname(file))
|
155
|
+
path + "/" + filename + ".key"
|
156
|
+
end
|
155
157
|
end
|
156
158
|
|
157
159
|
def key
|
158
|
-
@key ||= if priv_key_file_valid?(
|
159
|
-
OpenSSL::PKey.read ::File.read(
|
160
|
+
@key ||= if priv_key_file_valid?(key_file, new_resource.key_pass)
|
161
|
+
OpenSSL::PKey.read ::File.read(key_file), new_resource.key_pass
|
160
162
|
elsif new_resource.key_type == "rsa"
|
161
163
|
gen_rsa_priv_key(new_resource.key_length)
|
162
164
|
else
|
163
165
|
gen_ec_priv_key(new_resource.key_curve)
|
164
166
|
end
|
165
|
-
@key
|
166
167
|
end
|
167
168
|
|
168
169
|
def subject
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
170
|
+
OpenSSL::X509::Name.new.tap do |csr_subject|
|
171
|
+
csr_subject.add_entry("C", new_resource.country) unless new_resource.country.nil?
|
172
|
+
csr_subject.add_entry("ST", new_resource.state) unless new_resource.state.nil?
|
173
|
+
csr_subject.add_entry("L", new_resource.city) unless new_resource.city.nil?
|
174
|
+
csr_subject.add_entry("O", new_resource.org) unless new_resource.org.nil?
|
175
|
+
csr_subject.add_entry("OU", new_resource.org_unit) unless new_resource.org_unit.nil?
|
176
|
+
csr_subject.add_entry("CN", new_resource.common_name)
|
177
|
+
csr_subject.add_entry("emailAddress", new_resource.email) unless new_resource.email.nil?
|
178
|
+
end
|
178
179
|
end
|
179
180
|
|
180
181
|
def csr
|